使用SequoialDB进行实验。
1. 环境准备
有关SequoiaDB更详细的资料详见 http://www.sequoiadb.com/cn/index.php?a=index&m=Files
修改/etc/hosts,将主机的IP与机器名映射关系配置到该文件中,如:
172.16.158.207 lpoc4468-158-207.localdomain
2. SequoiaDB配置
检查SequoiaDB的配置服务状态
在每台数据库服务器上检查SequoiaDB配置服务状态:service sdbcm status
确认服务正在运行,否则执行如下命令启动配置服务:
service sdbcm start
运行SequoiaDB shell
su - sdbadmin PATH=/opt/sequoiadb/bin/:$PATH sdb
作用分别为:
- 切换到sdbadmin用户(后续配置均在sdbadmin用户下完成)
- 添加PATH环境变量
- 启动 SequoiaDB Shell 控制台
启动一个临时协调节点
oma = new Oma("localhost", 11790) oma.createCoord(18800, "/opt/sequoiadb/database/coord/18800") oma.startNode(18800) db = new Sdb("localhost", 18800)
作用分别为:
- 连接到本地的集群管理服务进程sdbcm
- 创建临时协调节点
- 启动临时协调节点
- 连接到临时协调节点
配置和启动编目节点
db.createCataRG("lpoc4468-158-207.localdomain", 11800, "/opt/sequoiadb/database/cata/11800")
作用分别为:
- 创建一个编目节点组
配置和启动数据节点
dataRG = db.createRG("datagroup") dataRG.createNode("lpoc4468-158-207.localdomain", 11820, "/opt/sequoiadb/database/data/11820") dataRG.start()
作用分别为:
- 创建数据节点组
- 添加数据节点
- 启动数据节点组
配置和启动协调节点
rg = db.createCoordRG() rg.createNode("lpoc4468-158-207.localdomain", 11810, "/opt/sequoiadb/database/coord/11810")
作用分别为:
- 创建协调节点组
- 创建协调节点
使用集合
db = 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
中。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
集合中。sdbimprt -s localhost -p 11810 --type csv --file test.csv -c foo -l bar --fields='name string default "Anonymous", value int' --headerline=true
批量导入
for 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:vim test.csv :set fileencoding=utf-8
注意把文件中的CRLF转换为LF
sed -i 's/\r//g' "test.csv"
3. SequoiaDB操作
CRUD操作
db.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
的记录
索引
{ "name" : "<索引名>", "key" : "{ "<索引字段1>" : <1|-1>, [ "<索引字段2>" : <1|-1> ...] }, [ "unique" : <true|false> ], [ "enforced" : <true|false> ]}
如:
{ "name" : "employee_id_key", "key" : {"employee_id" : 1 } }
聚集
db.foo.bar.aggregate({$group:{_id: "$name", value_avg: {$avg: "$value"}, Count: {$count: "$value"}, name: {$first: "$name"}}}, {$sort:{valuee_avg: 1}})
4. 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
。把两个文件夹放入开发工程目录中,编写代码即可。