mongodb寫入安全級別

MongoDB的寫安全機制數據庫

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

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

  • (Unacknowledged)非確認式寫入
  • (Acknowledged)確認式寫入
  • (Journaled)日誌寫入
  • (Replica Acknowledged)複製集確認式寫入

 

 

1. 非確認式寫入測試

 

2. 確認式寫入spa

 

 

3. journal日誌寫入日誌

64位機器上,MongoDB 2.0以上版本默認狀況下是開啓journalcode

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

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

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

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)
相關文章
相關標籤/搜索