一:环境说明:
由于本人条件有限,没有在较好的机器上进行独立的测试,测试硬件环境为:AMD240,2G DDR2,500G硬盘,操作系统是XP,虚拟机VMWare WorkStation8.01安装Red Hat Linux 6.0 x64版本,虚拟机内存1G,虚拟硬盘80G。
二:安装说明
首先从http://www.sequoiadb.com/index.php?p=downselect&l=3下载Linux版本,下载文件是一个tar.gz文件,然后COPY到虚拟机中,使用命令解压:
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
运行命令后会有一个闪屏,然后进入正式安装过程。
首先进入的是语言选择画面,是英语,如下图:
按下拉箭头,目前支持中文和英文两种评议,如下图:
我选择中文安装(我的英文不是太好,如果你的英文好可以直接选择英文),录下图:
点击确定后,进入设置画面,如下图:
点击前进按钮,进入软件授权协议画面,如下图:
选择接受协议,前进按钮可用,如下图:
进入安装目录设置画面,选择默认目录,如下图:
进入数据库配置画面,要求输入用户名密码,默认用户名是sdbadmin,如下图:
如果两次输入密码不一致,会提示错误,如下图:
输入正确的密码后,点前进,进入端口设置画面(默认50010),如下图:
安装前的最后一次确认,在此可以返回修改,如果点击前进将进行了安装,如下图:
开始安装后将不能进行修改,只可以取消安装,如下图:
、
安装成功后点击完成退出安装。如下图:
至此,安装已经已经完成。另外,按照信息中心文档,可以使用文本模式安装,添加参数--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就可以出现管理界面了。如下图:
注意,我配置的端口是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,成功了,才出现上面的画面。
zlib1.2.5可以从http://www.onlinedown.net/soft/169854.htm下载,
zlib1.2.5的安装参照http://hi.baidu.com/weiweisuo1986/item/6bfc3ad2e3fb161fd78ed0db,这里不再赘述。
不过有一个问题,更新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/
输出:
Log file size can't be less than 64 MB
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/
输出:
Log file size can't be less than 64 MB
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
Log file size can't be less than 64 MB
这个时候已经是晚上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/
Error: Failed to start SequoiaDB engine
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.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
PID:2089 TID:2089
Function:_mkdir Line:419
File:SequoiaDB/engine/pmd/pmdOptionsMgr.cpp
Message:
Failed to create backup dir: /opt/sequoiadb/database/standalone/bakfile, rc = -10
2013-10-13-22.17.46.981246 Level:ERROR
PID:2089 TID:2089
Function:pmdMasterThreadMain Line:534
File:SequoiaDB/engine/pmd/pmdMain.cpp
Message:
Failed resolving arguments, exit
2013-10-13-22.17.46.981345 Level:EVENT
PID:2089 TID:2089
Function:pmdMasterThreadMain Line:704
File:SequoiaDB/engine/pmd/pmdMain.cpp
Message:
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
Message:
Start up from normal
2013-10-13-22.22.48.233833 Level:ERROR
PID:2122 TID:2122
Function:rtnLoadCollectionSpaces Line:491
File:SequoiaDB/engine/rtn/rtn.cpp
Message:
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
PID:2122 TID:2122
Function:pmdSysInit Line:230
File:SequoiaDB/engine/pmd/pmdMain.cpp
Message:
Failed to load collection spaces
2013-10-13-22.22.48.235467 Level:ERROR
PID:2122 TID:2122
Function:pmdMasterThreadMain Line:548
File:SequoiaDB/engine/pmd/pmdMain.cpp
Message:
Failed to initialize, rc: -10
2013-10-13-22.22.48.235889 Level:EVENT
PID:2122 TID:2122
Function:pmdMasterThreadMain Line:704
File:SequoiaDB/engine/pmd/pmdMain.cpp
Message:
Master thread exits
五:里程碑事件——安装成功
今天(10月13日)在Ubuntu13.04 Server(64位)下安装,配置。报了好几个错误。
从sdbdiag.log里看到的,一个是不能创建/opt/sequoiadb/database/standalone/bakfile,我就执行命令touch /opt/sequoiadb/database/standalone/bakfile创建了这个文件。
然后遇到了第二个错误,字符集问题(两个错误见上面红色底部分)
第二个错误查询关键子查到了如下地址:http://cruisever.blog.163.com/blog/static/786117572010817112310741/
执行
点击(此处)折叠或打开
- export LC_ALL="C"
sdbadmin@wangcc:~ href="mailto:sdbadmin@wangcc:~$2>sdbadmin@wangcc:~$ bin/sdbstart -c conf/local/50000/
Success: SequoiaDB engine is successfully started (2127)
root@wangcc:~# netstat -nap|grep 500
tcp 0 0 0.0.0.0:50010 0.0.0.0:* LISTEN
1904/sdbcm(50010)
root@wangcc:~# netstat -nap|grep 500
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
2127/sequoiadb(5000
tcp 0 0 0.0.0.0:50010 0.0.0.0:* LISTEN
1904/sdbcm(50010)
很高兴,终于可以用自己搭建的环境测试了啊。
六:初试自己的安装环境
Ubuntu11.10版本下的问题和13.04下的问题一样。解决后也启动成功。
同时启动WEB管理器,进行后界面如下:
选择逻辑组,输入逻辑组名后点创建:
发生-159错误,如下:
查询信息中心文档,-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"
}
{
"_id": {
"$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);
-
}
-
}
- }
由于博文实在有点太长了,分割了。后续参考
SequoiaDB安装测试报告(二) 地址是:http://blog.chinaunix.net/uid-78707-id-3957866.html