系统单据号生成规则推荐
生活随笔
收集整理的這篇文章主要介紹了
系统单据号生成规则推荐
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對訂單類系統而言,單據號是非常重要的東西。一個好的單據號組成往往應該包含豐富的元素,利于問題的調查,業務的擴展。
這里列舉幾種不好的單據號范例:
- 單純的數字遞增: 001, 002, 003 //無業務含義
- UUID//無業務含義,且無順序概念
- 日期+用戶ID//當天同一用戶發生兩筆業務時可能重復
好的單據號規則
| 表示當前單據號是屬于哪個系統的,比如001表示支付系統,002表示團購系統 | 表示這筆單據是發生在哪一天的,yyyyMMdd格式字符串 | 可放8位數字,支持一億的sequence,值可以來自當前表的主鍵ID,不滿8位的左邊統一補0,這個保證了最終的唯一性 |
如果當前系統有子單據概念,比如訂單系統里還有物流單的概念,則可以加入子業務單標識
| - | - | 001表示物流單,002表示退款單 | - |
如果你的數據庫是分庫分表的,則強烈建議在單據號中加入分庫分表位,將有很大的收益
| - | - | 0102表示01庫的02號表 | - |
總之好的單據號可以獲得如下收益:
- 根據單據號馬上可以知道這個來自哪個系統,發生在哪一天
- 在這個系統中屬于具體哪一個子業務
- 這筆單子是屬于哪個庫哪個表的
- 在程序中只要你能獲得單據號,就能通過截取的方式獲得很多有價值的信息,便于邏輯的處理。久而久之你會不自主讓單據號貫穿整個系統,也樂意在日志中打印,將極大方便你解決問題
- 當整個系統群都遵守統一的標準時,你會發現當進入任意一個新系統時,只要給你這個系統的單據號則你都能快速定位日志,代碼,數據庫表,非常利于學習
讓我們擁抱好的單據號生成習慣吧!
總結
以上是生活随笔為你收集整理的系统单据号生成规则推荐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从淘宝 UWP 的新功能 -- 比较页面
- 下一篇: java的枚举类enum