資料庫分庫分表 擴容無須資料遷移的分片演算法

2021-08-28 05:10:50 字數 354 閱讀 8047

常見的分庫分表方案大都用主鍵mod乙個數(如分為8個庫,則 id % 8 根據餘數決定落到哪個分片)。此種方案中,如果要拓展資料庫將是十分複雜的事情(例如拓展為10個,則**需要改為 id % 10 之前的舊資料也要做遷移)。我們希望有一種支援自由規劃無須資料遷移和修改路由**的sharding擴容方案。

在twitter-snowflake分庫分表演算法主鍵演算法本身就帶時間戳,我們可以基於它實現無需資料遷移的擴容方案。

snowflake生成的id是乙個64位的long值,通過主鍵可以算出兩個維度的值:

如此一來,只需根據時間戳,指定某一時間戳後使用新的分片規則,即可不遷移資料對資料庫進行擴容。

資料庫分庫分表

1 基本思想之什麼是分庫分表?從字面上簡單理解,就是把原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存於乙個表的資料分塊儲存到多個表上。2 基本思想之為什麼要分庫分表?資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,庫中的表會越來越多,表中的資料量也會越來越大,相...

資料庫分庫 分表

分庫的優點是 實現簡單,庫與庫之間界限分明,便於維護,缺點是不利於頻繁跨庫操作,單錶資料量大的問題解決不了。分表的優點是 能解決分庫的不足點,但是缺點卻恰恰是分庫的優點,分表實現起來比較複雜,特別是分表規則的劃分,程式的編寫,以及後期的 資料庫拆分移植維護。實際應用中,一般網際網路企業的路線都是先分...

資料庫分庫分表

簡單了解資料庫分庫分表,以及資料庫的分片 什麼是分庫分表 原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存於乙個表的資料分塊儲存在到多個表上 為什麼分庫分表 當一張表的資料達到幾千萬時,你查詢一次所花的時間會變多,如果有聯合查詢的花,我想啃根會死在那。分表的目的就在於此,減少資料庫的負擔,縮短查...