巨杉数据库基本操作说明

近期开始学习分布式数据库的一些内容,也对巨杉数据库进行了实际使用测试,将个人学习的已经总结写成博客分享给大家。

 

一:图形化操作(SAC界面):

 

浏览器中地址栏输入: IP:8000 例如:10.17.4.170:8000
用户名/密码为 : admin / admin

巨杉数据库基本操作说明_第1张图片

Note:
1. 图形化中可以进行集合空间、集合信息查看,集合数据量查看、集合中数据的查看等。
2. SAC监控和部署中采集到的内存使用情况采集包含Cache,有时候看起来会内存占用比较高。
3. 数据库安装后默认没有用户名密码,即无鉴权,创建用户名密码之后开启鉴权。开启鉴权之后需要在SAC中配置用户的用户名密码 ,点击 “部署” - “鉴权” 输入用户名密码即可,位置如下图所示:

 

 

二:命令行操作(SDB Shell)

1.切换到sdbadmin用户(sdbadmin用户密码为sdbadmin)

$ su - sdbadmin

2.进入SDB Shell

[sdbadmin@sdbserver] $ sdb

3.创建sdb连接 (SDB Shell中语法使用JavaScript的语法)

> var db = new Sdb() //该语句连接的是localhost 11810 节点

4.如果连接其他机器的sdb,或数据库有用户名密码,按照如下方式连接

var db = new Sdb("197.3.84.200",11810,"username","password");

以下操作均在sdb shell创建sdb连接(第3部)执行之后再执行。

  • 创建域

域(Domain)是由若干个复制组(ReplicaGroup)组成的逻辑单元。每个域都可以根据定义好的策略自动管理所属数据,如数据切片和数据隔离等。

语法: db.createDomain( , , [options] )

 db.createDomain("domainName",['group','group2','group3'])

创建域官网文档: http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190774-edition_id-0


  • 创建集合空间

 

集合空间(CollectionSpace,简称cs),合空间(CollectionSpace)是数据库中存放集合的物理对象。任何一个集合必须属于一个且仅一个集合空间。

语法:db.createCS( , [options] )

db.createCS("csName",{ PageSize: 4096, Domain: "mydomain" })

创建集合空间官网文档:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190773-edition_id-0

  • 创建集合

集合(Collection)是数据库中存放文档的逻辑对象。任何一条文档必须属于一个且仅一个集合。

语法:db.collectionspace.createCL(,[options])

db.csName.createCL("clName",{ ShardingKey:{ age: 1 }, ShardingType: "hash", Partition: 4096, ReplSize: 1 } )

创建集合参数较多,容易出现问题,请详细参考官网文档:
http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190821-edition_id-0


  • 查看所有集合空间 | 指定集合空间

在命令行查看集合空间,需要通过sdb的snapshot(快照),集合空间的快照标识: SDB_SNAP_COLLECTIONSPACES

语法:db.snapshot( 快照标识 )

db.snapshot(SDB_SNAP_COLLECTIONSPACES);

//SDB_SNAP_COLLECTIONSPACES 的快照编号为5 也可用以下命令查询,效果与上面命令相同

db.snapshot(5);

//支持JSON格式的条件查询,例如根据集合空间名字查询

db.snapshot(5,{"Name":"CollectionSpaceName"})

集合空间快照官网文档:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1479173716-edition_id-302


  • 查看所有集合 | 指定集合

在命令行查看集合空间,需要通过sdb的snapshot(快照),集合的快照标识: SDB_SNAP_COLLECTIONS

语法:db.snapshot(SDB_SNAP_COLLECTIONS)

db.snapshot(SDB_SNAP_COLLECTIONS);

SDB_SNAP_COLLECTIONS 的快照编号为4 也可用以下命令查询,效果与上面命令相同

db.snapshot(4);

支持JSON格式的条件查询,例如根据集合空间名字查询

db.snapshot(4,{"Name":"csName.clName"})

集合快照官网文档:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190628-edition_id-0


  • 查询集合下的数据量 (可根据条件进行筛选)

(查询的匹配符可参考巨杉文档:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1464770442-edition_id-0)

db.csName.clName.count();

//统计符合条件 name 字段的值为”Tom”且 age 字段的值大于25的记录数

db.foo.bar.count( { name: "Tom", age: { $gt: 25 } } )

查询操作官方文档:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190828-edition_id-0


  • 查询集合下的一条记录
db.csName.clName.findOne()
  • 查询集合下的记录 | 条件查询

(查询的匹配符可参考巨杉文档:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1464770442-edition_id-0)

//查询集合下的所有记录

> db.csName.clName.find()

//根据条件查询某一条记录

> db.csName.clName.find({{ age: { $gt: 25 }, name: "Tom" }})

查询操作官方文档:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190835-edition_id-0


  • 查看集合下所有的lob数据
    语法:db.collectionspace.collection.listLobs()
db.foo.bar.listLobs()

查看官方文档地址:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190841-edition_id-302


- 读取集合下的一条Lob数据

语法:db.collectionspace.collection.getLob(,,[forced])
//将标示符为 5435e7b69487faa663000897 的 lob 写入本地 /opt/newlob 文件

> db.foo.bar.getLob( '5435e7b69487faa663000897', '/opt/newlob' )

  • 删除集合空间
> db.dropCS("csName");

- 删除集合

> db.csName.dropCL("clName");

- 删除集合下的数据 (可根据条件删除)

(删除的匹配符可参考巨杉文档:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1464770442-edition_id-0)

> db.cs.cl.remove();

删除符合条件 age 字段值大于等于20的记录

> db.foo.bar.remove( { age: { $gte: 20 } } )

删除操作官方文档:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190843-edition_id-0


  • 创建索引

语法:db.collectionspace.collection.createIndex(,,[isUnique],[enforced],[sortBufferSize])

//集合 bar 下为字段名 age 创建名为 ageIndex 的唯一索引,记录按 age 字段值的升序排序。

> db.foo.bar.createIndex( "ageIndex", { age: 1 }, true )

//集合 bar 创建唯一索引,并且索引字段不允许为 null 或者不存在 。

>db.foo.bar.createIndex( "ab", { a: 1, b: 1 }, { Unique: true, NotNull: true } )

创建索引操作可选参数较多,建议参考官方文档索引创建一节:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190830-edition_id-0


- 删除索引

语法:db.collectionspace.collection.dropIndex()

//删除集合 bar 下名为 ageIndex 的索引,假设 ageIndex 已存在。

> db.foo.bar.dropIndex("ageIndex")

 

三:通过SequoiaSQL-PostgreSQL操作巨杉中的数据

SequoiaSQL-PostgreSQL是巨杉的sql实例,底层使用SequoiDB,通过PostgreSQL创建外表的方式操作巨杉引擎中的数据。目的是使用户通过sql的方式来进行数据操作。

Note:
*以下操作建立在数据库服务器安装SequoiaSQL-PostgreSQL实例并创建了实例(inst),并加载且配置了SequoiaD连接

创建实例可参考官方文档:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1519628019-edition_id-302

加载并配置连接可参考官方文档:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190715-edition_id-302*

1.切换到sdbadmin用户下

[root@sdbserver]$ su - sdbadmin

2.在PostgreSQL中创建数据库

// postgresql安装路径/bin/sdb_sql_ctl createdb 数据库名 实例名 (实例需要已经开启)
[sdbadmin@sdbserver]$ /opt/sequoiasql/postgresql/bin/sdb_sql_ctl createdb pgdb myinst

3.连接PostgreSQL

//psql -p 端口 数据库

[sdbadmin@sdbserver]$ psql -p 5432 pgdb

4.创建PostgreSQL中的外表关联SequoiaDB引擎

pgdb=# create foreign table test (name text, id numeric)

server sdb_server

options ( collectionspace 'foo', collection 'bar', decimal 'on' ) ;

具体参数可参照官方文档:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190715-edition_id-302

5.创建外表之后即可通过sql的方式操作外表访问数据

删除外表

pgdb=# drop foreign table foreignTableName;

Note:
1. 创建外表是指定字段类型请严格按照对照表对应,数据对应错误会导致在postgresql端查询外表,数据类型对应错误的字段查询不到数据。数据类型对应表可参照官方文档:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190715-edition_id-302

 

 

 

你可能感兴趣的:(巨杉数据库)