成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MongoDB 實(shí)戰(zhàn)中,記錄被掉在坑中的窘境

shinezejian / 1437人閱讀

摘要:公司采用作為新項(xiàng)目的數(shù)據(jù)存儲(chǔ)方式,以前沒那么大規(guī)模用過,心里還是有點(diǎn)懸,不知道會(huì)掉在哪些坑里,先給自己挖個(gè)坑。的第一個(gè)大坑好大的坑,讓我忙了一個(gè)下午。。。

公司采用 MongoDB 作為新項(xiàng)目的數(shù)據(jù)存儲(chǔ)方式,以前沒那么大規(guī)模用過,心里還是有點(diǎn)懸,不知道會(huì)掉在哪些坑里,先給自己挖個(gè)坑。

mongoDB 的第一個(gè)大坑:好大的坑,讓我忙了一個(gè)下午。。。mongodb對(duì)自己開發(fā)的nodejs驅(qū)動(dòng)太不負(fù)責(zé)任了吧。。。

問題描述:采用異步方式插入三條數(shù)據(jù)(三條數(shù)據(jù)的插入間隔時(shí)間不超過1s),當(dāng)?shù)谝粭l數(shù)據(jù)寫入但還沒有執(zhí)行回調(diào)的時(shí)候就開始插入下一條數(shù)據(jù)就會(huì)出現(xiàn)索引異常,提示大意就是插入了兩條相同鍵值的記錄。

為什么呢:之前在用 php 寫入數(shù)據(jù)的時(shí)候不會(huì)發(fā)生這個(gè)問題,大概是因?yàn)?php 是順序執(zhí)行的,沒有異步的特征??戳斯俜降奈臋n,mongodb 的 _id 生成機(jī)制是基于時(shí)間戳,當(dāng)前進(jìn)程ID以及當(dāng)前計(jì)數(shù)器的值,由于時(shí)間很短,當(dāng)前時(shí)間戳是一樣的,當(dāng)前的進(jìn)程也是一樣的,問題發(fā)生的關(guān)鍵就是 mongodb nodejs 驅(qū)動(dòng)在還沒有執(zhí)行回調(diào)的時(shí)候計(jì)數(shù)器的值不會(huì)增加(天啊,mongo是怎么想的啊,mysql 很早就避免了這個(gè)問題,執(zhí)行一次id就會(huì)遞增一次,而且不管這條信息是否執(zhí)行成功,保證了是原子性的遞增方式,這樣才比較有業(yè)界良心啊),這樣就造成了nodejs幾乎同時(shí)寫入mongodb時(shí)會(huì)發(fā)生索引錯(cuò)誤,就是11000錯(cuò)誤代碼

方案:采用自己生成的 _id 來代替 mongo 生成的 _id 值,這樣就能夠有效進(jìn)行避免。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/18715.html

相關(guān)文章

  • 微信小程序開發(fā)的二三事之網(wǎng)易云信IMSDK DEMO

    摘要:傳統(tǒng)的網(wǎng)頁編程采用的三劍客來實(shí)現(xiàn),在微信小程序中同樣有三劍客。觀察者模式不難實(shí)現(xiàn),重點(diǎn)是如何在微信小程序中搭配其特有的生命周期來使用。交互事件傳統(tǒng)的事件傳遞類型有冒泡型與捕獲型,微信小程序中自然也有。 本文由作者鄒永勝授權(quán)網(wǎng)易云社區(qū)發(fā)布。 簡(jiǎn)介為了更好的展示我們即時(shí)通訊SDK強(qiáng)悍的能力,網(wǎng)易云信IM SDK微信小程序DEMO的開發(fā)就提上了日程。用產(chǎn)品的話說就是: 云信 IM 小程序 S...

    weij 評(píng)論0 收藏0
  • 架構(gòu)~微服務(wù) - 收藏集 - 掘金

    摘要:它就是史上最簡(jiǎn)單的教程第三篇服務(wù)消費(fèi)者后端掘金上一篇文章,講述了通過去消費(fèi)服務(wù),這篇文章主要講述通過去消費(fèi)服務(wù)。概覽和架構(gòu)設(shè)計(jì)掘金技術(shù)征文后端掘金是基于的一整套實(shí)現(xiàn)微服務(wù)的框架。 Spring Boot 配置文件 – 在坑中實(shí)踐 - 后端 - 掘金作者:泥瓦匠鏈接:Spring Boot 配置文件 – 在坑中實(shí)踐版權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)注明出處本文提綱一、自動(dòng)配置二、自定義屬性三、ran...

    church 評(píng)論0 收藏0
  • Express 實(shí)戰(zhàn)(八):利用 MongoDB 進(jìn)行數(shù)據(jù)持久化

    摘要:在使用過程中我們可以通過增加哈希次數(shù)來提高數(shù)據(jù)的安全性。當(dāng)然,對(duì)密碼的哈希操作應(yīng)該在保存數(shù)據(jù)之前。 showImg(https://segmentfault.com/img/remote/1460000010821081); 毫無疑問,幾乎所有的應(yīng)用都會(huì)涉及到數(shù)據(jù)存儲(chǔ)。但是 Express 框架本身只能通過程序變量來保存數(shù)據(jù),它并不提供數(shù)據(jù)持久化功能。而僅僅通過內(nèi)存來保存數(shù)據(jù)是無法應(yīng)對(duì)...

    yanbingyun1990 評(píng)論0 收藏0
  • 架構(gòu)~微服務(wù)

    摘要:接下來繼續(xù)介紹三種架構(gòu)模式,分別是查詢分離模式微服務(wù)模式多級(jí)緩存模式。分布式應(yīng)用程序可以基于實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布訂閱負(fù)載均衡命名服務(wù)分布式協(xié)調(diào)通知集群管理選舉分布式鎖和分布式隊(duì)列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最簡(jiǎn)單的 SpringCloud 教程 | 第九篇: 服務(wù)鏈路追蹤 (Spring Cloud Sleuth) 史上最簡(jiǎn)單的 S...

    xinhaip 評(píng)論0 收藏0
  • 我是如何在1天內(nèi)構(gòu)建一個(gè)深度學(xué)習(xí)模型并進(jìn)擊Kaggle比賽的

    摘要:是為結(jié)果導(dǎo)向型人群開設(shè)的深度學(xué)習(xí)在線課程。但是最關(guān)鍵的是,我想通過構(gòu)建簡(jiǎn)單的深度學(xué)習(xí)解決方案來實(shí)現(xiàn)理論和實(shí)踐的相結(jié)合。我的目標(biāo)是在一天結(jié)束前進(jìn)入排名的前。我的時(shí)間都用于學(xué)習(xí)庫組織數(shù)據(jù)和評(píng)估結(jié)果都是一些與深度學(xué)習(xí)無關(guān)的簡(jiǎn)單流程。 Fast.ai是Jeremy Howard為結(jié)果導(dǎo)向型人群開設(shè)的深度學(xué)習(xí)在線課程。我讀過很多關(guān)于機(jī)器學(xué)習(xí)的書,也參加過不少這方面的課程,但我認(rèn)為Fast.ai是迄今為...

    shinezejian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<