SequoialDB实验
使用SequoialDB进行实验。
环境准备
有关SequoiaDB更详细的资料详见 http://www.sequoiadb.com/cn/index.php?a=index&m=Files
修改/etc/hosts,将主机的IP与机器名映射关系配置到该文件中,如:
1 | 172.16.158.207 lpoc4468-158-207.localdomain |
SequoiaDB配置
检查SequoiaDB的配置服务状态
在每台数据库服务器上检查SequoiaDB配置服务状态:
1
service sdbcm status
确认服务正在运行,否则执行如下命令启动配置服务:
1
service sdbcm start
运行SequoiaDB shell
1
2
3su - sdbadmin
PATH=/opt/sequoiadb/bin/:$PATH
sdb作用分别为:
切换到sdbadmin用户(后续配置均在sdbadmin用户下完成)
添加PATH环境变量
启动 SequoiaDB Shell 控制台
启动一个临时协调节点
1
2
3
4oma = new Oma("localhost", 11790)
oma.createCoord(18800, "/opt/sequoiadb/database/coord/18800")
oma.startNode(18800)
db = new Sdb("localhost", 18800)作用分别为:
连接到本地的集群管理服务进程sdbcm
创建临时协调节点
启动临时协调节点
连接到临时协调节点
配置和启动编目节点
1
db.createCataRG("lpoc4468-158-207.localdomain", 11800, "/opt/sequoiadb/database/cata/11800")
作用分别为:
- 创建一个编目节点组
配置和启动数据节点
1
2
3dataRG = db.createRG("datagroup")
dataRG.createNode("lpoc4468-158-207.localdomain", 11820, "/opt/sequoiadb/database/data/11820")
dataRG.start()作用分别为:
创建数据节点组
添加数据节点
启动数据节点组
配置和启动协调节点
1
2rg = db.createCoordRG()
rg.createNode("lpoc4468-158-207.localdomain", 11810, "/opt/sequoiadb/database/coord/11810")作用分别为:
创建协调节点组
创建协调节点
使用集合
1
2
3db = new Sdb("localhost", 11810)
db.createCS("foo")
db.foo.createCL("bar")作用分别为:
创建一个新的 sdb 连接
创建集合空间
创建集合
导入导出
http://www.sequoiadb.com/cn/index.php?a=index&m=Files&cat_id=1432190654&edition_id=0
导出
把
localhost:11810
中的foo
集合空间的bar
集合的name
和value
字段导出到test.csv
中。1
sdbexprt -s localhost -p 11810 --type csv --file test.csv --fields name, value -c foo -l bar
导入
把
test.csv
(第一行为字段名)name
和value
字段导入到localhost:11810
中的foo
集合空间的bar
集合中。1
sdbimprt -s localhost -p 11810 --type csv --file test.csv -c foo -l bar --fields='name string default "Anonymous", value int' --headerline=true
批量导入
1
2
3
4for i in {1..9}
do
sdbimprt -s localhost -p 11810 --type csv --file "$i.csv" -c foo -l bar --headerline=true
done注意导入的数据必须是utf-8
可以用
vim
来查看并且转换为utf-8:1
2vim test.csv
:set fileencoding=utf-8注意把文件中的CRLF转换为LF
1
sed -i 's/\r//g' "test.csv"
SequoiaDB操作
CRUD操作
1
2
3
4
5
6
7db.foo.bar.insert({"name":"sequoiadb"})
db.foo.bar.find()
db.foo.bar.find().current()
db.foo.bar.find().count()
db.foo.bar.find({age:23})
db.foo.bar.remove()
db.foo.bar.remove({"_id.$oid":"1234567890abcdef00000001"})作用分别为:
写入记录
返回所有结果
返回当前游标指向的记录
返回当前游标的记录总数
返回
age = 23
的记录删除集合中的所有记录
删除集合中
_id.$oid = 1234567890abcdef00000001
的记录
索引
1
{ "name" : "<索引名>", "key" : "{ "<索引字段1>" : <1|-1>, [ "<索引字段2>" : <1|-1> ...] }, [ "unique" : <true|false> ], [ "enforced" : <true|false> ]}
如:
1
{ "name" : "employee_id_key", "key" : {"employee_id" : 1 } }
聚集
1
db.foo.bar.aggregate({$group:{_id: "$name", value_avg: {$avg: "$value"}, Count: {$count: "$value"}, name: {$first: "$name"}}}, {$sort:{valuee_avg: 1}})
Python驱动
http://www.sequoiadb.com/cn/index.php?a=index&m=Files&cat_id=1432190749&edition_id=0
下载Python驱动
pysequoiadb.tar.gz
并解压,得到bson
文件夹、pysequoiadb
文件夹和setup.py
。把两个文件夹放入开发工程目录中,编写代码即可。