把ID當成主鍵,一般就用INT,資料巨大用BIGINT,聽起來似乎不錯,而且自增AI也十分方便。
1.資料占用小
2.效率高
1.安全性,domain /users/12/,資訊暴露在使用者介面,很容易被猜測到使用者資料量、用戶資訊。
2.效能,無法及時生成,需要在伺服器端生成,影響效能
3.唯一性,一台伺服器上的資料庫,可以確保自增ID的唯一,但如果是在分散式系統中,大平台被切割成多個小服務分散在不同伺服器上,假設一個平台由A、B、C服務組成,彼此之間透過API溝通,假設A、B兩服務API串接會員,會員在A資料庫的ID不一定等於B資料庫中的ID,如此便可能導致全平台資料不一致。
A服務的資料庫
B服務的資料庫
由上方兩張圖可以看出小明在A服務的ID=1 不等於B服務的ID=3
通用唯一辨識碼(英語:Universally Unique Identifier,縮寫:UUID)是用於電腦體系中以辨識資訊的一個128位元識別碼。
根據標準方法生成,不依賴中央機構的註冊和分配,UUID具有唯一性,這與其他大多數編號方案不同。重複UUID碼概率接近零,可以忽略不計。
1.全球獨一無二(理論上,碰撞機率極低)
2.安全性,UUID很難看出資料訊息
eb5439c7-c416-4643-ac8f-b7ecb11adad3
3.可提供時間戳資訊
4.有序UUID可以做到自增+全平台唯一
資料量數千條的情況下,並不需要使用UUID、GUID等,除非業務需求是超大電商,自增ID的可讀性佳,方便記憶、溝通、使用、客戶支援,這些優點也使得自增ID足以應付95%的業務環境.