天天看點

SequoiaDB安裝測試報告

關于NoSQL的知識介紹,這裡不做過多的說明,想要了解的隻需要在BAIDU百科中輸入NoSQL,我想你會看到一大篇的說明了。本文章隻對SequoiaDB這個NoSQL資料庫的安裝和測試做記錄說明了。

一:環境說明:

由于本人條件有限,沒有在較好的機器上進行獨立的測試,測試硬體環境為:AMD240,2G DDR2,500G硬碟,作業系統是XP,虛拟機VMWare WorkStation8.01安裝Red Hat Linux 6.0 x64版本,虛拟機記憶體1G,虛拟硬碟80G。

二:安裝說明

tar -zxvf sequoiadb-1.3-linux_x86_64-installer.tar.gz

解壓後得到一個sequoiadb-1.3-linux_x86_64-installer.run檔案,預設是沒有執行權限的。使用下面指令給檔案添加執行權限:

chmod 755 sequoiadb-1.3-linux_x86_64-installer.run

SequoiaDB做得比較好的是安裝界面是圖形化的,并且支援中文,這是大多數NoSQL資料庫無法比拟的吧。

在指令和界面輸入指令./sequoiadb-1.3-linux_x86_64-installer.run

運作指令後會有一個閃屏,然後進入正式安裝過程。

首先進入的是語言選擇畫面,是英語,如下圖:

SequoiaDB安裝測試報告

按下拉箭頭,目前支援中文和英文兩種評議,如下圖:

SequoiaDB安裝測試報告

我選擇中文安裝(我的英文不是太好,如果你的英文好可以直接選擇英文),錄下圖:

SequoiaDB安裝測試報告

點選确定後,進入設定畫面,如下圖:

SequoiaDB安裝測試報告

點選前進按鈕,進入軟體授權協定畫面,如下圖:

SequoiaDB安裝測試報告

選擇接受協定,前進按鈕可用,如下圖:

SequoiaDB安裝測試報告

進入安裝目錄設定畫面,選擇預設目錄,如下圖:

SequoiaDB安裝測試報告

進入資料庫配置畫面,要求輸入使用者名密碼,預設使用者名是sdbadmin,如下圖:

SequoiaDB安裝測試報告

如果兩次輸入密碼不一緻,會提示錯誤,如下圖:

SequoiaDB安裝測試報告

輸入正确的密碼後,點前進,進入端口設定畫面(預設50010),如下圖:

SequoiaDB安裝測試報告

安裝前的最後一次确認,在此可以傳回修改,如果點選前進将進行了安裝,如下圖:

SequoiaDB安裝測試報告

開始安裝後将不能進行修改,隻可以取消安裝,如下圖:

SequoiaDB安裝測試報告

安裝成功後點選完成退出安裝。如下圖:

SequoiaDB安裝測試報告

至此,安裝已經已經完成。另外,按照資訊中心文檔,可以使用文本模式安裝,添加參數--mode text,我沒有嘗試。

三:配置初體驗

1、配置Web服務管理。

請注意,本節在資訊中心文檔中,參數本來應該是-開頭,結構都寫成了#,這個需要注意,整個資訊中心文檔,參數有的是#,有的是-,還希望下一版文檔可以統一,否則對初學者可能會有迷惑的地方。

/opt/sequoiadb/tools/server/php/bin/php -S -t

将替換為127.0.0.1:8080,将替換為/opt/sequoiadb/www/,啟動後打開浏覽器輸入http://127.0.0.1:8080就可以出現管理界面了。如下圖:

SequoiaDB安裝測試報告

注意,我配置的端口是8081,即上面的替換為127.0.0.1:8081了。因為現在沒有建立資料庫,是以無法登入。發生-79錯誤(這個提示太不友善了)。

由于我的版本是RHEL6.0版本,zlib版本是1.2.3,是以在啟動的時候報錯,

/opt/sequoiadb/tools/server/php/bin/php: /lib64/libz.so.1: no version information available (required by /opt/sequoiadb/tools/server/php/libxml2/lib/libxml2.so.2)

從網上查到,錯誤是由于zlib版本問題,我安裝了zlib1.2.8,照樣不可用,網上使用的是zlib1.2.5,我特意下載下傳了zlib1.2.5,成功了,才出現上面的畫面。

不過有一個問題,更新zlib可能造成系統無法登入,我就出現了這樣的情況,看來我隻能下載下傳官方的體驗版本了。

2、配置資料庫,由于我是在VMWare Workstation中配置,是以隻能使用獨立模式。

參考資訊中心40頁,步驟如下(詳細的文檔說明參照資訊中心)

點選(此處)折疊或打開

su sdbadmin

cd/opt/sequoiadb

mkdir -p /opt/sequoiadb/conf/local/50000

cp /opt/sequoiadb/conf/samples/sdb.conf.standalone /opt/sequoiadb/conf/local/50000/sdb.conf

vi /opt/sequoiadb/conf/local/50000/sdb.conf

--修改必要的配置參數,如dbpath等。

mkdir -p /opt/sequoiadb/database/standalone

/opt/sequoiadb/bin/sdbstart -c /opt/sequoiadb/conf/local/50000

但是我配置後,在最後一步啟動資料庫時報錯:

Error: Failed to start SequoiaDB engine

綜合配置1和2,看來我隻有下載下傳官方的體驗版本VMWare了。我的RHEL環境到登入界面無法出現使用者名選擇框,在指令行視窗(按alt-ctrl-F2)輸入使用者用密碼也無法登入。

今天無法體驗了。下載下傳後繼續。

四:SequoiaDB Demo VMware教程初體驗

花了七八個小時(我家帶寬比較低,2M鐵通)下載下傳了這個2.03G的Demo,結果閱讀完說明文檔有點蒙,建議虛拟機的記憶體都在4G以上,就算安裝Oracle11.2也沒有建議這麼高的記憶體啊,我的主機才2G記憶體,配置設定給虛拟機最多也就是1G,在VMWare下安裝RHEL6再安裝Oracle11.2也很順暢了。這樣的要求是不是有點太過了,這要求初學者得配置什麼樣的機器才可行啊。導入花了很長時間,啟動花了很長時間,最終輸入使用者名密碼等了很長時間還沒有進入桌面環境,看來我的古董機器想跑這個資料庫是不是有點不太現實了啊。

10月8日:今天将下載下傳的虛拟機拷貝到機關了,機關的機器主機記憶體有6G,虛拟機配置設定4G記憶體,運作起來很流暢,通過WEB管理界面添加了資料庫和集合,也通過指令行進行相應的操作。操作還不是很熟悉。這半個多月的時候多使用一下。

10月10日聯系了官方幫助,11日晚在幫助人員指導下,進行了如下步驟:(指令都是官方幫助人員指導的)

1)/opt/sequoiadb/bin/sdbstart -c /opt/sequoiadb/conf/local/50000

報錯和上面的錯誤一樣:Error: Failed to start SequoiaDB engine

2)ldd /opt/sequoiadb/bin/sequoiadb

輸出:

        linux-vdso.so.1 =>  (0x00007fff013a4000)

        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc824d8c000)

        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc824b6f000)

        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc824867000)

        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc8245e3000)

        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc8243cd000)

        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc824029000)

        /lib64/ld-linux-x86-64.so.2 (0x00007fc824fa1000)

3)/opt/sequoiadb/bin/sequoiadb

Failed to open config file: .//sdb.conf

Failed to create diaglog dir: /opt/sequoiadb/diaglog, rc = -10

4)自己檢視幫助,用-c制定配置檔案:/opt/sequoiadb/bin/sequoiadb -c /opt/sequoiadb/conf/local/50000/

Log file size can't be less than 64 MB

Failed to create diaglog dir: /opt/sequoiadb/database/standalone/diaglog, rc = -10

5)mkdir -p /opt/sequoiadb/database/standalone/diaglog

6)/opt/sequoiadb/bin/sequoiadb -c /opt/sequoiadb/conf/local/50000/

Failed to create log dir: /opt/sequoiadb/database/standalone/replicalog, rc = -10

7)mkdir -p /opt/sequoiadb/database/standalone/replicalog

8)/opt/sequoiadb/bin/sequoiadb -c /opt/sequoiadb/conf/local/50000/

9)netstat -nap |grep 500

(Not all processes could be identified, non-owned process info

 will not be shown, you would have to be root to see it all.)

tcp        0      0 0.0.0.0:50010           0.0.0.0:*               LISTEN      2180/sdbcm(50010)

幫助人員建議root使用者運作(上面是sdbadmin)

10)root@ubuntu:~# /opt/sequoiadb/bin/sequoiadb -c  /opt/sequoiadb/conf/local/50000

這個時候已經是晚上11點半左右。幫助人員建議先休息。

(中間還穿插着修改核心參數,如指令ulimit -f unlimited,設定/etc/security/limits.conf内容,參照資訊中心幫助的設定,然後設定sysctl.conf,重新開機機器什麼的)

10月13日:

幫助人員說報錯是因為配置檔案中的:

logfilesz=32

修改成:

logfilesz=64

修改後運作:

sdbadmin@ubuntu:~/database/standalone/diaglog$ /opt/sequoiadb/bin/sdbstart -c /o

pt/sequoiadb/conf/local/50000/

sdbadmin@ubuntu:~/database/standalone/diaglog$ /opt/sequoiadb/bin/sequoiadb -c  /opt/sequoiadb/conf/local/50000

sdbadmin@ubuntu:~/database/standalone/diaglog$

繞了一圈又回到了原點。

繼續等待幫助人員幫忙(官方的學習資料-虛拟機-是1.2.2版本的)

10月13日,安裝Ubuntu13.04 64Server版,依舊報上面的錯誤。不過看到了log。資訊如下

第一次錯誤:

2013-10-13-22.17.46.979106               Level:ERROR

PID:2089                                 TID:2089

Function:ossMkdir                        Line:474

File:SequoiaDB/engine/oss/ossIO.cpp

Message:

Failed to make dir: locale::facet::_S_create_c_locale name not valid

2013-10-13-22.17.46.979394               Level:ERROR

Function:_mkdir                          Line:419

File:SequoiaDB/engine/pmd/pmdOptionsMgr.cpp

Failed to create backup dir: /opt/sequoiadb/database/standalone/bakfile, rc = -10

2013-10-13-22.17.46.981246               Level:ERROR

Function:pmdMasterThreadMain             Line:534

File:SequoiaDB/engine/pmd/pmdMain.cpp

Failed resolving arguments, exit

2013-10-13-22.17.46.981345               Level:EVENT

Function:pmdMasterThreadMain             Line:704

Master thread exits

第二次錯誤:

cat ./database/standalone/diaglog/sdbdiag.log

2013-10-13-22.22.48.232234               Level:EVENT

PID:2122                                 TID:2122

Function:init                            Line:166

File:SequoiaDB/engine/pmd/pmdStartup.cpp

Start up from normal

2013-10-13-22.22.48.233833               Level:ERROR

Function:rtnLoadCollectionSpaces         Line:491

File:SequoiaDB/engine/rtn/rtn.cpp

Failed to iterate directory /opt/sequoiadb/database/standalone: locale::facet::_S_create_c_locale name not valid

2013-10-13-22.22.48.235260               Level:ERROR

Function:pmdSysInit                      Line:230

Failed to load collection spaces

2013-10-13-22.22.48.235467               Level:ERROR

Function:pmdMasterThreadMain             Line:548

Failed to initialize, rc: -10

2013-10-13-22.22.48.235889               Level:EVENT

五:裡程碑事件——安裝成功

今天(10月13日)在Ubuntu13.04 Server(64位)下安裝,配置。報了好幾個錯誤。

從sdbdiag.log裡看到的,一個是不能建立/opt/sequoiadb/database/standalone/bakfile,我就執行指令touch /opt/sequoiadb/database/standalone/bakfile建立了這個檔案。

然後遇到了第二個錯誤,字元集問題(兩個錯誤見上面紅色底部分)

執行

export LC_ALL="C"

指令後,在執行指令bin/sdbstart -c conf/local/50000/終于看到了啟動成功字樣

tcp        0      0 0.0.0.0:50000           0.0.0.0:*               LISTEN     

2127/sequoiadb(5000

tcp        0      0 0.0.0.0:50004           0.0.0.0:*               LISTEN     

tcp        0      0 0.0.0.0:50010           0.0.0.0:*               LISTEN     

1904/sdbcm(50010)

很高興,終于可以用自己搭建的環境測試了啊。

六:初試自己的安裝環境

Ubuntu11.10版本下的問題和13.04下的問題一樣。解決後也啟動成功。

同時啟動WEB管理器,進行後界面如下:

SequoiaDB安裝測試報告

選擇邏輯組,輸入邏輯組名後點建立:

SequoiaDB安裝測試報告

發生-159錯誤,如下:

SequoiaDB安裝測試報告

查詢資訊中心文檔,-159錯誤的問題是:該操作僅适用于協調節點。看來應該是配置檔案還有不正确的地方。

那就用指令操作吧。

運作/opt/sequoiadb/bin/sdb,

help() for help, Ctrl+c or quit to exit

> help()

   var db = new Sdb('localhost', 50000)   connect to database

   db.help()                              help on db methods

   db.cs.help()                           help on collection space cs

   db.cs.cl                               access collection cl on collection space cs

   db.cs.cl.help()                        help on collection cl

   db.cs.cl.find()                        list all records

   db.cs.cl.find({a:1})                   list records where a=1

   print(x), println(x)                   print out x

   traceFmt(,,)            format trace input(in) to output(out) by type

   getErr(ret)                            print error description for return code

   quit                                   exit

Takes 0.758s.

> var db=new Sdb('localhost',50000)

Takes 0.35692s.

> db.help()

DB methods:

   getCS()

   getRG(|)

   createCS(, [pageSize])

   createRG()

   removeRG()

   createCataRG(,,,[config])

   dropCS()

   list(, [cond], [sel], [sort])

   listCollectionSpaces()

   listCollections()

   listReplicaGroups()

   resetSnapshot([cond])

   snapshot(, [cond], [sel], [sort])

   startRG(...)

   createUsr(, )

   dropUsr(, )

   exec()

   execUpdate()

   traceOn(,[options])

   traceResume()

   traceOff([dump file])

   traceStatus()

   transBegin()

   transCommit()

   transRollback()

   flushConfigure()

   close()

Takes 0.402s.

> db.createCS("foo")

localhost:50000.foo

Takes 134.45616s.

> db.createRG("group1")

(nofile):0 uncaught exception: -159

Takes 0.2862s.

> db.foo.createCL("bar")

localhost:50000.foo.bar

Takes 4.383185s.

> db.foo.bar.insert({name:"wangcc",age:36,phone,"123456"})

(shell):1 SyntaxError: invalid object initializer

Takes 0.515s.

> db.foo.bar.insert({name:"wangcc"})

Takes 0.102905s.

> db.foo.bar.insert({name:"wangcc",age:36,phone:"123456"})

Takes 0.1459s.

> db.foo.bar.find()

{

  "_id": {

    "$oid": "52582e0247c0437e0b000000"

  },

  "name": "wangcc"

}

    "$oid": "52582e1547c0437e0b000001"

  "name": "wangcc",

  "age": 36,

  "phone": "123456"

Return 2 row(s).

Takes 0.64255s.

> 

直接建立集合空間和集合後,可以插入資料。在WEB管理界面中也可以看到集合空間了。

明天到機關看看學習虛拟機的啟動建立資料庫的腳本,再回來對比自己的環境。

2013年10月14日。

檢視了學習虛拟機的配置檔案,發現學習虛拟機配置的是叢集模式,是以可以建立邏輯域;而我建立的是獨立模式。是以無法建立邏輯組。(我自己的了解)

七:Java程式設計通路資料庫

下面是Java代碼,完成連接配接,查詢CollectionSpace和Collection功能:

package com.greencloud;

import com.sequoiadb.base.CollectionSpace;

import com.sequoiadb.base.DBCollection;

import com.sequoiadb.base.Sequoiadb;

import com.sequoiadb.exception.BaseException;

public class SequoiaDbDemo {

    static String CS_NAME="foo";

    static String CL_NAME="bar";

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        String connectStr = "192.168.8.128:50000";

        Sequoiadb sdb = null;

        try {

            sdb = new Sequoiadb(connectStr, "sdbadmin", "sdbadmin");

        } catch (BaseException be) {

            System.out.println(be.toString());

            be.printStackTrace();

            System.exit(1);

        }

        CollectionSpace cs = null;

        if (sdb.isCollectionSpaceExist(CS_NAME)) {

            cs = sdb.getCollectionSpace(CS_NAME);

        } else {

            cs = sdb.createCollectionSpace(CS_NAME);

        DBCollection cl = null;

        if (cs.isCollectionExist(CL_NAME)){

            cl = cs.getCollection(CL_NAME);

        }else{

            cl = cs.createCollection(CL_NAME);

    }

首先要從官方下載下傳驅動程式,其次要将驅動程式導入工程,我是在WindowsXP環境下連接配接虛拟機的資料庫,由于已經建立了資料集和資料集空間,所有我的程式走的是查詢,而不是建立。明天測試查詢記錄。上述代碼執行30行,37行。

由于博文實在有點太長了,分割了。後續參考