巨杉數據庫基本操作說明

近期開始學習分佈式數據庫的一些內容,也對巨杉數據庫進行了實際使用測試,將個人學習的已經總結寫成博客分享給大家。

 

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

 

瀏覽器中地址欄輸入: IP:8000 例如:10.17.4.170:8000
用戶名/密碼爲 : admin / admin

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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章