iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
Modern Web

MySQL,我的超人系列 第 25

Day25-MySQL-設計大電商網站的主鍵

  • 分享至 

  • xImage
  •  

主鍵

把ID當成主鍵,一般就用INT,資料巨大用BIGINT,聽起來似乎不錯,而且自增AI也十分方便。

優點

1.資料占用小
2.效率高

缺點

1.安全性,domain /users/12/,資訊暴露在使用者介面,很容易被猜測到使用者資料量、用戶資訊。

2.效能,無法及時生成,需要在伺服器端生成,影響效能

3.唯一性,一台伺服器上的資料庫,可以確保自增ID的唯一,但如果是在分散式系統中,大平台被切割成多個小服務分散在不同伺服器上,假設一個平台由A、B、C服務組成,彼此之間透過API溝通,假設A、B兩服務API串接會員,會員在A資料庫的ID不一定等於B資料庫中的ID,如此便可能導致全平台資料不一致。

https://ithelp.ithome.com.tw/upload/images/20221009/20144865sKYYPW5DcM.jpg

A服務的資料庫
https://ithelp.ithome.com.tw/upload/images/20221009/20144865R5ZvncGOUw.jpg

B服務的資料庫
https://ithelp.ithome.com.tw/upload/images/20221009/20144865DxRAUfBRxJ.jpg

由上方兩張圖可以看出小明在A服務的ID=1 不等於B服務的ID=3

UUID當主鍵

通用唯一辨識碼(英語:Universally Unique Identifier,縮寫:UUID)是用於電腦體系中以辨識資訊的一個128位元識別碼。
根據標準方法生成,不依賴中央機構的註冊和分配,UUID具有唯一性,這與其他大多數編號方案不同。重複UUID碼概率接近零,可以忽略不計。

參考

特點

1.全球獨一無二(理論上,碰撞機率極低)
2.安全性,UUID很難看出資料訊息

eb5439c7-c416-4643-ac8f-b7ecb11adad3

有興趣可以自己生一組來玩

3.可提供時間戳資訊
4.有序UUID可以做到自增+全平台唯一

總結

資料量數千條的情況下,並不需要使用UUID、GUID等,除非業務需求是超大電商,自增ID的可讀性佳,方便記憶、溝通、使用、客戶支援,這些優點也使得自增ID足以應付95%的業務環境.


上一篇
Day24-MySQL-索引
下一篇
Day26-MySQL-收下我最後的優化吧!-分析篇
系列文
MySQL,我的超人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言