TBase數據節點在線擴容原理解析,svm數據分析數據庫數據節點在線擴展原理分析對于無共享架構的分布式數據庫,如何將數據均勻分布到所有節點,并在線擴展以獲得更大的存儲容量和更高的并發訪問,成為所有分布式數據庫系統面臨的一大挑戰。今天我就簡單分享一下騰訊云數據庫TBase的數據節點在線擴展方案。為了滿足業務的快速增長,系......
對于無共享架構的分布式數據庫,如何將數據均勻分布到所有節點,并在線擴展以獲得更大的存儲容量和更高的并發訪問,成為所有分布式數據庫系統面臨的一大挑戰。今天我就簡單分享一下騰訊云數據庫TBase的數據節點在線擴展方案。
為了滿足業務的快速增長,系統不可避免地需要擴展。傳統的分布式數據庫采用hash(row)%nofdn,也就是說先計算分布表的hash值,然后節點數以這個值為模來決定行存儲在哪個節點。這里有一個致命的問題。擴容后節點數量會增加,數據分布的計算邏輯會導致現有數據無法訪問。要解決這個問題,傳統的分布式數據庫必須停止業務,導出所有數據,擴展后再導入。當數據量很大的時候,這個過程可能會持續幾天,這對于一個7*24小時的交易系統來說,顯然是無法接受的。為了解決這個問題,TBase引入了一種新的表拆分方案:分片表。
TBase的數據分布如下:
1.引入了一個中間的shard map,shard map存儲了每個shard id[通過hash(key)計算,表示分布式鍵值]和DN之間的映射關系。
2.分布式表中的每條記錄都通過hash(key)%#shardmap來確定記錄存儲在哪個數據節點中。
3.每個數據節點存儲分配給本節點的shardid信息,然后進行可見性判斷。
如下圖所示,當hash(key)=1時,這一行數據將存儲在DN001數據節點中;當hash(key)=2時,這一行數據將存儲在DN002數據節點中,以此類推。
這樣有什么好處例如,當我們向defaultgroup添加新節點時,我們只需要將shardmap中的一些id映射到新添加的節點,并遷移相應的數據。
如下圖所示,在defaultgroup中添加一個新的數據節點DN003,只需要將DN001中shardid=1,DN002中shardid=4的數據遷移到DN003,就可以重新分配數據,平衡節點間的數據。
t基本在線擴展流程:
1.選擇shardid以遷移到新添加的數據節點。
2.通過shardid找到要遷移的數據,以存量+增量的方式將數據遷移到新的數據節點。
3.當新節點中的數據與數據源中的數據一致時,切換協調節點(CN)中的shardmap信息,將shardmap = 3和shardmap = 4映射到dn 003(shardmap切換時,數據庫集群處于只讀狀態,此操作將在秒內完成)。
4.數據清理,釋放空間。如上圖所示,清除DN001中shardid=3和DN002中shardid=4的數據。
特別聲明:以上文章內容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關于作品內容、版權或其它問題請于作品發表后的30日內與ESG跨境電商聯系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯系在線顧問
小程序
ESG跨境小程序
手機入駐更便捷
返回頂部