常見的主鍵生成策略

2021-10-09 15:50:17 字數 693 閱讀 7785

系統唯一id是我們在設計乙個系統的時候常常會遇見的問題,也常常為這個問題而糾結。生成id的方法有很多,適應不同的場景、需求以及效能要求。所以有些比較複雜的系統會有多個id生成的策略。下面就介紹一些常見的id生成策略

1.資料庫自增長序列或字段

最常見的方式。利用資料庫,全資料庫唯一。

優點:1)簡單,**方便,效能可以接受。

2)數字id天然排序,對分頁或者需要排序的結果很有幫助。

缺點:1)不同資料庫語法和實現不同,資料庫遷移的時候或多資料庫版本支援的時候需要處理。

2)在單個資料庫或讀寫分離或一主多從的情況下,只有乙個主庫可以生成。有單點故障的風險。

3)在效能達不到要求的情況下,比較難於擴充套件。

4)如果遇見多個系統需要合併或者涉及到資料遷移會相當痛苦。

5)分表分庫的時候會有麻煩。

優化方案:

1)針對主庫單點,如果有多個master庫,則每個master庫設定的起始數字不一樣,步長一樣,可以是master的個數。比如:master1 生成的是 1,4,7,10,master2生成的是2,5,8,11 master3生成的是 3,6,9,12。這樣就可以有效生成集群中的唯一id,也可以大大降低id生成資料庫操作的負載。

2.uuid

常見的方式。可以利用資料庫也可以利用程式生成,一般來說全球唯一。

主鍵生成策略

一共是13種,其中包括native native 對於 oracle 採用 sequence 方式,對於mysql 和 sql server 採用identity 自增主鍵生成機制 native就是將主鍵的生成工作交由資料庫完成,hibernate不管 很常用 uuid 採用128位的uuid演算法...

主鍵生成策略

原文 generatedvalue,jpa通用策略生成器 jpa提供的四種標準用法為table,sequence,identity,auto.table 使用乙個特定的資料庫 來儲存主鍵。sequence 根據底層資料庫的序列來生成主鍵,條件是資料庫支援序列。id generatedvalue st...

主鍵生成策略

1 自動增長identity 適用於mysql db2 ms sql server,採用資料庫生成的主鍵,用於為long short int型別生成唯一標識 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援自增字段,要設定sequence...