概觀
文件是 JSON 物件。 文件也是您資料的容器、 是 IBM® Cloudant® for IBM Cloud® 資料庫的基礎。
如果您使用 IBM Cloudant 服務於 IBM Cloud®,文件的最大大小限制為 1 MB。 超過此限制將導致 錯誤 413。
IBM Cloudant 採用 最終一致性 模型來處理資料。 若採用最終一致性模型,在某些條件下,可能檢索到較舊的文件內容。 例如,當您的應用程式寫入或更新某個文件後,隨即讀取同一個文件時,系統便會檢索較舊的內容。
換言之, 您的應用程式將看到文件內容在寫入或更新發生前的狀態。 有關此模型的更多資訊, 請參閱「 一致性」主題。
文件欄位
所有文件必須包含兩個欄位:
- 一個獨特的
_id領域。 該_id領域將在下一節中詳細說明。 - 一片
_rev田野。 該_rev欄位為修訂識別符 ,對複 IBM Cloudant 製協議至關重要。
除了這兩個必填欄位外,文件通常可包含任何能透過 JSON 描述的內容,但須遵循下列各節所述的若干注意事項
文件識別碼
文件識別碼的格式會因資料庫是否進行分區處理而有所不同 當資料庫進行分區時,每個文件的分區鍵將作為文件識別碼的一部分進行定義,詳情將於下一節說明
分區資料庫中的識別碼
當您使用分區資料庫時,文件 ID 同時指定分區鍵和文件鍵。 這些鍵值是透過將文件識別碼 分割為兩部分來指定的,兩部分之間以冒號分隔:
$PARTITION_KEY:$DOCUMENT_KEY
文件之間的內容 $PARTITION_KEY 可能相同。 該 $DOCUMENT_KEY 在每個分區內必須是唯一的。 換言之,整體而言,整個文件 ID 須在資料庫內保持唯一性。 文件鍵可能包含更多 冒號字元。
非分區資料庫中的識別碼
對於非分割資料庫,_id 該欄位要麼由您創建,要麼由IBM Cloudant自動產生為 UUID。
如果您選擇指定文件 _id 欄位,則必須限制為不超過 7168 個字元 ( 7k )。
如同分區資料庫,文件識別碼必須在單一資料庫內保持唯一性。
欄位名稱限制
以下劃線字元 (_) 開頭的欄位名稱在 中為 IBM Cloudant 保留字元。 此規則表示您通常不能使用以下劃線開頭的自訂欄位名稱。 例如, 欄位 example 將被接受, 但欄位 _example 會導致 錯誤 doc_validation 訊息。
以下是一個嘗試建立帶有底線前綴欄位的 JSON 文件範例:
{
"_top_level_field_name": "some data"
}
嘗試建立以下字段時,會看到系統返回的錯誤訊息:
{
"error": "doc_validation",
"reason": "Bad special document member: _top_level_field_name"
}
然而, 若欄位名稱所指的物件是嵌套於文件內的, 則可使用底線作為欄位名稱的前綴。
以下是一個嘗試在物件內部建立帶有底線前綴欄位的 JSON 文件範例:
{
"another_top_level_field_name": "some data",
"another_field": {
"_lower_level_field_name": "some more data"
}
}
參見建立帶有底線前綴的嵌套欄位時返回的成功訊息範例(節錄):
{
"ok": true,
"id": "2",
"rev": "1-9ce...8d4"
}
Quorum - 寫入與讀取資料
在分散式系統中, 請求可能需要一段時間才能完成。 採用「法定人數」機制來協助判定請求(例如寫入或讀取操作)何時成功完成
如需進一步了解法定人數設定及其對專用 IBM Cloudant 系統的影響, 請聯絡 IBM Cloudant 技術支援部門。
存活時間
存活時間 (TTL)是資料的一項屬性, 當經過一段相對時間後, 或在絕對時間點到達時, 該資料即被視為已過期。 資料本身可能會被刪除或移轉至替代(歸檔)位置。
IBM Cloudant 不支援存活時間 功能於資料庫內。 客戶可透過以下方式實現此功能: 使用 [Views] 根據文件的到期時間戳建立索引, 並定期查詢該檢視結果以找出需刪除的文件。