1. 程式人生 > >巨杉數據庫SequoiaDB Python開發基礎

巨杉數據庫SequoiaDB Python開發基礎

not 節點 repl 產品 local port 更新 更多 查詢條件

巨杉數據庫是一款金融級分布式關系型數據庫,2017、2018連續兩年入選Gartner數據庫報告。
巨杉堅持產品從零開始自主研發,為用戶提供安全可靠、性能卓越的海量數據存儲管理、高並發實時處理、分布式計算以及實時流處理等企業級數據處理解決方案。
目前在金融、政府、電信多個行業得到了廣泛應用,並在超過50家大中型銀行的核心生產系統應用。

本節介紹使用Python運行SequoiaDB。首先安裝SequoiaDB,安裝信息請查看安裝章節。

這裏介紹如何使用Python客戶端驅動接口編寫使用SequoiaDB數據庫的程序。為了簡單起見,下面的示例不全是完整的代碼,只起示例性作用。可到SequoiadDB安裝路徑下samples/Python下獲取相應的完整的代碼。更多查看Python API

Note:
在Python中構造BSON時默認使用dict,dict的字段是無序的。
如果要求BSON中的字段順序與輸入順序一致(例如,創建索引時索引鍵的定義),請使用collections.OrderedDict。

數據庫操作

  • 數據庫連接(Connecting)

    以下是connect.py演示如何連接到數據庫。

    1. import pysequoiadb
    2. from pysequoiadb import client
    3. # connect to local db, using default args value.
    4. host = ‘localhost‘
    5. port = 11810
    6. # user= ‘‘, password= ‘‘
    7. db = client(host, port)
    8. # if no error occurs, connect to specified server successfully
    9. print ‘Connect success‘
    10. db.disconnect()

    在Linux下,可以直接運行python解釋執行connect.py。

    Note:

    本例程連接到本地數據庫的服務端口11810,使用的是空的用戶名和密碼。用戶需要根據自己的實際情況配置參數。譬如,將上述代碼中的 db = client()

    修改為 db = client(‘192.168.10.188‘, 11810)。當數據庫已經創建用戶時,應該使用正確的用戶及密碼連接到數據庫,否則連接失敗。

  • 創建集合空間和集合

    以下創建了一個名字為“foo”的集合空間和一個名字為“bar”的集合,集合空間內的集合的數據頁大小為16k。可根據實際情況選擇不同大小的數據頁。創建集合後,可對集合做增刪改查等操作。

    1. # connect to db
    2. db = client("localhost", 11810)
    3. # create collection space
    4. cs_name = ‘foo‘
    5. cs = db.create_collection_space(cs_name)
    6. cl_name = ‘bar‘
    7. cl = cs.create_collection(cl_name)
  • 插入數據(insert)

    1. # creat dict object
    2. record = {"name":"Tom", "age":24}
    3. oid = cl.insert ( record ) ;

    record為輸入參數,為要插入的數據。dict對象將會被轉換成bson插入到集合中。oid 是插入該記錄時,返回的bson結構的objectid。

  • 查詢(query)

    1. import pysequoiadb
    2. from pysequoiadb import client
    3. from pysequoiadb.error import SDBEndOfCursor
    4. cr = cl.query()
    5. while True:
    6. try:
    7. record = cr.next()
    8. print(record)
    9. except SDBEndOfCursor:
    10. break
    11. finally:
    12. cr.close()

    查詢操作需要一個遊標對象存放查詢的結果到本地。要獲得查詢的結果需要使用遊標操作。本例使用了遊標操作的next接口,表示從查詢結果中取到一條記錄。此示例中沒有設置查詢條件,篩選條件,排序情況,及僅使用默認索引。

  • 索引(index)

    1. index_name = "index_name"
    2. idx = OrderedDict([(‘name‘, 1), (‘age‘, -1)])
    3. cl.create_index ( idx, index_name, False, False ) ;

    集合對象collection中創建一個以“name”為升序,“age”為降序的索引。

  • 更新(update)

    1. rule = {"$set":{ "age":19}}
    2. print rule
    3. cl.update( rule )

    在集合對象 ollection中更新了記錄。實例中沒有指定數據匹配規則,所以此示例將更新集合中所有的集合。

集群操作

分區組操作包括創建分區組(client::creat_replica_group),得到分區組實例(client:: get_replica_group_by_name 和 client:: get_replica_group_by_id),啟動分區組所有節點(replicagroup::start),停止分區組所有節點(replicagroup::stop)等。

  • 分區組操作

    以下僅作為示例,真正的應用應包括錯誤檢測等。

    1. rg = db.create_replica_group ("group1")
    2. config = {}
    3. rg.create_node (‘ubuntu-test-03‘, ‘20000‘, "/opt/sequoiadb/database/20000", config)
    4. rg.start ()

    創建名為group1的數據組。創建節點時,定義一個空的map對象config表示該節點沒有更多的配置內容。

  • 節點操作

    節點操作包括創建節點(replicagroup::create_node),獲取主節點(replicagroup::get_master),獲取備節點(replicagroup::get_slave),啟動節點(replicanode::start),停止節點(replicanode::stop)等。

    以下為數據節點操作示例性的例子。真正的應用應包括錯誤檢測等。

    1. # 獲取數據組group
    2. rg = db.get_replica_group_by_name("group1")
    3. # 獲取數據主節點
    4. master = rg.get_master() ;
    5. # 獲取數據備節點
    6. slave = rg.get_slave() ;

巨杉數據庫SequoiaDB Python開發基礎