關於MongoDB大量寫入資料時,資料丟失的問題

第一次接觸MongoDB時,寫了程式想把資料丟進去DB的時候,卻發現100筆資料大概只丟進去20幾筆

當時很疑惑,是不是MongoDB太嫩,秀逗了?!

但是每次怎麼塞都是一樣的結果….經過一番努力,網友的提點最後才知道原來在Mongo的預設環境下,再請求DB(insert,find)等操作後

連接會被交到Threading Pool 裡面,在不知道該請求是否成功的情況下,就會造成"數據無故丟失"的窘境

因此對於數據安全性的操作請求,再使用時可加上WriteConcern.SAFE的參數,這樣就不會有資料丟失的狀況。

下列是簡易塞資料到DB的方法…在使用到insert方法時,加入WriteConcern.SAFE參數,解決資料丟失問題

    public void insertDocToDB(String title,String content){

        try{

            BasicDBObject doc = new BasicDBObject();

            doc.put("title", title);        

            doc.put("content", content);

            coll.insert(doc,WriteConcern.SAFE);

        } catch(Exception e){    

            e.printStackTrace();

        }

    }

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s