分庫分表之后,id 主鍵如何處理?
因為要是分成多個表之后,每個表都是從 1 開始累加,這樣是不對的,我們需要一個全域唯一的 id 來支持,
生成全域 id 有下面這幾種方式:
UUID
不適合作為主鍵,因為太長了,并且無序不可讀,查詢效率低,比較適合用于生成唯一的名字的標示比如檔案的名字,
資料庫自增 id
兩臺資料庫分別設定不同步 ,生成不重復ID的策略來實作高可用,這種方式生成的 id 有序,但是需要獨立部署資料庫實體,成本高,還會有性能瓶頸,
利用 redis 生成 id
性能比較好,靈活方便,不依賴于資料庫,但是,引入了新的組件造成系統更加復雜,可用性降低,編碼更加復雜,增加了系統成本,
Twitter的snowflake演算法
Github 地址:https://github.com/twitter-archive/snowflake,
美團的Leaf分布式ID生成系統
Leaf 是美團開源的分布式ID生成器,能保證全域唯一性、趨勢遞增、單調遞增、資訊安全,里面也提到了幾種分布式方案的對比,但也需要依賴關系資料庫、Zookeeper等中間件,感徑訓不錯,美團技術團隊的一篇文章:https://tech.meituan.com/2017 /04/21/mt-leaf.html ,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/280262.html
標籤:其他
上一篇:SQL總結
下一篇:資料庫作業14:SQL總結
