上一篇文章為大家介紹了Cloudant NoSQL DB的數據存儲結構,今天將帶大家瞭解下數據庫分區,數據庫基本操作以及存儲文檔的基本屬性。
數據庫分區
回顧一下上一篇講到的文檔存儲結構,一個數據庫中的數據物理上被分成多個分片存儲,那麼分片數據存儲有什麼規律呢?
分片(Shard)是物理的,而分區(Partition)是邏輯的,但是分區對於分片影響很大。在沒有引入分區以前,文檔被隨機分配到某一個分片當中,而使用分區之後,相同分區的文檔就被存儲在同一個分片或相鄰的分片中。
在使用分區後,文檔存儲變得有規律,在數據操作時也會大大提高效率,節省成本。
文檔基本屬性
_id:對於無分區數據庫,_id是一串字母或數字組成的字符串,不能為空且必須唯一;對於分區數據庫,_id由Partition名稱和唯一ID組成,格式如下:{Partition Name}:{ID}.
可以把_id理解為關係數據庫中的主鍵,當需要把關係數據表向Cloudant數據庫遷移時,就可以把主鍵作為_id從而保證唯一性。
_rev:用於指示文檔當前版本,在進行文檔更新操作時,_rev不能為空。當文檔更新或創建成功後會得到新的_rev用於之後的操作。
數據庫基本操作
Cloudant NoSQL DB基本操作主要分為Write,Read,Global Query三類。Write無需解釋,就是指文檔的更新,創建等操作。Read和Global Query都是對數據庫進行讀操作,主要的區別在於讀操作是否使用了分區。
Read操作是指使用了分區的讀操作,通過前面的介紹,我們已經知道使用分區能夠提升性能,減少內部操作的消耗,因此官方建議使用分區。
Global Query是指在無分區的情況下對數據庫進行的讀操作,由於此時文檔被隨機分佈在分片中,因此在讀操作過程中需要所有分片的參與,相比於有分區操作性能要差一些。
Bulk操作
bulk可以實現批量文檔操作,比如文檔批量插入,批量更新等操作。通過使用bulk可以大大降低數據庫操作次數,從而節省服務成本。
有時候單個文檔的刪除無法滿足業務需求,為了減少數據庫操作可以通過bulk實現文檔批量刪除。這裡有個小竅門,就是使用_deleted屬性來標記文檔刪除,_deleted為Boolean類型,只要在bulk請求時設置文檔中_deleted字段為true就意味著對文檔的刪除。
結語
剛剛帶大家瞭解了Cloudant NoSQL DB的數據庫分區,數據庫操作以及文檔基本屬性,下一篇文章將介紹如何在Java程序中集成Cloudant NoSQL DB,歡迎持續關注。
IBM Cloud專題歷史文章
想要試用和了解更多關於Cloudant NoSQL DB內容的同學可以點擊下方【瞭解更多】開啟IBM Cloud免費體驗之旅。
閱讀更多 程序猿藍天 的文章