摘要:版本中的修改在主從部署中,把視作與是等效的。這會確保如果意外關閉了,數(shù)據(jù)也不會丟失。當這些寫操作返回時,不會撤銷在寫關注超過時限之前已經(jīng)成功執(zhí)行的數(shù)據(jù)修改。
Write Concern Reference
本文翻譯自 write concern reference。
注意,本文內(nèi)容適用于MongoDB Manual 3.0.2及以上版本。
寫關注就是當向客戶端報告寫操作的成功執(zhí)行時,MongoDB提供的保證。這個保證包含兩個方面:
要求收到指定數(shù)量的mongo節(jié)點對寫操作的收到確認。
是否要將數(shù)據(jù)變更寫入磁盤上的日志文件(journal)。
版本2.6中的修改:一個針對寫操作的新協(xié)議將寫關注與寫操作集成在一起,這就消除了調(diào)用getLastError命令的需要。以前的版本需要在寫操作之后立即調(diào)用getLastError命令,以指定寫關注級別。
Available Write Concernwrite concern可以包含w選項,以指定返回前要求的確認數(shù)量;包含j選項,以要求返回前需將數(shù)據(jù)寫入日志(journal);包含wtimeout選項指定一個時間限制,以防止寫操作無窮盡地阻塞。
在分片集群中,mongos實例會將寫關注傳遞給分片。(注:什么是mongos呢,請看mongos 與 mongod)
w Optionw選項提供了既可以為副本集指定寫關注,還可以完全關閉寫關注的能力。
MongoDB使用w: 1作為默認寫關注,w: 1提供了基本的收到確認。
w選項接受如下值:
Value | Description |
---|---|
1 | 提供在單機模式的mongod或副本集主節(jié)點上的寫操作確認。 這是MongoDB默認的寫操作。 |
0 | 關閉基本的寫操作確認,但返回socket異常和網(wǎng)絡錯誤信息給應用。 如果你關閉了基本的寫操作確認,但卻要求日志提交確認(journal commit acknowledgement),那么日志提交會占優(yōu)勢,進而服務器會要求mongod對寫操作進行確認。 |
保證寫操作已成功傳播至指定數(shù)量的副本集成員(包括主節(jié)點)。 例如,w: 2表示要求主節(jié)點和至少一個從節(jié)點的確認。 如果你將w設置為一個比持有數(shù)據(jù)的副本集成員數(shù)更大的數(shù)值,MongoDB會等待那些不存在的成員變得可用,這意味著MongoDB會無窮盡地阻塞。 |
|
"majority" | 確保寫操作已成功傳播至大部分投票節(jié)點:副本集投票成員中的大部分必須在寫操作成功返回前對寫操作進行確認。這可以讓你避免在應用中對副本集大小做硬編碼的假設。 3.0版本中的修改:在以前的版本中,w: "majority"指的是副本集成員的大部分。 2.6版本中的修改:在主從(Master/Slave)部署中,MongoDB把w: "majority"視作與w: 1是等效的。在更早的版本中,在主從部署中w: "majority"會產(chǎn)生一個錯誤。 |
通過指定標簽集,你可以擁有對 哪些副本集成員必須對寫操作進行確認 細粒度的控制,以滿足需要的寫關注級別。 |
j選項確保mongod實例已將數(shù)據(jù)寫入磁盤上的日志文件。這會確保如果mongod意外關閉了,數(shù)據(jù)也不會丟失。設置為true即啟用journaling。
2.6版本中的修改:對 帶有--nojournal選項運行著的mongod或者mongos指定包含j: true的寫關注現(xiàn)在會報錯。以前的版本會忽略j: true。
注意:
如果在副本集中需要journaled寫關注,只需要寫操作在主節(jié)點上完成日志提交就行了,不用考慮replica acknowledged寫關注。(journaled寫關注只是一種邏輯上的寫關注級別,實際并沒有這個配置項值,組合w和j兩個配置項才能實現(xiàn)用戶期望的寫關注。)
這個選項為寫關注指定一個毫秒數(shù)的時間限制。只有在w大于1時,wtimeout才是可應用的。
wtimeout會導致寫操作在指定的時限之后帶著錯誤返回,即使要求的寫關注最終成功完成。當這些寫操作返回時,MongoDB不會撤銷在寫關注超過wtimeout時限之前已經(jīng)成功執(zhí)行的數(shù)據(jù)修改。
如果你沒有指定wtimeout,而要求的寫關注又無法實現(xiàn),那寫操作將會無窮盡地阻塞下去。指定wtimeout為0等效于不帶wtimeout選項的寫關注。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/18731.html
摘要:對于多文檔操作來說,并未提供多文檔事物或隔離。在間隔過期之前,不會回滾或撤消已做出的修改。僅在將數(shù)據(jù)提交到后才告知客戶端。為了降低操作延遲,也增加了它提交數(shù)據(jù)至日志的頻率。 本文翻譯自 write concern。 注意,本文內(nèi)容適用于MongoDB Manual 3.0.2及以上版本。 Whats write concern 所謂的寫關注就是當向客戶端報告寫操作的成功...
摘要:序本文主要介紹一下如何使用連接遠程數(shù)據(jù)庫這個里頭的就包含了后面不傳參數(shù)則會在命令行提示輸入查看空間占用所有數(shù)據(jù)的總大小所有數(shù)據(jù)占的磁盤大小以為單位以為單位查看集合查詢 序 本文主要介紹一下如何使用mongo shell連接遠程數(shù)據(jù)庫 install curl -o mongodb-linux-x86_64-3.2.4.tgz https://fastdl.mongodb.org/lin...
摘要:我以為是編碼的問題,可能是下的編碼有問題,因為有一個談論這個問題的。其中遇到了也是的問題提到的這個做法很不錯,使用這個參數(shù)確定位置。 從群里獲取了一個超大的json(也就800M),需要導入mongodb,然后遇到了一個問題: $ mongoimport --db weibo --collection data --file test.json 2018-05-09T16:10:22....
摘要:我以為是編碼的問題,可能是下的編碼有問題,因為有一個談論這個問題的。其中遇到了也是的問題提到的這個做法很不錯,使用這個參數(shù)確定位置。 從群里獲取了一個超大的json(也就800M),需要導入mongodb,然后遇到了一個問題: $ mongoimport --db weibo --collection data --file test.json 2018-05-09T16:10:22....
摘要:然而,只提供了最簡單的客戶端選項,且不支持多數(shù)據(jù)源配置。由此而生,除了支持完整的客戶端選項及多數(shù)據(jù)源配置之外,還提供了一些其它的實用功能。配置示例多數(shù)據(jù)源進行多數(shù)據(jù)源配置時,需要明確指定各數(shù)據(jù)源的名稱。 最近在制作一個 spring boot 小應用時使用了 MongoDB,鑒于官方庫的簡陋配置,決定自己造個輪子,源碼發(fā)布在 GitHub Carefree MongoDB,jar 已在...
閱讀 3515·2021-11-15 11:38
閱讀 830·2021-11-08 13:27
閱讀 2243·2021-07-29 14:50
閱讀 2975·2019-08-29 13:06
閱讀 841·2019-08-29 11:22
閱讀 2413·2019-08-29 11:04
閱讀 3505·2019-08-28 18:23
閱讀 894·2019-08-26 13:46