1. 程式人生 > 資料庫 >SequoiaDB巨杉資料庫-createCL()概述1

SequoiaDB巨杉資料庫-createCL()概述1

名稱

createCL - 建立一個新的集合。

語法

db.collectionspace.createCL(<name>,[options])

類別

Collection Space

描述

在指定集合空間下建立集合(Collection),集合是資料庫中存放文件記錄的邏輯物件,任何一條文件記錄必須屬於一個且僅屬於一個集合。

引數

  • name ( String, 必填 )

    集合名,在同一個集合空間中,集合名必須唯一。

  • options ( Object, 選填 )

    在建立集合時,可以通過options引數設定集合的其他屬性,如指定集合的分割槽鍵,是否以壓縮的形式插入資料等。可組合使用 options

     的如下選項:

    1. ShardingKey ( Object ):分割槽鍵。

      格式:ShardingKey:{<欄位1> : <1|-1>,[<欄位2> : <1|-1>, ...]}

    2. ShardingType ( String ):分割槽方式。預設為 hash 分割槽。其可選取值如下:

      • "hash":hash 分割槽。
      • "range":範圍分割槽。

      格式:ShardingType:"hash"|"range"

    3. Partition ( Int32 ):分割槽數。僅當選擇 hash 分割槽時填寫,代表了 hash 分割槽的個數。其值必須是2的冪。範圍在[2^3,2^20]。預設為4096。

      格式:Partition: <分割槽數>

    4. ReplSize ( Int32 ):寫操作需同步的副本數。預設值為1。其可選取值如下:

      • -1:表示寫請求需同步到該複製組若干活躍的節點之後,資料庫寫操作才返回應答給客戶端。
      • 0:表示寫請求需同步到該複製組的所有節點之後,資料庫寫操作才返回應答給客戶端。
      • 1 - 7:表示寫請求需同步到該複製組指定數量個節點之後,資料庫寫操作才返回應答給客戶端。

      格式:ReplSize: <num>

    5. Compressed ( Bool ):標示新集合是否開啟資料壓縮功能。預設為 true。

      格式:Compressed:true|false

    6. CompressionType

       ( String ):壓縮演算法型別。預設為 lzw 演算法。其可選取值如下:

      • "snappy":使用 snappy 演算法壓縮。
      • "lzw":使用 lzw 演算法壓縮。

      格式:CompressionType:"snappy"|"lzw"

    7. IsMainCL ( Bool ):標示新集合是否為主分割槽集合,預設為 false。

      格式:IsMainCL:true|false

    8. AutoSplit ( Bool ):標示新集合是否開啟自動切分功能,預設為 false。

      格式:AutoSplit:true|false

    9. Group ( String ):指定新集合將被建立到哪個複製組。

      格式:Group:<group name>

    10. AutoIndexId ( Bool ):標示新集合是否自動使用_id欄位建立名字為"$id"的唯一索引,預設為 true。

      格式:AutoIndexId:true|false

    11. EnsureShardingIndex ( Bool ):標示集合是否自動使用ShardingKey包含的欄位建立名字為"$shard"的索引,預設為true。

      格式:EnsureShardingIndex:true|false

    12. StrictDataMode ( Bool ):標示對該集合的操作是否開啟嚴格資料型別模式,預設為false(不開啟)。嚴格資料模式的開啟標示對數值操作存在以下限制:

      • 運算過程不改資料型別;
      • 數值運算出現溢位時直接報錯,錯誤碼SDB_VALUE_OVERFLOW;

      格式:StrictDataMode:true|false

    13. AutoIncrement ( Object ):自增欄位

      格式:AutoIncrement:{Field: <欄位>, ...} 或 AutoIncrement:[ {Field: <欄位1>, ...}, {Field: <欄位2>, ...}, ... ]

      例子:AutoIncrement: { Field: "userID", Generated: "always" }

      • 引數詳情可參考
    14. LobShardingKeyFormat ( String ):指定大物件生成主表切分鍵鍵值的格式。目前支援將大物件ID中的時間屬性轉換成如下字串形式:

      • "YYYYMMDD":將大物件ID的時間屬性轉換為年月日的字串形式,如"20190701"。
      • "YYYYMM":將大物件ID的時間屬性轉換為年月的字串形式,如"201907"。
      • "YYYY":將大物件ID的時間屬性轉換為年的字串形式,如"2019"。

      格式:LobShardingKeyFormat:"YYYYMMDD"|"YYYYMM"|"YYYY"

Note:

  • 集合名限制請參考

  • 當引數 options 內設定了多個引數時,需用英文半形的逗號","將各引數的取值隔開。

  • 在時,可以指定所屬的。建立集合時,使用 Group 引數,指定的複製組必須在域內;不使用 Group 引數,集合將被建立在域的任意一個複製組上。

  • 建立集合的 AutoSplit 引數比資料域的 AutoSplit 屬性優先順序更高。

  • AutoSplit 不能與 Group 引數同時使用。

  • AutoSplit 必須配合雜湊分割槽使用。

  • 壓縮演算法選擇策略:snappy 壓縮演算法是以單條記錄為單位進行壓縮,記錄內部的資料重複度直接影響到壓縮率。因此,當記錄內部資料重複度較高,如每條記錄的欄位名、欄位值相似,使用 snappy 演算法可獲得良好的壓縮效能。如果記錄內部資料重複度很低,但記錄間具有更高的相似性,如不同記錄之間有相同的欄位名,相近的欄位值等,則使用 lzw 演算法更優。

  • LobShardingKeyFormat 只能在主表中使用,同時要求切分鍵只能有一個切分欄位。

瞭解更多內容請點選