關於迴圈主鍵的設計

沈子平發表於2019-01-19

關於迴圈主鍵的設計

需求

一筆業務要生成一個序號,序號長度為20位,序號的規則是固定的字首(5位)+日期(yyyymmdd)(8位)+受理人序號(3位)+每日迴圈的序列號(4位)。例如
業務員001的業務編號
ORDER201801010010001
ORDER201801010010002
ORDER201801010010003
ORDER201801020010001
業務員002的業務編號
ORDER201801010020001
ORDER201801010020002
ORDER201801010020003
ORDER201801020020001

目前我想到的有兩種實現方式,如下

方案1

採用redis來實現,將迴圈序列號前面的作為KEY,比如ORDER20180101001,ORDER20180101002,設定一個超時時間,目前是按天迴圈,則超時時間設定為24小時。value則是一個自增的數字。這樣就可以滿足需求了。

方案2

採用關聯式資料庫來實現,列有seqprefix和nextval欄位,seqprefix是主鍵。獲取的時候檢視seqprefix是否存在,不存在則插入 seqprefix=“XXX”,nextval=2. 如果有,則取出當前的nextval,並+1更新。

總結

以上兩個都可以滿足需求。方案1比較方便,不涉及資料表,方案2比較重一點。不知道業界還有沒有其他的方法來實現。

相關文章