SequoiaDB 巨杉資料庫主備一致性

2021-10-22 20:50:42 字數 2074 閱讀 7831

在分布式系統中,一致性是指資料在多個副本之間資料保持一致的特性。sequoiadb 巨杉資料庫支援不同級別的主備一致性策略,以適配不同的應用場景。使用者可根據業務對資料安全性和服務可用性的要求,選擇不同的一致性策略。

當發生寫操作時,資料庫會確保所有複製組節點都同步完成才返回。寫操作處理成功後,後續讀到的資料一定是當前複製組內最新的。優勢是能夠有效得保證資料的完整性和安全性,劣勢則是會降低複製組的寫入效能,並且當集群內有乙個節點故障或者異常時,無法寫入資料,降低高可用性。

在核心交易型業務中,為了保證資料安全性,同時可以犧牲寫入效能時,推薦使用強一致性策略。

集合的 replsize 引數描述了在寫操作返回成功之前,寫操作執行成功了的節點個數。可以將 replsize 設為 0,或者設為複製組節點個數。以下以複製組 3 副本為例。

> var db = new sdb ( 'sdbserver1', 11810 )

> db.sample.createcl( 'employee1', )

>

> db.sample.createcl( 'employee2', )

為了防止某個節點節點突然故障,導致資料庫完全不可用,可以將 replsize 設為 -1,指的是寫所有的活躍節點。例如,複製組有 3 副本,某個備節點因為磁碟不足而異常停止,replsize 為 -1 時,寫操作會寫入另外 2 個非故障節點後才返回。

為了提公升資料庫的高可用性,以及實現資料的讀寫分離,sequoiadb 預設採用「最終一致性」策略。在讀寫分離時,讀取的資料在某一段時間內可能不是最新的,但副本間的資料最終是一致的。

在主節點執行寫操作成功後,寫操作即可返回。對資料查詢一致性要求不高的業務,如歷史資料查詢平台,夜間批量匯入資料以及白天提供查詢業務,推薦使用寫主節點的最終一致性策略。

建立集合預設是 replsize 為 1。

以三副本複製組為例,多數派》=(組內節點總數/2)+1,即 replsize 設為2

> var db = new sdb ( 'sdbserver1', 11810 )

> db.sample.createcl( 'employee', )

使用者可以通過 db.setattributes() 修改 replsize 屬性。

> var db = new sdb ( 'sdbserver1', 11810 )

> db.sample.createcl( 'employee', )

> db.sample.employee.setattributes( )

> db.snapshot( sdb_snap_catalog, )

, "name": "sample.employee",

"uniqueid": 261993005057,

"version": 1,

"replsize": -1,

"attribute": 0,

"attributedesc": "",

"catainfo": [

]}

sequoiadb 巨杉資料庫部署複製

SequoiaDB巨杉資料庫C API

此部分是 c api 相關文件。注意 version 2.10 新增收集資料統計資訊介面 新增修改介面 version 1.10 新增獲取查詢訪問計畫的介面 新增用於大物件 lob 操作的介面 version 1.8 新新增介面 version 1.6 使用 sdbnodehandle 來取代原來的...

SequoiaDB 巨杉資料庫 工具

stpstp 是 stp 提供邏輯時間的可執行程式。引數說明 引數名 縮寫 型別 說明 help h 返回 stp 的用法和幫助 version 返回 stp 的版本資訊 port p int32 1.stp 監聽埠 2.預設值為 9622 3.開啟 tcp 和 udp 協議的監聽 serverli...

SequoiaDB巨杉資料庫 分割槽

分割槽功能用於將一張表的儲存分散到多個物理位置,達到更好的併發讀寫效果。在資料量大時,速度提公升更為明顯。mysql 提供了四種分割槽的方式 range 分割槽 list 分割槽 hash 分割槽和 key 分割槽,同時還支援復合分割槽的方式。復合分割槽中,上層分割槽必須使用 range 或者 li...