自增ID算法snowflake(雪花)


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

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

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

Scala版詳見開源項目https://github.com/twitter/snowflake
Python版詳見開源項目https://github.com/erans/pysnowflake
C#版詳見開源項目https://github.com/ccollie/snowflake-net

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM