国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MongoDB - write concern concept

callmewhy / 2870人閱讀

摘要:對于多文檔操作來說,并未提供多文檔事物或隔離。在間隔過期之前,不會回滾或撤消已做出的修改。僅在將數據提交到后才告知客戶端。為了降低操作延遲,也增加了它提交數據至日志的頻率。

  

本文翻譯自 write concern。
注意,本文內容適用于MongoDB Manual 3.0.2及以上版本。

What"s write concern

所謂的寫關注就是當向客戶端報告寫操作的成功執行時,MongoDB提供的保證。通過提供不同級別的寫關注來解決應用的具體需求。

Considerations Default Write Concern

mongo shell和MongoDB驅動使用acknowledged作為默認寫關注級別。

Read Isolation

注:讀與寫如何隔離?寫與寫如何隔離?

在將這些修改提交至磁盤之前,MongoDB允許客戶端讀取剛插入或修改的文檔,不管寫關注的級別或日志(journaling)配置。其結果是,應用可以觀察到兩類行為:

對于有多個并發讀取者和寫入者的系統來說,在寫操作返回之前,MongoDB允許客戶端讀取寫操作的結果。

如果在提交數據至日志(journal)之前mongod進程終止了,那么即使寫操作成功返回了,查詢仍可能讀取到 在mongod重啟后 并不存在的數據。

其他數據庫系統稱這些 隔離語義(isolation semantics) 為read uncommitted。對于所有的插入和更新,MongoDB以隔離方式修改每一個文檔:客戶端從不會看到中間狀態的文檔。對于多文檔操作來說,MongoDB并未提供多文檔事物或隔離。

當以單機方式(standalone)方式部署的mongod從使用journaled寫關注的寫操作中返回時,數據就完全提交至磁盤了,重啟mongod后它們就可用了。

對于副本集,只有在 在副本集的大部分投票節點上寫操作被復制且提交數據至日志 之后,寫操作才是持久的。MongoDB會定期(regularly)提交數據至日志,不管journaled寫關注:使用commitIntervalMs去控制mongod多長時間提交一次數據。

Timeouts

客戶端可以設置一個wtimeout值,作為replica acknowledged寫關注的一部分。如果在指定的時間間隔內寫關注未被滿足,當前操作就會返回錯誤,即使寫關注最終成功完成。

wtimeout間隔過期之前,MongoDB不會回滾或撤消已做出的修改。

Write Concern Levels

MongoDB有下面這些概念性的寫關注等級,由弱到強:

注:下面這些只是邏輯概念上的寫關注級別,并非配置write concern時剛好有這幾個配置枚舉值可選。實際上寫關注包含兩個方面,分別對應兩個配置項:wj,需要組合這兩個配置項來實現下面這些寫關注級別。具體請看Write Concern Reference。

unacknowledged

MongoDB不會告知客戶端寫操作已收到。unacknowledged類似于error ignored。然而,驅動程序在可能的時候會試圖接收并處理網絡錯誤。但驅動檢測網絡錯誤的能力有賴于系統的網絡設置。

在Default Write Concern Change勾畫出的發布(注:此版本已發布于2012.11)之前,unacknowledged就是默認寫關注。

acknowledged

acknowledged 也叫 receipt acknowledgedmongod會告知客戶端已收到寫操作,并且已將改變應用于數據的內存視圖。acknowledged 寫關注(write concern)允許客戶端捕獲網絡(network)、重復鍵(duplicate key)和其他錯誤。但acknowledged 寫關注并不會確認寫操作已經被持久化到磁盤系統。

從Default Write Concern Change勾畫出的驅動發布(注:此版本已發布于2012.11)開始,MongoDB將默認使用acknowledged寫關注。

journaled

MongoDB僅在將數據提交到journal后才告知客戶端。(告知客戶端什么信息呢?)這種寫關注會確保在關機或電力中斷后MongoDB能夠恢復數據。

你必須啟用journaling以使用這種寫關注。

使用這種寫關注,寫操作必須等到下一次日志提交(journal commit)才能返回。為了降低操作延遲,MongoDB也增加了它提交數據至日志(journal)的頻率。參考commitIntervalMs文檔以獲取更多信息。

注意:
如果在副本集中需要journaled寫關注,只需要寫操作在主節點上完成日志提交就行了,不用考慮replica acknowledged寫關注。(journaled寫關注只是一種邏輯上的寫關注級別,實際并沒有這個配置項值,組合wj兩個配置項才能實現用戶期望的寫關注。

replica acknowledged

關于寫關注,副本集(relica set)提出了額外的考慮因素。默認寫關注僅要求來自主節點(the primary)的確認(acknowledgement)。

使用這種寫關注,你能夠確保寫操作被傳播至副本集中的額外成員,即部分從節點(the secondary)。參考**Write Concern for Replica Sets **文檔以獲取更多信息。

注意:
如果在副本集中需要journaled寫關注,只需要寫操作在主節點上完成日志提交就行了,不用考慮replica acknowledged寫關注。(journaled寫關注只是一種邏輯上的寫關注級別,實際并沒有這個配置項值,組合wj兩個配置項才能實現用戶期望的寫關注。

Related Resources

Write Concern Reference

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/18732.html

相關文章

  • MongoDB - Write Concern Reference

    摘要:版本中的修改在主從部署中,把視作與是等效的。這會確保如果意外關閉了,數據也不會丟失。當這些寫操作返回時,不會撤銷在寫關注超過時限之前已經成功執行的數據修改。 Write Concern Reference 本文翻譯自 write concern reference。 注意,本文內容適用于MongoDB Manual 3.0.2及以上版本。 寫關注就是當向客戶端報告寫操作...

    ARGUS 評論0 收藏0
  • [Carefree MongoDB] Spring Boot MongoDB 自動化配置

    摘要:然而,只提供了最簡單的客戶端選項,且不支持多數據源配置。由此而生,除了支持完整的客戶端選項及多數據源配置之外,還提供了一些其它的實用功能。配置示例多數據源進行多數據源配置時,需要明確指定各數據源的名稱。 最近在制作一個 spring boot 小應用時使用了 MongoDB,鑒于官方庫的簡陋配置,決定自己造個輪子,源碼發布在 GitHub Carefree MongoDB,jar 已在...

    時飛 評論0 收藏0
  • MongoDB學習筆記(1)- MongoDB簡介、數據類型及幫助命令

    摘要:數據模型取決于數據庫類型。僅支持位浮點數,所以位整數會被自動轉換為位浮點數。位浮點數中的數字都是這種類型。數字只能表示為雙精度數位浮點數的另外一個問題是,有些位的整數并不能精確地表示為位浮點數。 MongoDB學習筆記(1)- MongoDB簡介及數據類型 本文所使用的MongoDB版本為 4.0.10 > db.version(); 4.0.10 一、MongoDB 介紹 1. Mo...

    nihao 評論0 收藏0
  • mongodb: “invalid character ',' looking

    摘要:我以為是編碼的問題,可能是下的編碼有問題,因為有一個談論這個問題的。其中遇到了也是的問題提到的這個做法很不錯,使用這個參數確定位置。 從群里獲取了一個超大的json(也就800M),需要導入mongodb,然后遇到了一個問題: $ mongoimport --db weibo --collection data --file test.json 2018-05-09T16:10:22....

    Edison 評論0 收藏0
  • mongodb: “invalid character ',' looking

    摘要:我以為是編碼的問題,可能是下的編碼有問題,因為有一個談論這個問題的。其中遇到了也是的問題提到的這個做法很不錯,使用這個參數確定位置。 從群里獲取了一個超大的json(也就800M),需要導入mongodb,然后遇到了一個問題: $ mongoimport --db weibo --collection data --file test.json 2018-05-09T16:10:22....

    Faremax 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<