標籤:分布式 aerospike nosql 記憶體資料庫 share-nothing
Large Data Types(大資料類型)
大資料類型的bin可以儲存大量的對象集合。對象的類型可以是Integer/String/Map/List。Aerospike的單個記錄可以包含許多這樣的bin,這樣的bin允許在單獨的記錄中包含大量的資料,其限制基於儲存能力,記錄沒有最大值限制。
Aerospike LDT使用的儲存類型,我們叫做子記錄( sub-records)。子記錄與Aerospike常規記錄很相似,不同之處在於他們與父記錄串連。記錄與父記錄共用分區ID和內部記錄鎖,所以在遷移時與父記錄一起移動,與父記錄一起通過一樣的隔離機制保護。
LDT中的對象並不與其關聯的記錄連續儲存,而是分成子記錄(sub-records)(尺寸大約2kb到200kb,由寫入塊的大小來決定)。子記錄被一起串連和索引,通過使用者定義函數(UDFs)進行資料庫內部管理。使用子記錄意味著訪問LDT中的某一對象隻影響幾個子記錄而不是整個記錄。
Large Ordered List(大型有序列表)
大型有序清單類型(llist) 管理大規模排序的列表。有序列表中的對象可以是原始類型(例如,integer, string, blob)或者是複雜資料類型(比如,map, list)
圖 5a大型有序列表操作
物理上,大型由序列表由B+樹實現。樹的節點和葉就是子記錄(sub-records)。B+樹的根駐留在父記錄。
圖 5b大型有序列表物理層
B+樹結構沒有深度限制,因此大型有序列表中儲存的對象數目也沒有限制。
LLIST控制結構中包含所有關於大型有序列表的中繼資料資訊。例如,包括以下資訊:
- key的類型
- 儲存配置及限制
- 根,節點和葉的數量。
- 儲存狀態及閥值
- 根值和節點指標數組(B+樹根節點)
Useful Links
原文連結: <http://www.aerospike.com/docs/architecture/ldt.html>
譯 者:北京IT爺們兒
Aerospike-Architecture系列之大資料類型