Postgresql

使用 UUID 或 GUID 作為主鍵有什麼缺點?

  • April 29, 2012

我想建立一個分佈式系統。我需要將數據儲存在數據庫中,使用UUIDGUID作為某些表的主鍵會很有幫助。我認為這是這種設計的一個缺點,因為 UUID/GUID 非常大而且它們幾乎是隨機的。另一種方法是使用自動遞增的 INT 或 LONG。

使用 UUID 或 GUID 作為我的表的主鍵有什麼缺點?

我可能會使用 Derby/JavaDB(在客戶端)和 PostgreSQL(在伺服器上)作為 DBMS。

這取決於您的生成功能和決賽桌的大小

GUID 旨在成為全域唯一標識符。正如Postgres 8.3 文件中所討論的,沒有普遍適用的方法來生成這些標識符,但 postgreSQL 確實附帶了一些更有用的候選者。

從您的問題範圍和對離線寫入的需求來看,您已經非常巧妙地排除了除 GUID 之外的任何東西的使用,因此其他方案沒有補償優勢。

從功能的角度來看,密鑰長度在任何類型的現代系統上通常都不是問題,這取決於讀取次數和表的大小。作為一種替代方法,離線客戶端可以在沒有主鍵的情況下批量處理新記錄,並在重新連接時簡單地插入它們。由於 postgreSQL 提供“串列”數據類型,如果客戶端可以執行對數據庫的簡單寫入,則永遠不需要確定 ID。

引用自:https://dba.stackexchange.com/questions/322