第一讲
- Hostname修改如何永久生效?(不同系统需要修改的文件不一样)
/etc/hostname
/etc/sysconfig/network
/etc/HOSTNAME
- SequoiaDB还需要配置哪些参数?(除了hostname, hosts, 关闭防火墙)
/etc/security/limits.conf
/etc/security/limits.d/90-nporc.conf
/etc/sysctl.conf
第二讲
- SequoiaDB可以运行在哪些操作系统?
- 安装SequoiaDB时,“相关开机自启动”是什么含义?
操作系统开机,自动将sdbcm启动
SequoiaDB相关进行异常退出后,能够自动重新启动
- SequoiaDB OM的默认端口是?
11790: 默认本地端口
8000: Web UI的OM端口
第三讲
- SequoiaDB支持的数据类型有哪些?
- string
- timestamp
- decimal
- null
- date
- int
- bson
- array
- bool
- regex
第四讲
- SequoiaDB的整体架构包含哪些角色节点?
- CatalogNode
- CoordNode
- DataNode
- CoordNode有什么用?
只有一个用处:作数据库操作的请求转发
- SequoiaDB集群中,是否存在单点故障?
是的,因为只有一台机器拥有OM,所以无法使用集群的选举机制进行重新选举新的OM
而CM有相应的守护进程sdbcmd,不会出现单点故障,其他节点(CSDD)也有相应的备用节点
第五讲
- SequoiaDB的数据域是什么含义?
管理分区组的逻辑概念
- SequoiaDB如何查看集群的部署情况?
db.list(7) == db.list(SDB_LIST_GROUPS)
db.listReplicaGroups()
- 数据域在哪一个层级生效?
集合,即CL
- 如果用户希望使用数据域,数据切分方式能够支持哪种分区方式?
目前数据域只支持水平散列分区,即Hash切分
第六讲
- 子表和普通集合有何区别?
没有区别 - 主表挂载子表时,需要注意字段的数据类型吗?
需要。否则容易造成查询数据时,记录不存在(因为数据类型不匹配);或者数据切分时,把数据切分到了意料之外的子表上
第七讲
- 启动SequoiaDB节点的命令是?
./sdbstart -t all
./sdbstart -p SERVICENAME
./sdbstart -c conf/local/SERVICENAME.conf
2. 停止SequoiaDB节点的命令是?
./sdbstop -t all
./sdbstop -t db == ./sdbstop
./sdbstop -p SERVICENAME
3. 查看SequoiaDB节点的命令是?
ps -ef | grep sdbadmin
./sdblist -m run
./sdblist -t all
4. 执行./sdbstart
会怎样?
启动CSDD(编目节点、协调节点、数据节点*2)
5. 执行./sdbstop
会怎样?
停止CSDD(编目节点、协调节点、数据节点*2)
6. 如何停止OM节点?
./sdbstop -p 11780
./sdbstop -t om
kill -15 $(ps -ef | grep sdbom | grep -v grep | awk -F '''{print $2}')
7. 如何启动OM节点?
./sdbstart -p 11780
./sdbstart -t om
8. 如何启动/停止一个数据组?
定义一个函数,获得数据组的句柄,并停止:db.getRG("group1").stop()
一台台机器逐个停止这个数据组的节点
第八讲
-
Shell中,如何查看foo.bar集合中的记录数?
db.snapshot(SDB_SNAP_COLLECTIONS) == db.snapshot(4)
db.foo.bar.count()
db.getCS("foo").getCL("bar").count()
-
如何在查询记录时,只查看id这个字段的内容?
选择查看指定的字段,在find()函数的第二个参数中设置
db.foo.bar.find({}, {id:1},{},{})
db.foo.bar.find({}, {id:null},{},{})
-
如何获得集合bar中,id=10的记录数?
db.foo.bar.count({id:10})
db.foo.bar.find({id:10}).count()
第九讲
- 如何查看当前集群中有哪些集合空间?
db.list(5)
db.snapshot(4)
db.listCollectionSpaces()
- 如何在Shell中向foo.bar写入id=1的记录?
db.foo.bar.insert({id:1})
db.execUpdate("insert into foo.bar (id)values(1)")
- db.foo.bar.remove()命令的用途?
删除集合中的记录。与truncate()不同,truncate()会直接清空集合中的所有数据(包括Lob和文档数据),但truncate()不会删除其元数据(索引、日志)。truncate()的删除效率比remove()高。
第十讲
- SequoiaDB中,创建支持分区集合和创建普通集合有何不同?
- 普通集合不支持数据切分
- 普通集合和切分集合都支持CRUD
- 分区集合支持数据切分
- Shell中,如何看一个集合是否支持数据切分?
db.snapshot(8)
其中,db.list()无法查看集合、集合空间的概况
- 如何查看一个集合切分到了哪些Group中?
db.snapshot(4) == db.snapshot(SDB_SNAP_COLLECTIONS)
db.snapshot(8) == db.snapshot(SDB_SNAP_CATALOG)
其中,db.list()无法查看集合、集合空间的概况
- 如何看出foo.bar集合在各个数据组中存储了多少条记录?
db.snapshot(4)