mongodb多線程并發(fā)寫入 mongodb樂觀鎖怎么使用php?
mongodb樂觀鎖怎么使用php?SQL并發(fā)控制中使用的樂觀鎖是向記錄中添加版本號或時(shí)間戳,那么如何在mongodb中實(shí)現(xiàn)呢?Mongodb不擅長處理事務(wù),但它提供findandmodify命令。此
mongodb樂觀鎖怎么使用php?
SQL并發(fā)控制中使用的樂觀鎖是向記錄中添加版本號或時(shí)間戳,那么如何在mongodb中實(shí)現(xiàn)呢?Mongodb不擅長處理事務(wù),但它提供findandmodify命令。此命令允許您以原子方式更新文檔,并在同一調(diào)用中返回以下代碼數(shù)據(jù)庫集合查找和修改({query:{“name”:“yown”},update:{“version”:2}新:正確還是錯(cuò)誤默認(rèn)情況下,findandmodify將在更新之前返回文檔。如果返回修改后的文檔,new將設(shè)置為false。Mongodb還提供了update命令。這兩個(gè)命令的區(qū)別如下:update和findandmodify可以用于更新操作;findandmodify有一個(gè)返回值,output部分的value word使用新:真選項(xiàng)返回修改后的文檔。Update是一個(gè)更新操作,沒有返回值。Findandmodify強(qiáng)調(diào)操作的原子性,例如用于自動(dòng)遞增1或操作隊(duì)列的操作。一般來說,findandmodify比update慢,因?yàn)樗枰却龜?shù)據(jù)庫的響應(yīng)。此外,findandmodify,其中modify可以是update或remove{findandmodify:<string>,query:<document>,sort:<document>,remove:<boolean>,update:<document>,new:<boolean>,fields:<document>,upper:&感謝您邀請我回答此問題。
首先,我想說的是,我只聽說過mongodb,但沒有與它有過任何真正的接觸。
問題涉及兩個(gè)概念,一個(gè)是“mongodb”,另一個(gè)是“庫存超賣”。
讓我們從mongodb開始?
Mongodb是一個(gè)基于分布式文件存儲的數(shù)據(jù)庫。用C語言編寫。它旨在為web應(yīng)用程序提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。
Mongodb是介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,功能最豐富,最像關(guān)系數(shù)據(jù)庫。
其次,什么是“庫存超賣”?
超賣出現(xiàn)在修改庫存業(yè)務(wù)的方法中,而不是數(shù)據(jù)庫的update語句中。
因此,mongodb單機(jī)應(yīng)該存在超賣庫存。
那么如何防止超賣呢?
(1)Seckill數(shù)據(jù)庫設(shè)計(jì);
(2)基于數(shù)據(jù)庫樂觀鎖,防止庫存超賣;
深入我不清楚,希望以上答案能對您有所幫助!