日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

做电商网站的主键策略

發(fā)布時(shí)間:2023/12/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 做电商网站的主键策略 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一般最常見(jiàn)的主鍵策略都是自增

但是為了應(yīng)對(duì)分布式集群環(huán)境。數(shù)據(jù)庫(kù)自然不能選擇自增,否則并發(fā)大的時(shí)候會(huì)出現(xiàn)主鍵沖突。

一般oracle下選擇了sequence的方式,mysql有的會(huì)自己設(shè)計(jì)sequence,有的會(huì)用uuid策略。這里對(duì)于對(duì)外展示的數(shù)據(jù)表來(lái)說(shuō),sequence可能不是一個(gè)好主意,不管你如何加密,最后都會(huì)泄露相關(guān)數(shù)據(jù)信息。所以有些電商互聯(lián)網(wǎng)公司選擇了uuid這個(gè)策略。在oracle數(shù)據(jù)庫(kù)和5.0版本的mysql應(yīng)該都支持。


那么我們先看看什么是UUID?簡(jiǎn)單的說(shuō),UUID是指在一臺(tái)機(jī)器上生成的數(shù)字,它保證對(duì)在同一時(shí)空中的所有機(jī)器都是唯一的。在UUID的算法中,可能會(huì)用到諸如網(wǎng)卡MAC地址,IP,主機(jī)名,進(jìn)程ID等信息以保證其獨(dú)立性。

如果你的MySQL版本不太老的話(huà),鍵入 SELECT UUID(); 輸出的就是UUID,如下:

mysql> select uuid();
+--------------------------------------+
| uuid()?????????????????????????????? |
+--------------------------------------+
| 54b4c01f-dce0-102a-a4e0-462c07a00c5e |
+--------------------------------------+



現(xiàn)在大家應(yīng)該對(duì)UUID有一個(gè)比較直觀的認(rèn)識(shí)了,我們來(lái)看看UUID的優(yōu)缺點(diǎn)分別是什么。

優(yōu)點(diǎn):

能夠保證獨(dú)立性,程序可以在不同的數(shù)據(jù)庫(kù)間遷移,效果不受影響。
保證生成的ID不僅是表獨(dú)立的,而且是庫(kù)獨(dú)立的,這點(diǎn)在你想切分?jǐn)?shù)據(jù)庫(kù)的時(shí)候尤為重要。

缺點(diǎn):

比較占地方,和INT類(lèi)型相比,存儲(chǔ)一個(gè)UUID要花費(fèi)更多的空間。
使用UUID后,URL顯得冗長(zhǎng),不夠友好。

下面針對(duì)上述UUID的缺點(diǎn)說(shuō)說(shuō)我的看法,比較占地方這個(gè)缺點(diǎn)我不是很在乎,現(xiàn)在最不值錢(qián)的就是硬盤(pán)了,略過(guò)此條缺點(diǎn)無(wú)妨,但需要注意的一點(diǎn)數(shù)據(jù)在索引的時(shí)候效率會(huì)隨著體積的增加而降低。至于說(shuō)使用UUID后,URL顯得不友好,我覺(jué)得這多少是你的INT情結(jié)造成的慣性思維,其實(shí),和INT類(lèi)型相比,UUID才是最自然的主鍵選擇,注意,我這里用的是自然這個(gè)形容詞,仔細(xì)體會(huì)一下你能理解我的意思。另外,很多時(shí)候,URL本身就不需要友好,比如,一個(gè)電子商務(wù)網(wǎng)站,按照INT友好的URL說(shuō)法,她的訂單URL大概是下面這個(gè)形式的:/order.action/id/123,我要說(shuō)明的是,這樣是很友好,但是有些太友好了,友好的甚至不安全,比如說(shuō),我早晨下一個(gè)訂單,發(fā)現(xiàn)URL是/order.php/id/1000,晚上再下一個(gè)訂單發(fā)現(xiàn)URL是/order.php/id/2000,那么我就可以估計(jì)出此網(wǎng)站一天的訂單數(shù)大致是1000左右,甚至能大體估計(jì)出它的銷(xiāo)售額,而這些數(shù)據(jù)往往都是重要的商業(yè)秘密。使用UUID就沒(méi)有這個(gè)顧慮。


同理oracle獲取uuid的方法如下:

select sys_guid() from dual




總結(jié)

以上是生活随笔為你收集整理的做电商网站的主键策略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。