mongodb寫入安全級別


MongoDB的寫安全機制

寫入安全(Write Concern)是一種由客戶端設置的,用於控制寫入安全級別的機制,通過使用寫入安全機制可以提高數據的可靠性。

MongoDB提供四種寫入級別,分別是:

  • (Unacknowledged)非確認式寫入
  • (Acknowledged)確認式寫入
  • (Journaled)日志寫入
  • (Replica Acknowledged)復制集確認式寫入

 

 

1. 非確認式寫入

 

2. 確認式寫入

 

 

3. journal日志寫入

64位機器上,MongoDB 2.0以上版本默認情況下是開啟journal

journal文件位於journal目錄中,只能以追加方式添加數據,文件名以j._開頭

數據庫正常關閉時(例如:db.shutdownServer()來關閉數據庫),數據庫服務會清空journal目錄下的所有文件

MongoDB數據庫每隔100ms或30ms向journal文件中flush一次數據

journal日志和data數據在一個磁盤上時每隔100ms刷新一次,不在一個磁盤上時30ms刷新一次,建議把journal日志和data數據放在不同的磁盤上,提高數據的可靠性

 

4. 復制集確認式寫入

 

5.寫入安全級別的使用

W選項

0:非確認式寫入

1:確認式寫入

  說明:這個級別下,對副本級只對主庫做確認寫入

2:副本級確認式寫入

  說明:這個級別下,副本級第一個slave寫入成功后就響應給client

majority:復制級更多slave寫入成功后,在響應給client

示例代碼

//連接數據庫
dbService = connect("localhost:27017");
//選擇插入集合
db = dbService.getSiblingDB("jike");

//創建bluk對象用於批量插入
db.write_concern.drop();

//測試數據
var doc1 = {
    name:"xiaoli",
    age:20,
    address:
    {
        province:"GuangDong",
        city:"ShenZhen"
    }
}

print("======writeConcern的使用 - 非確認式寫入======")
var result = db.wirte_concern.insert(doc1,{writeConcern:{w:0}})
printjson(result)

print("======writeConcern的使用 - 確認式寫入======")
var result = db.wirte_concern.insert(doc1,{writeConcern:{w:1}})
printjson(result)

print("======writeConcern的使用 - 確認式寫入 + journaled + wtimeout======")
var result = db.wirte_concern.insert(doc1,{writeConcern:{w:1,j:true,wtimeout:5}})
printjson(result)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM