摘要:公司采用作為新項目的數據存儲方式,以前沒那么大規模用過,心里還是有點懸,不知道會掉在哪些坑里,先給自己挖個坑。的第一個大坑好大的坑,讓我忙了一個下午。。。
公司采用 MongoDB 作為新項目的數據存儲方式,以前沒那么大規模用過,心里還是有點懸,不知道會掉在哪些坑里,先給自己挖個坑。
mongoDB 的第一個大坑:好大的坑,讓我忙了一個下午。。。mongodb對自己開發的nodejs驅動太不負責任了吧。。。
問題描述:采用異步方式插入三條數據(三條數據的插入間隔時間不超過1s),當第一條數據寫入但還沒有執行回調的時候就開始插入下一條數據就會出現索引異常,提示大意就是插入了兩條相同鍵值的記錄。
為什么呢:之前在用 php 寫入數據的時候不會發生這個問題,大概是因為 php 是順序執行的,沒有異步的特征??戳斯俜降奈臋n,mongodb 的 _id 生成機制是基于時間戳,當前進程ID以及當前計數器的值,由于時間很短,當前時間戳是一樣的,當前的進程也是一樣的,問題發生的關鍵就是 mongodb nodejs 驅動在還沒有執行回調的時候計數器的值不會增加(天啊,mongo是怎么想的啊,mysql 很早就避免了這個問題,執行一次id就會遞增一次,而且不管這條信息是否執行成功,保證了是原子性的遞增方式,這樣才比較有業界良心?。@樣就造成了nodejs幾乎同時寫入mongodb時會發生索引錯誤,就是11000錯誤代碼
方案:采用自己生成的 _id 來代替 mongo 生成的 _id 值,這樣就能夠有效進行避免。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/18715.html
摘要:傳統的網頁編程采用的三劍客來實現,在微信小程序中同樣有三劍客。觀察者模式不難實現,重點是如何在微信小程序中搭配其特有的生命周期來使用。交互事件傳統的事件傳遞類型有冒泡型與捕獲型,微信小程序中自然也有。 本文由作者鄒永勝授權網易云社區發布。 簡介為了更好的展示我們即時通訊SDK強悍的能力,網易云信IM SDK微信小程序DEMO的開發就提上了日程。用產品的話說就是: 云信 IM 小程序 S...
摘要:它就是史上最簡單的教程第三篇服務消費者后端掘金上一篇文章,講述了通過去消費服務,這篇文章主要講述通過去消費服務。概覽和架構設計掘金技術征文后端掘金是基于的一整套實現微服務的框架。 Spring Boot 配置文件 – 在坑中實踐 - 后端 - 掘金作者:泥瓦匠鏈接:Spring Boot 配置文件 – 在坑中實踐版權歸作者所有,轉載請注明出處本文提綱一、自動配置二、自定義屬性三、ran...
摘要:在使用過程中我們可以通過增加哈希次數來提高數據的安全性。當然,對密碼的哈希操作應該在保存數據之前。 showImg(https://segmentfault.com/img/remote/1460000010821081); 毫無疑問,幾乎所有的應用都會涉及到數據存儲。但是 Express 框架本身只能通過程序變量來保存數據,它并不提供數據持久化功能。而僅僅通過內存來保存數據是無法應對...
摘要:是為結果導向型人群開設的深度學習在線課程。但是最關鍵的是,我想通過構建簡單的深度學習解決方案來實現理論和實踐的相結合。我的目標是在一天結束前進入排名的前。我的時間都用于學習庫組織數據和評估結果都是一些與深度學習無關的簡單流程。 Fast.ai是Jeremy Howard為結果導向型人群開設的深度學習在線課程。我讀過很多關于機器學習的書,也參加過不少這方面的課程,但我認為Fast.ai是迄今為...
閱讀 964·2021-11-24 10:42
閱讀 3475·2021-11-19 11:34
閱讀 2605·2021-09-29 09:35
閱讀 2525·2021-09-09 09:33
閱讀 642·2021-07-26 23:38
閱讀 2515·2019-08-30 10:48
閱讀 1385·2019-08-28 18:07
閱讀 422·2019-08-26 13:44