回覆列表
  • 1 # 使用者1957423742705

    Bigtable 中最重要的內容有以下幾點:

    提出一種不同於關係型資料模型但更為靈活簡單的 KV 形式的資料儲存模型:稀疏的分散式可持久化多維表,其對映關係為:

    (row:string, column:string, time:int64) → string

    典型地,如論文中圖例所示:

    查詢內容時先確定 row,然後根據 row 查詢特定 column,最後可根據 column 和相應的 version 確定需要查詢的內容。

    其中:row 是按序排列,一定範圍的 row 可組成一個集合,稱為 tablet,它是分散式儲存和資源排程的最小單元;column 會被組合成 column family,column family 下的成員用 family:qualifer 來確定;表中的每個單元儲存該內容的不同版本(以不同時間戳作為區分)並按降序排列(最新版本位於最前面);單行可保持原子操作,跨行操作則無法保證原子性;

    Bigtable 會將資料持久化成 SSTable 的格式。該格式下的的 key 都是經過排序後不可變的 KV 對。每個 SSTable 由 block 組成並透過 block index 來定位每個 block。Bigtable 記憶體中維護著 memtable 用以處理寫請求。客戶端對 Bigtable 的寫操作首先會被記憶體中 memtable 處理,當 memtable 的大小超過一定閾值時,Bigtable 將會生成新的 memtable 並將老的 memtable 以 SSTable 的格式刷入磁碟;Bigtable 依賴於 Chubby 服務來進行分散式排程和元資料儲存。客戶端首先要從 Chubby 中獲取相應的 Root tablet,再從 Root tablet 中索引找到其他 tablet。新的 tablet 的增加和刪除必須透過 Chubby 服務來操作。Chubby 服務一旦掛了,Bigtable 也就掛了,因此 Chubby 是一個高可用服務,一般有 5 個節點組成,節點間用 Paxos 協議組織,開源的類似實現有 Zookeeper 和 etcd;

    綜上所述,SSTable 可認為是 Bigtable 中單機資料在磁碟的儲存格式,而 tablet 則是分散式排程和儲存的最小單元。

  • 中秋節和大豐收的關聯?
  • 請問怎麼樣保護古書,防蟲防黴防破損?