天天看点

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行。

由于博文实在有点太长了,分割了。后续参考