from:
我在資料庫大會有乙個報告:
從大學的資料結構課程可以知道,資料量比較大時,有兩種資料結構很常用:雜湊表和b+樹,分布式系統也是類似的。如下圖:
amazon的系統實現了乙個分布式雜湊表,而google bigtable, yahoo pnuts,microsoft sql azure實現了一顆分布式b+樹。分布式雜湊表實現相對簡單,但只支援隨機讀取;而分布式b+樹支援範圍查詢,但實現比較複雜,主要有兩個難點:
1, 狀態資料的持久化和遷移。更新操作改變系統的狀態,資料庫系統中更新操作首先以事務提交日誌(mysql稱為binlog, nosql稱為commit log)寫入到磁碟,為了保證可靠性,commit log需要複製多份並保證它們之間的一致性。另外,機器宕機時需要通過commit log記錄的狀態修改資訊將服務遷移到集群中的其它節點。
2, 子表的**和合併。b+樹實現的難點在於樹節點的**與合併,在分布式系統中,資料被順序劃分為大小在幾十到幾百mb大小的資料範圍,一般稱為子表,相當於b+樹結構中的葉子節點。由於每個子表在系統中儲存多份,需要保證多個副本之間的**點是一致的。由於子表在**的同時也有更新操作,保證多個副本之間一致是比較困難的。
對於這兩個問題,不同的系統有不同的解決方法:
1, 狀態維持。google bigtable將狀態資料寫入到gfs中,由gfs提供可靠性保證,但gfs本身是乙個巨大的工程;yahoo pnuts將狀態資料寫入到分布式訊息中介軟體,yahoo內部稱為yahoo message broker;microsoft sql azure直接通過網路將資料複製到多機,由於一台機器服務多個子表,這些子表的副本可能分布在整個集群中,因此,任何兩台機器都可能建立資料複製的網路通道,需要處理與這些通道有關的異常情況。
2, 子表**。由於底層有gfs保證可靠性,google bigtable設計時保證每乙個子表同時只被一台機器(tablet server)服務;yahoo pnuts通過引入複雜的兩節點提交(two-phase commit)協議協調多個副本之間的一致性,使得他們的**點相同;microsoft sql azure乾脆不支援子表**,犧牲一部分擴充套件性從而簡化系統設計。
Oceanbase 千億級海量資料庫
from 我在資料庫大會有乙個報告 從大學的資料結構課程可以知道,資料量比較大時,有兩種資料結構很常用 雜湊表和b 樹,分布式系統也是類似的。如下圖 amazon的系統實現了乙個分布式雜湊表,而google bigtable,yahoo pnuts,microsoft sql azure實現了一顆分...
千億數倉的sql
需求1 資料 統計2019年期間每個季度的銷售訂單筆數 訂單總額 select case when month createtime between 1 and 3 then 一季度 when month createtime between 4 and 6 then 二季度 when month ...
江西打造千億級移動物聯網產業
記者從江西省工信委獲悉,江西制定移動物聯網發展戰略,確定涉及工業 農業 物流 節能環保及健康養老等領域的18項重點工程 設立專項資金,力爭到2020年全省移動物聯網產業產值突破千億元。記者了解到,江西發展移動物聯網的整體思路是 平台為先 應用牽引 產業創新 梯次發展 要素保障 並制定七項戰略任務。在...