1. 程式人生 > >分布式數據庫DDB

分布式數據庫DDB

java 數據庫 DDB

通過中間件的形式為前臺提供一臺虛擬的數據庫服務器,而中間件在後臺實際管理著多個數據庫節點,允許將單張表分布到不同的數據庫節點上進行性能均衡。

總體架構:
master管理服務器,提供資源分配,負載統計等總多功能;

DBN(database node)數據庫節點服務器;

DBI(database interface)數據庫訪問接口,部署在客戶機上,以jar包的形式提供給應用程序使用,提供查詢處理功能,隱藏了數據訪問的復雜性;

數據的分區和負載均衡:

數據的水平分區方式:hash分區;

系統采用hash表和映射表兩級映射的方式實現:首先根據一個固定的hash算法和特定的字段值將表中的每條記錄映射到一個hash

桶上,然後使用一個動態可調的map將多個hash桶映射到一個存儲節點上,這個計算hash值的字段稱為均衡字段。

技術分享圖片

兩級映射方案,消除了直接使用hash表無法調整和直接使用map映射占用空間過大的缺點,擴充後端節點時,僅需要修改map映射就能完成遷移;同類數據之間宜采用相同的分區或者均衡策略(均衡字段和hash算法),在進行負載均衡調整時以桶為單位進行統一處理。

數據庫表均衡字段的選擇:

1. 對於表中字段a,當且僅當訪問這個表時經常指定a上的等值條件時,字段a才是一個好的均衡字段候選人;

2. 當依據規則一產生多個候選均衡字段時,傾向於用distinct值比較多的那個;

student(name,dept專業

,age...)訪問這張表總是指定namedept的等值條件,則選擇name

3. 當多個表需要使用相同的均衡策略時,表的均衡字段選取要統一考慮;

4. 表之間存在外鍵的引用關系時,最好使用同一個均衡策略;

分布式查詢:
分布式數據庫中間件需要提供透明的數據訪問接口,在中間件中采用了分布式查詢處理技術實現了這種透明的sql語句執行功能:系統解析輸入的sql語句,根據查詢條件訪問map存儲映射表,得到需要訪問的後臺存儲節點,並生成查詢計劃。查詢計劃包括對各個存儲節點的查詢以及對多個節點返回結果的進一步處理。

技術分享圖片


分布式數據庫DDB