電子商務(wù)網(wǎng)站中訂單號(hào)設(shè)計(jì)有什么規(guī)則和依據(jù)嗎?
時(shí)間:2022-08-31 02:06:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2022-08-31 02:06:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)
因?yàn)榍岸螘r(shí)間涉及到設(shè)計(jì)電商訂單編號(hào)的問(wèn)題,所以對(duì)這個(gè)問(wèn)題確實(shí)研究了一段時(shí)間,有一些收獲分享給大家。
本文主要是討論電商的訂單編碼規(guī)則,如果是對(duì)內(nèi)的ERP系統(tǒng),訂單編碼則以簡(jiǎn)單易懂為主,因?yàn)橥獠咳艘部床坏健?br>
不廢話,直接干貨。
訂單命名的幾種規(guī)則:1、不重復(fù)。這點(diǎn)我相信大家都懂,訂單的唯一性不用解釋。
2、安全性。你的訂單編號(hào)不能透露你公司的真實(shí)運(yùn)營(yíng)信息,比如你的訂單就是流水號(hào)的話,那么別人就可以從訂單號(hào)推測(cè)出你公司的整體運(yùn)營(yíng)概括了。所以訂單編碼必須是除了你們公司少部分人外,其他人基本看不懂的。參考京東和淘寶的編碼規(guī)則,基本別人是搞不清是什么意思的。
其實(shí)最好的防泄漏編碼規(guī)則就是在編碼中不要加入任何和公司運(yùn)營(yíng)的數(shù)據(jù)。
3、不能使用大規(guī)模隨機(jī)碼。很多人分析訂單編碼規(guī)則的時(shí)候,第一個(gè)念頭肯定是不重復(fù)唯一性,那么第二個(gè)念頭可能就是安全性,那么同時(shí)滿足前兩者的第三個(gè)念頭就是隨機(jī)碼了。因?yàn)榇笠?guī)模的隨機(jī)碼隨機(jī)生成,因?yàn)楸旧砭蜎]有意義所以無(wú)所謂泄密了。但是事實(shí)上這種編碼規(guī)則在實(shí)現(xiàn)上會(huì)有很大問(wèn)題的。
隨機(jī)碼滿足第二點(diǎn)安全性要求,為了滿足第一點(diǎn)不重復(fù)特性,那就得在生成隨機(jī)碼的時(shí)候?qū)Ρ葰v史數(shù)據(jù)是否有重復(fù),如果你的訂單數(shù)量到達(dá)了十萬(wàn)次,你每次生成訂單編碼時(shí)就得對(duì)比十萬(wàn)條歷史數(shù)據(jù),你可想而知會(huì)造成什么巨大問(wèn)題。
但是難道隨機(jī)碼就不能在編碼中使用了嗎?小規(guī)模的隨機(jī)碼是可以使用的,比如2~3位,這種隨機(jī)碼一般都是和流水號(hào)等結(jié)合使用,主要作用是為了隱藏流水號(hào)的真實(shí)數(shù)據(jù)而進(jìn)行使用的。
PS:在這里感謝
@馬馳@dad ni @bao xu(這個(gè)不知道為何@不到)同學(xué)的討論,馬馳同學(xué)實(shí)際測(cè)試估算了生成隨機(jī)碼并且檢測(cè)重復(fù)所花費(fèi)的時(shí)間在納秒級(jí)別。但是我還是保持原來(lái)觀點(diǎn),覺得這種生成規(guī)則存在方向性問(wèn)題,可能會(huì)造成檢測(cè)時(shí)間過(guò)長(zhǎng)的問(wèn)題出現(xiàn)。
希望大家積極參與討論。
4、防止并發(fā)。這條規(guī)則主要針對(duì)編碼中有時(shí)間的設(shè)定。
5、控制位數(shù)。這點(diǎn)很好理解,訂單號(hào)的作用就是便于查詢。
一般正常使用場(chǎng)景應(yīng)該是訂單出異狀或者退貨的時(shí)候,用戶將訂單號(hào)報(bào)給客服,由客服進(jìn)行查詢。
所以一般在10~15位為好。
京東10位,淘寶15位。
推薦的幾種編碼規(guī)則:年月日時(shí)分秒+用戶ID(命名用戶ID時(shí)也要注意,不要用流水號(hào)??梢圆捎脜^(qū)域ID+隨機(jī)碼+流水號(hào)+隨機(jī)碼方式)
1、唯一性:時(shí)間是單向的,確保唯一性。
2、安全性:確保用戶ID安全即可。
3、隨機(jī)碼不參與判斷,因?yàn)橹皵?shù)據(jù)已確保無(wú)重復(fù)。
4、在同1秒鐘,同一用戶是不會(huì)產(chǎn)生2個(gè)訂單編碼的,所以可以防并發(fā)。
5、位數(shù)可能會(huì)在20位之內(nèi),位數(shù)比較多。
年月日時(shí)分秒微秒+隨機(jī)碼(2)+流水號(hào)+隨機(jī)碼(3)1、唯一性:時(shí)間是單向的,確保唯一性。
2、安全性:確保流水號(hào)不會(huì)識(shí)別出即可。
3、隨機(jī)碼的位數(shù)和前后都是保密的,所以如果不清楚這一點(diǎn)的話,是很難判斷出流水號(hào)的位數(shù)的。因?yàn)橥瑫r(shí)產(chǎn)生的訂單數(shù)量很多,編碼不具備線性對(duì)比功能。就算知道了流水號(hào),可以在初始化時(shí)進(jìn)行賦值。
4、在同1秒鐘,同一用戶是不會(huì)產(chǎn)生2個(gè)訂單編碼的,所以可以防并發(fā)。
5、位數(shù)可能會(huì)在20位之內(nèi),位數(shù)比較多。
PS:多謝大家的點(diǎn)贊,但我更希望大家能留言參與討論。
畢竟如果搜到這問(wèn)題的都是想解決這問(wèn)題的,進(jìn)行思考參與討論,才是大家的原本目的。