SunlightDB 無限擴展

隨着數據量和吞吐量的增長,運維人員能夠直接通過增加本地或公有云服務器,快速增加SunlightDB系統容量。SunlightDB是一種“分佈式”數據庫,可部署到多個“集羣”服務器上,“集羣”是由多個具有同等功能的SunlightDB服務器實例組成。

SunlightDB數據存儲的單位是表和行,每個表都有嚴格的模式和強制主鍵,強制主鍵用於自動將表拆分爲多個同等大小的分區,每個分區存儲在集羣中的多個服務器上。關於分區算法,主要有以下幾種:
(1)模哈希算法
模哈希算法定位表中的每一行需要的時間量相同,無需考慮表中的總行數,並且我們只需輸入行的ID和服務器總數。但是,該算法無法處理一個不斷增長的數據集。如果我們不斷地向表中添加更多的行,最終我們將增加服務器總數,來增加更多的容量,但是改變服務器總數也就改變了模運算的結果。
(2)一致性哈希算法
一致性散列僅能支持精確查詢,就是說,如果我們已經知道行的ID,我們只能快速找到一行。如果我們要查找ID範圍內所有行的位置,例如ID在10到50之間的所有行,我們將掃描整個表格。因此,一致性散列特別適用於不需要範圍掃描的鍵/值數據庫。另外,在更改服務器數量後,我們仍然需要複製大約1 / N(服務器總數)的數據。
(3)BigTable 算法方案

基本上BigTable是經典分裂算法的應用。初始情況下,每個表只含一個Tablet,隨着表數據的增長,它會被自動分割成多個Tablet。同時,Master服務器會負責控制是否需要將Tablet轉交給其他負載較輕的Tablet服務器,從而保證整個集羣的負載均衡。BigTable方案的優點是它支持範圍掃描,並且我們向集羣添加服務器不會導致數據重新平衡。

SunlightDB分區,選擇BigTable方案,並不是說這個方案或者說算法更好——算法無優劣,關鍵看場景。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章