Sequoiadb精简学习笔记
-
硬件要求:磁盘10G,建议100G,内存1G,建议2G,至少一张网卡
-
操作系统要求:RedHat6,ubuntu12,CentOS6,SUSE11以上
-
修改主机的hostname
- SUSE修改文件$ vi /etc/HOSTNAME
- RedHat7以下,$ vi /etc/sysconfig/network
- RedHat7修改/etc/hostname,HOSTNAME = SERVERNAME
- ubuntu修改文件$ vi /etc/hostname
-
网络映射:$ vi /etc/hosts
-
通过ping来进行验证网络映射是否生效
-
关闭防火墙
-
SUSE的操作
- SuSEfirewall2 stop
- chkconfig SuSEfirewall2_init off
- chkconfig SuSEfirewall2_setup off
-
RedHat的操作
-
service iptables stop
-
chkconfig iptables off
-
Ubuntu的操作
- ufw disable
-
-
验证方法:
- SUSE:$ chkconfig -list | grep fire
- RedHat:$ service iptables status
- Ubuntu:$ ufw status
-
linux推荐配置:
- 配置/etc/security/limits.conf ----数据库的基本性能配置
- 配置 /etc/security/limits.d/90-nproc.conf ----线程的最大数目
- 配置/etc/sysctl.conf -------调整linux内核参数,配置好使用$ /sbin/sysctl -p使配置文件生效
-
关闭transparent_hugepage
- 编辑/etc/rc.local,在第一行 “#!/bin/sh” 的下一行添加如下两行内容
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
- 执行如下命令,使配置生效:
$ source /etc/rc.local
- 检查是否成功关闭transparent_hugepage。分别执行如下两条命令,输出结果中都有 “[never]” 则表示成功关闭了transparent_hugepage,如果是 “never” 并且有 “[always]” 或者 “[madvise]” 则关闭失败:
$ cat /sys/kernel/mm/transparent_hugepage/enabled
$ cat /sys/kernel/mm/transparent_hugepage/defrag
-
关闭NAMA
-
命令行安装过程
- hostname配置
- hostname和ip的地址映射
- 关闭防火墙
- 使用root用户安装
- 在每一台物理机上都手动安装一次
-
安装链接:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432191002-edition_id-0
-
节点的启停操作
-
sdb启动与停止
- 在root权限下:service sdbcm start|stop(会将所有节点启停)ps:restart只会启动cm节点
- 在sdb安装的bin目录上可以使用sdblist -h(help)查看返回当前节点
- sdbstop -p 端口 可以指定某端口停止
- sdbstart -p 端口 可以指定端口启动
- sdbstop 能停止除om和cm节点以外的所有节点
- sdbstop -t all 能停止cm节点以外的节点
- sdbstop -t db/om/all 默认是all
- sdbstop -r coord/data/coord/catalog/om
- sdbcmtop 停止集群管理节点
- sdbcmart 启动集群管理节点
-
集群启动:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190661-edition_id-0
-
集群停止:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190662-edition_id-0
-
-
命令行操作(curd)
-
在sdb的shell环境下curd操作都是需要先获取到集合空间和集合才能进行操作
事例:
var db = new Sdb(“localhost”,11810);//协调节点
db.createCS(“foo”);
db.foo.createCL(“bar”); -
插入操作
db.foo.bar.insert({ _id: 1,name:{fist:“Jhon”,last:“Black”}, phone:[1853742000,1802321000]})
如果不包含_id那么sdb会生成一个添加一个_id字段并且生成一个唯一的$oid值
链接:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190609-edition_id-0 -
更新操作
db.foo.bar.update({ KaTeX parse error: Expected 'EOF', got '}' at position 26: ….first":"Mike"}}̲,{_id:1})//set
db.foo.bar.update({ KaTeX parse error: Expected 'EOF', got '}' at position 16: unset:{ age:""}}̲)//unset,删除这个字段
db.foo.bar.update({$inc:{“arr.1”:5}})//数组的便利
链接:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190611-edition_id-0
update和upsert的区别就是如果修改的记录不存在update就不做修改,而upsert会进行 插入
-
删除操作
db.foo.bar.remove()//删除集合中的所有记录
db.foo.bar.remove({name:“Tom”})//删除集合中name是Tom的信息
db.foo.bar.remove({name:“Tom”},{"":“testIndex”})//通过索引遍历删除testIndex是索引名称 -
查询操作(find返回的是游标类型的对象)
db.foo.bar.find()//返回所有记录
db.foo.bar.find({age:23})//查询匹配的年龄(还可以使用条件符)
db.foo.bar.find({“family”:{$elemMatch:{“Dad”:“Kobe”,“phone”:139123456}}})//嵌套对象查询
db.foo.bar.find().sort({age:-1})//还可以对结果排序
db.foo.bar.find().hint( { “”: “testIndex” } )//走索引进行查找
db.foo.bar.find().limit(3)//限制行数
db.foo.bar.find().skip(n)//跳过n行,从n+1行开始返回
查询后的游标 db.foo.bar.find().current()//返回当前游标指向的记录 db.foo.bar.find().next()//返回当前游标指向的下一条记录 db.foo.bar.find().close()//关闭当前游标,当前游标不再可用 db.foo.bar.find().count()//返回当前游标的记录总数 db.foo.bar.find().size()//返回当前游标到最终游标的距离 db.foo.bar.find().toArray()//以数组形式返回结果集 链接:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190610-edition_id-0
-
-
水平切分以及数据域
-
生成数据域db.createDomain()
链接 http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190774-edition_id-0 -
为数据域添加分组domain.addGroups()
链接 http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1524019940-edition_id-0 -
创建数据组db.createRG()
链接 http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190776-edition_id-0 -
通过上面RG创建节点并启动RG.createNode().start()
创建链接 http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190867-edition_id-0
启动链接 http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190875-edition_id-0 -
链接
-
切分 http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1454575727-edition_id-0
-
split链接 http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190844-edition_id-0
-
主子表创建
- 创建主表
- 创建子表
- 建立联系main.attachCL(‘foo.bar1’,xxxx,xxxx)
- 链接:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1454575727-edition_id-0
-
二维切分
- 主子表按照范围range切分,集合层面切分
- 数据域管理分区组对主子表集合进行hash切分
-
Lob使用
-
LOB(大对象)
存储格式是二进制,通过分片存储。适合大多数的并发场景
操作
SdbCollection.putLob() //上传一个Lob记录(应该会返回一个唯一的id)
SdbCollection.getLob() //通过唯一id来获取Lob
SdbCollec
-