自增ID演算法snowflake 雪花

2022-07-08 03:39:15 字數 488 閱讀 7507

在資料庫主鍵設計上,比較常見的方法是採用自增id(1開始,每次加1)和生成guid。生成guid的方式雖然簡單,但是由於採用的是無意義的字串,推測會在資料量增大時造成訪問過慢,在基礎網際網路的系統設計中都不推薦採用。自增id的方法雖然比較適合大資料量的場景,當時由於自增id是按照順序增加的,資料記錄都是可以根據id號進行推測出來,對於一些資料敏感的場景,不建議採用

最近在一篇文章中看到p2p**處理訂單流水號的思路還不錯。該平台設計時希望能使用一種簡單一些的id,並且希望id能夠按照時間有序生成。twitter 的 snowflake 演算法解決了這種需求。在流水號服務中採用了這種演算法。

snowflake演算法的好處有兩點:一是純數字,二是整體上來說是按時間順序的。

scala版詳見開源專案

python版詳見開源專案

c#版詳見開源專案

自增ID演算法snowflake 雪花

在資料庫主鍵設計上,比較常見的方法是採用自增id 1開始,每次加1 和生成guid。資料庫自增主鍵保證唯一性,但在分布式系統中,部署需要考慮的因素太多 guid設計簡單,能保證主鍵的唯一性,分布式系統中,資料庫部署也簡單,只是guid是一串無物理意義的字串,大量資料查詢的時候效率相對會打折,儲存暫用...

分布式自增ID演算法snowflake的JAVA實現

分布式系統中,有一些需要使用全域性唯一id的場景,這種時候為了防止id衝突可以使用36位的uuid,但是uuid有一些缺點,首先他相對比較長,另外uuid一般是無序的。有些時候我們希望能使用一種簡單一些的id,並且希望id能夠按照時間有序生成。而twitter的snowflake解決了這種需求,最初...

mysql 實現id自增序列 mysql自增id列

如果希望在每次插入新記錄時,自動地建立主鍵欄位的值。可以在表中建立乙個 auto increment 字段。mysql 使用 auto increment 關鍵字來執行 auto increment 任務。預設地auto increment 的開始值是 1,每條新記錄遞增 1。主鍵又稱主關鍵字,主關...