What Are Snowflake IDs?
Credit by: Wei-Yu Chen (感謝分享)
本文介紹了 Universal Unique Identifiers(UUIDs)的用途及其重要性,UUID 以固定且標準的方式為每個物件產生出獨立的 ID,且 產生出來的 ID 幾乎不可能會重複導致發生碰撞。
通常 UUID 由幾個部分組合而成,像是以時間、執行節點的 MAC address,或以 MD5 hash 來生成。UUID 以 128 bits 的數字組成,為了更方便識別及操作,通常都會以十六進制來表示,總長度為 36 個字(加上連字符號 -)。也因用來產生 UUID 的亂數種子包含了時間、節點資訊等參數,所以 UUID 也具有獨特性,在分散式系統執行也不容易發生碰撞。
而為了避免在你的 apps 裡實作 UUID 的產生機制,常見會使用兩種作法,分別是:Persistence Layer Generated ID 和 ID Servers。一種使用 Database 自動產生出來的序號來作為識別物件的 ID(如 MongoDB 的 ObjectID、MySQL 的 AUTO_INCREMENT ... 等),另一種是使用獨立的 ID server 來產生物件的 ID。
以 Database 來作為序號產生器會碰到一個問題,當你在每次建立新物件時,都會需要向資料庫讀取這個物件的「自動產生 ID」,假設應用程式的規模一大,效能勢必會大受影響。
而使用 ID server(也就是本文主要介紹的 Snowflake IDs)去產生 UUID 的話,就可利用架構於 app 以外的第三方序號產生器。以 Twitter 來說,平均每秒鐘有九千個推文,在高峰期間更甚至會出現一秒 143199 則推文的流量,他們所需要的 UUID 不僅要能夠支援龐大的架構,也需要在以非常快的速度產生出 ID,這也是 Snowflake 專案的由來。
因此,Twitter 以這幾個參數來組成 UUID:
- 保留不使用的位元,固定為 0 - 共 1 位
- Timestamp(以毫秒為單位) - 共 41 位
- 機器 ID - 共 10 位
- 序列號 - 從 0 ~ 4095 依序重複使用 - 共 12 位
雖然說以 ID servers 來產生 UUID 之後,效能還是會被這種架構拖累(必須在建立物件就去向 ID server 發送請求,並等待產生出來的 ID),但這種作法和資料庫系統相比起來已經讓效能降低的問題變得更輕微。
在本文當中介紹了三種常見的 ID 產生方式:在 local app 端產生 ID、在資料庫產生 ID、集中式的 ID server 產生 ID,這些策略的選擇也根據你的使用情境而定,畢竟沒有一種一套打天下的解決方案,在選擇時仍須衡量每個專案的需求。
https://betterprogramming.pub/uuid-generation-snowflake-identifiers-unique-2aed8b1771bc
mysql 分組 在 新思惟國際 Facebook 八卦
🏆 健保資料庫|傑出榮耀
腦中風是成人殘障的主因之一,對社會及醫療系統造成負擔。
除了早期的急性治療,恢復期的復健與照護亦相當重要。
然而,中風後因肢體無力、協調性變差等因素影響,發生跌倒甚至骨折的機率比同年齡的人來得高。
中風後若再發生骨折正所謂雪上加霜,勢必造成生活品質的惡化、與照護系統的壓力,骨折對老年人的預後影響更是顯著。
統計結果顯示中風後復健族群與對照組相比,有較高的骨折發生率 (hazard ratio = 1.53、95% confidence interval = 1.25–1.87)。
以年齡與性別進行分組來分析,發現年老女性是有顯著差異之唯一分組 (HR = 1.62、95% CI = 1.21–2.17)。
因此臨床上進行中風後復健時,對於年老女性或能有更佳之討論與計畫。
🏆 高滿意度的工作坊|寫出有影響力的論文
協助校友起步,發表超過 100 篇 SCI 論文,並具有高滿意度的《健保資料庫工作坊》,加值中心時代課程,追加梯次,今年唯一機會,要報要快!
全新製作,模擬加值中心都能申請到的兩百萬抽樣歸人檔,帶您撈出資料、算好統計、親自畫出與指定論文一樣的圖表!
💡 課程特色
✔ 健保資料庫論文:從無到有的流程
✔ 資料申請與寫作巧思
✔ 互動實作:做出可以投稿的統計表格
✔ 對健保資料庫友善的領域與期刊
✔ 高影響力研究:論文分析與特色歸納
💡 歷屆校友推薦
- 輕鬆學會 MySQL 最基本的語法|小兒科醫師
- 成就感讓我晚上失眠睡不著|醫務部醫師
- 縮短自學時間,很值得的課程|腎臟內科醫師
- 研究的心態,有巨大的調整!|精神科醫師
- 不只給工具,還開拓我的眼界|內科醫師
--
國衛院資料不再能申請,健保資料庫剩下加值中心可用,在別人抱怨並找理由退縮的時候,我們向前走!
8/27 (日) 健保資料庫工作坊|立刻報名
https://nhird2014.innovarad.tw/event/