分布式表格系統:?Tera
Tera 是一個高性能、可伸縮的數據庫系統,被設計用來管理搜索引擎萬億量級的超鏈與網頁信息。為實現數據的實時分析與高效訪問,我們使用按行鍵、列名和時間戳全 局排序的三維數據模型組織數據,使用多級Cache系統,充分利用新一代服務器硬件大內存、SSD盤和萬兆網卡的性能優勢,做到模型靈活的同時,實現了高 吞吐與水平擴展。
特性
-
全局有序
-
熱點自動分片
-
數據強一致
-
多版本,自動垃圾收集
-
按列存儲,支持內存表
-
動態schema
-
支持表格快照
-
高效隨機讀寫
數據模型
Tera使用了bigtable的數據模型,可以將一張表格理解為這樣一種數據結構:
map<RowKey, map<ColummnFamily:Qualifier, map<Timestamp, Value> > >
其中RowKey、ColumnFamily、Qualifier和Value是字符串,Timestamp是一個64位整形。ColumnFamliy需要建表時指定,是訪問控制、版本保留等策略的基本單位。
系統架構
系 統主要由Tabletserver、Master和ClientSDK三部分構成。其中Tabletserver是核心服務器,承載著所有的數據管理與訪 問;Master是系統的仲裁者,負責表格的創建、schema更新與負載均衡;ClientSDK包含供管理員使用的命令行工具teracli和給用戶 使用的SDK。 表格被按RowKey全局排序,并橫向切分成多個Tablet,每個Tablet負責服務RowKey的一個區間,表格又被縱向且分為多個 LocalityGroup,一個Tablet的多個Localitygroup在物理上單獨存儲,可以選擇不同的存儲介質,以優化訪問效率。
系統依賴
-
使用分布式文件系統(HDFS、NFS等)持久化數據與元信息
-
使用zookeeper選主與協調
-
使用Sofa-pbrpc實現跨進程通信
系統構建
參考BUILD
使用示例
參考wiki