国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MongoDB讀數(shù)據(jù)策略

數(shù)據(jù)庫(kù) MariaDB
對(duì)于primary來(lái)說(shuō),當(dāng)secondary 節(jié)點(diǎn)的oplog發(fā)生變化時(shí),會(huì)通過(guò)命令將 oplog 進(jìn)度立即通知給 primary,同時(shí)節(jié)點(diǎn)間的心跳消息里也會(huì)包含最新 oplog 的信息。這樣primary 節(jié)點(diǎn)能很快知道數(shù)據(jù)是否已經(jīng)同步到大多數(shù)節(jié)點(diǎn)的,并更新 snapshot 的狀態(tài)。比如當(dāng)t2已經(jīng)寫入到大多數(shù)據(jù)節(jié)點(diǎn)時(shí),snapshot1、snapshot2都可以更新為 commited 狀態(tài)。

MongoDB是開(kāi)源文檔型NoSQL數(shù)據(jù)庫(kù),它的數(shù)據(jù)模型靈活,具有高擴(kuò)展性、高可用性、易用性等特點(diǎn),能夠存儲(chǔ)半結(jié)構(gòu)化的數(shù)據(jù),并且有豐富的查詢語(yǔ)言和索引類型,當(dāng)前MongoDB已廣泛的用在各企業(yè)的核心業(yè)務(wù)系統(tǒng)中。MongoDB也是db-engines排名最高的非關(guān)系型數(shù)據(jù)庫(kù)。

圖片

圖片來(lái)源:db-engines

在MongoDB讀取數(shù)據(jù)主要是受read concern(讀策略)、read preference (讀偏好設(shè)置 )兩個(gè)參數(shù)控制,其中readconcern決定在讀取副本集和分片集數(shù)據(jù)時(shí)的一致性和隔離性,而readpreference 決定客戶端驅(qū)動(dòng)讀取哪個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)。它們的配合使用,可以提高M(jìn)ongoDB 集群的性能,以及在數(shù)據(jù)一致性和讀性能上做平衡。

readconcern 一致性讀策略

Readconcern 主要解決臟讀問(wèn)題,從3.2版本后開(kāi)始支持。比如PSA集群,用戶從 MongoDB 的 primary 上讀取數(shù)據(jù)后,這條數(shù)據(jù)并沒(méi)有同步從數(shù)節(jié)點(diǎn),然后 primary 就故障了。此時(shí)不同的Readconcern值,MongoDB 返回?cái)?shù)據(jù)的處理方式是不同的。

Readconcern有幾個(gè)不同的參數(shù),分別是local、available、majority、linearizable、snapshot ,數(shù)據(jù)庫(kù)在這些參數(shù)下的一致性是由弱到強(qiáng)遞增的。

?幾種模式介紹?

  • Local

表示讀取的數(shù)據(jù)從實(shí)例中返回?cái)?shù)據(jù),但不保證數(shù)據(jù)是否被持久化(即可能被回滾)。該參數(shù)默認(rèn)值為local。

  • Available

表示讀取的數(shù)據(jù)從實(shí)例中返回?cái)?shù)據(jù),但不保證數(shù)據(jù)是否被持久化(即可以回滾)。乍一看available和local沒(méi)有啥區(qū)別,對(duì)于副本集架構(gòu)兩者是相同的,主要區(qū)別場(chǎng)景是分片群集。在分片集群下,數(shù)據(jù)遷移會(huì)出現(xiàn)孤兒文檔(orphaned document),available模式可以從延遲最低的節(jié)點(diǎn)獲取數(shù)據(jù),而local則直接返回?cái)?shù)據(jù)。該參數(shù)是3.6版的新功能。

  • Majority

表示讀取返回多數(shù)副本集成員已確認(rèn)的數(shù)據(jù),這個(gè)數(shù)據(jù)是持久化的不會(huì)被回滾。需要注意,在Majority下只能保證讀到的數(shù)據(jù)“不會(huì)發(fā)生回滾”,但并不能保證讀到的數(shù)據(jù)一定是最新的,官方也明確做了說(shuō)明。

Regardless of the read concern level, the most recent data on a node may not reflect the most recent version of the data in the system。

  • linearizable

線性讀取數(shù)據(jù)。根據(jù)官方資料翻譯成中文:該查詢返回的數(shù)據(jù),反映了在讀取操作開(kāi)始之前完成的所有成功的多數(shù)確認(rèn)寫入。查詢可能會(huì)等待并發(fā)執(zhí)行的寫操作傳播到大多數(shù)副本集成員,然后返回結(jié)果。也就是在這種模式下,讀可能需要等待其他寫操作完成。

  • snapshot

從最新的快照中讀取數(shù)據(jù)。如果事務(wù)不是因果一致的會(huì)話的一部分,并且數(shù)據(jù)的寫入?yún)?shù)writeconcern 值也是majority下,那將從多數(shù)提交數(shù)據(jù)的快照中讀取數(shù)據(jù)。

一般在生產(chǎn)推薦配置成Majority,這種模式是在數(shù)據(jù)安全和性能上相對(duì)平衡的選擇,但是使用Majority也有要求和問(wèn)題。首先它只支持WiredTiger引擎,其次需要寫入?yún)?shù)writeconcern 也是majority 才會(huì)生效,最后在Majority下也不能完全保證解決了臟讀問(wèn)題。

?Majority 實(shí)現(xiàn)?

MongoDB 在readconcern majority 下,數(shù)據(jù)庫(kù)會(huì)起一個(gè)單獨(dú)的snapshot 線程,周期性的對(duì)當(dāng)前的數(shù)據(jù)集進(jìn)行 snapshot,并記錄 snapshot 最新 oplog的時(shí)間戳,得到一個(gè)映射表。

最新 oplog 時(shí)間戳

snapshot

狀態(tài)

t0

snapshot0

committed

t1

snapshot1

uncommitted

t2

snapshot2

uncommitted

t3

snapshot3

uncommitted

當(dāng) oplog 同步到大多數(shù)節(jié)點(diǎn)時(shí),對(duì)應(yīng)節(jié)點(diǎn)的 snapshot 才會(huì)標(biāo)記為 commmited,用戶讀取時(shí),從最新的 commited 狀態(tài)的 snapshot 讀取數(shù)據(jù),就能保證讀到的數(shù)據(jù)一定已經(jīng)同步到的大多數(shù)節(jié)點(diǎn)。那如何判斷oplog 已經(jīng)同步到大多數(shù)節(jié)點(diǎn)?

對(duì)于primary來(lái)說(shuō),當(dāng)secondary 節(jié)點(diǎn)的oplog發(fā)生變化時(shí),會(huì)通過(guò)命令將 oplog 進(jìn)度立即通知給 primary,同時(shí)節(jié)點(diǎn)間的心跳消息里也會(huì)包含最新 oplog 的信息。這樣primary 節(jié)點(diǎn)能很快知道數(shù)據(jù)是否已經(jīng)同步到大多數(shù)節(jié)點(diǎn)的,并更新 snapshot 的狀態(tài)。比如當(dāng)t2已經(jīng)寫入到大多數(shù)據(jù)節(jié)點(diǎn)時(shí),snapshot1、snapshot2都可以更新為 commited 狀態(tài)。

對(duì)于secondary 節(jié)點(diǎn)來(lái)說(shuō),在拉取 oplog 時(shí),primary 節(jié)點(diǎn)會(huì)將“最新的數(shù)據(jù)已同步到大多數(shù)節(jié)點(diǎn)的”的信息返回給 secondary 節(jié)點(diǎn),然后secondary 節(jié)點(diǎn)通過(guò)這個(gè)oplog時(shí)間戳來(lái)更新自身的 snapshot 狀態(tài)。

readpreference 讀偏好設(shè)置

MongoDB 讀控制策略除了readconcern策略外,還有readpreference 。它主要控制數(shù)據(jù)庫(kù)客戶端驅(qū)動(dòng)從哪個(gè)節(jié)點(diǎn)讀取數(shù)據(jù)。這個(gè)特性可以方便地實(shí)現(xiàn)讀寫分離、就近讀取等策略。

圖片

readpreference 是由三部分組成,分別是mode、maxStalenessSeconds 、tag set,其中mode支持五種類型,分別是:primary、primaryPreferred、Secondary、secondaryPreferred、nearest,我們先看幾種模式的具體含義。

?幾種模式介紹?

  • primary

默認(rèn)模式。讀操作只在主節(jié)點(diǎn),如果主節(jié)點(diǎn)不可用,報(bào)錯(cuò)或者拋出異常。這種策略適用于應(yīng)用程序需要嚴(yán)格的一致性,但可用性不是首要考慮因素的情況。

  • primaryPreferred

大多情況下讀操作在主節(jié)點(diǎn),如果主節(jié)點(diǎn)不可用,如故障轉(zhuǎn)移,讀操作在從節(jié)點(diǎn)。

  • secondary

僅從secondary節(jié)點(diǎn)中讀取,如果secondary節(jié)點(diǎn)不可用,讀將會(huì)報(bào)錯(cuò)。

  • secondaryPreferred

大多情況下讀操作在從節(jié)點(diǎn),特殊情況(如沒(méi)有從節(jié)點(diǎn))讀操作在主節(jié)點(diǎn)。

  • nearest

根據(jù)指定的延遲閾值,隨機(jī)地從符合條件的數(shù)據(jù)節(jié)點(diǎn)中讀取操作,不管該節(jié)點(diǎn)是主還是從節(jié)點(diǎn)。

?maxStalenessSeconds?

MongoDB 3.4 以后版本新增maxStalenessSeconds參數(shù)。集群的從節(jié)點(diǎn)可能因?yàn)榫W(wǎng)絡(luò)阻塞、磁盤吞吐低、長(zhǎng)時(shí)間執(zhí)行等原因,使從節(jié)點(diǎn)落后于主節(jié)點(diǎn)。當(dāng)從節(jié)點(diǎn)延遲時(shí)間超過(guò)了該參數(shù)定義的值,客戶端不會(huì)從該節(jié)點(diǎn)讀取數(shù)據(jù)。maxStalenessSeconds 不能與primary 模式兼容,只能在其他四種模式下使用。

當(dāng)選擇了使用該參數(shù)控制讀取數(shù)據(jù),客戶端會(huì)通過(guò)比較從節(jié)點(diǎn)和主節(jié)點(diǎn)的最后一次寫時(shí)間來(lái)估計(jì)從節(jié)點(diǎn)的過(guò)期程度??蛻舳藭?huì)把連接指向小于等于maxStalenessSeconds的從節(jié)點(diǎn)。另外,需要注意maxStalenessSeconds最小值是90秒,如果小于該值將報(bào)錯(cuò)。

You must specify a maxStalenessSeconds value of 90 seconds or longer: specifying a smaller maxStalenessSeconds value will raise an error.

?標(biāo)簽集?

如果一個(gè)復(fù)制集中的成員有tag,就可以通過(guò)下面的辦法讀取到帶有具體標(biāo)簽的成員上。例如,如果某個(gè)節(jié)點(diǎn)有這樣的成員標(biāo)簽:

{ "region": "South", "datacenter": "A" }
那么以下tag set可以將讀操作指到上述成員(或具有相同標(biāo)記的其他成員):
[ { "region": "South", "datacenter": "A" }, { } ]     // Find members with both tag values. If none are found, read from any eligible member.
[ { "region": "South" }, { "datacenter": "A" }, { } ] // Find members with the specified region tag. Only if not found, then find members with the specified datacenter tag. If none are found, read from any eligible member.
[ { "datacenter": "A" }, { "region": "South" }, { } ] // Find members with the specified datacenter tag. Only if not found, then find members with the specified region tag. If none are found, read from any eligible member.
[ { "region": "South" }, { } ] // Find members with the specified region tag value. If none are found, read from any eligible member.
[ { "datacenter": "A" }, { } ] // Find members with the specified datacenter tag value. If none are found, read from any eligible member.
[ { } ] // Find any eligible member.

?訪問(wèn)案例?

總結(jié)上面的內(nèi)容,可以通過(guò)下面三種方式去定義不同的readpreference策略。

復(fù)制集訪問(wèn)方式:
mongodb://db0.test.com,db1.test.com,db2.test.com/?replicaSet=myRepl&readPreference=secondaryPreferred&maxStalenessSecnotallow=150
分片集群方式:
mongodb://mongos1.test.com,mongos2.test.com/?readPreference=secondaryPreferred&maxStalenessSecnotallow=150
帶tag的定式:
mongodb://mongos1.test.com/?readPreference=secondaryPreferred&readPreferenceTags=dc:ny,rack:r1&readPreferenceTags=dc:ny&readPreferenceTags=xxx

總結(jié)

通過(guò)上文介紹,我們知道MongoDB讀數(shù)據(jù)策略,有readconcern和readpreference兩個(gè)重要的概念。其中readconcern是讀數(shù)據(jù)時(shí)的數(shù)據(jù)一致性級(jí)別,它決定了決定讀取數(shù)據(jù)時(shí)讀到什么樣的數(shù)據(jù)。通常結(jié)合可用性和性能,會(huì)將readconcern設(shè)置為majority。而readpreference決定讀哪個(gè)節(jié)點(diǎn)的數(shù)據(jù),主要用于實(shí)現(xiàn)讀寫分離上。另外,MongoDB還提供了其他的配置選項(xiàng),如寫數(shù)據(jù)策略(writeconcern)這將在后面的文章中介紹。

作者介紹

司馬遼太杰是 NineData 工程師。NineData 向企業(yè)和個(gè)人提供高效、安全的數(shù)據(jù)庫(kù)SQL開(kāi)發(fā)、數(shù)據(jù)庫(kù)備份、數(shù)據(jù)復(fù)制/遷移/集成、數(shù)據(jù)對(duì)比等能力的產(chǎn)品,它是開(kāi)箱即用的SaaS服務(wù),可以快速提升企業(yè)SQL開(kāi)發(fā)效率,保障企業(yè)數(shù)據(jù)安全。近期,NineData 即將會(huì)支持MongoDB、Redis等NoSQL數(shù)據(jù)庫(kù)。NineData 官網(wǎng)地址:??https://ninedata.cloud??。

本文轉(zhuǎn)載自微信公眾號(hào)「云數(shù)據(jù)庫(kù)技術(shù)」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系云數(shù)據(jù)庫(kù)技術(shù)公眾號(hào)。

責(zé)任編輯:武曉燕 來(lái)源: 云數(shù)據(jù)庫(kù)技術(shù)
相關(guān)推薦

2023-03-09 11:32:00

MongoDB數(shù)據(jù)策略

2017-07-07 10:55:14

數(shù)據(jù)庫(kù)MongoDB設(shè)計(jì)模式

2011-06-02 09:42:08

數(shù)據(jù)防泄漏數(shù)據(jù)泄漏防護(hù)

2024-09-28 10:50:08

數(shù)據(jù)飛輪數(shù)據(jù)中臺(tái)數(shù)據(jù)技術(shù)

2023-08-03 07:39:10

MongoDB數(shù)據(jù)備份

2016-11-02 12:47:51

數(shù)據(jù)流動(dòng)大數(shù)據(jù)

2023-01-14 07:55:03

2010-11-10 15:55:08

SQL Server存

2022-07-28 11:33:23

數(shù)據(jù)分析經(jīng)驗(yàn)

2012-11-30 11:12:03

2023-09-01 10:20:05

數(shù)據(jù)庫(kù)解密

2016-11-14 10:17:41

2023-10-26 10:59:13

2020-11-25 08:00:00

數(shù)據(jù)分析人工智能技術(shù)

2022-11-29 09:59:08

2015-08-07 10:09:01

2018-04-25 14:42:00

決勝策略數(shù)據(jù)

2023-07-24 09:00:00

數(shù)據(jù)庫(kù)

2019-06-24 15:00:52

數(shù)據(jù)遷移數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)集成
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久99精品久久久久久久久久久久| 国产精品一区电影| 综合久久十次| 全部孕妇毛片丰满孕妇孕| 在线观看国产成人av片| 日韩精品福利网| 幼a在线观看| 91免费电影网站| 国产精品国产自产拍高清av王其| 亚洲成人免费| 欧美久久香蕉| 亚洲欧洲黄色网| 国产农村妇女毛片精品久久莱园子 | 最新精品国偷自产在线| 91色国产在线| 久久国产精品电影| 久久综合狠狠综合久久综合88| 日本一区精品视频| 国产高潮av| 不卡视频一区| 亚洲综合第一| 成人不卡视频| 日韩av一区二区在线影视| 黄色网址在线免费播放| 亚洲图片都市激情| 久久精品久久久久久国产 免费| 国产精品色一区二区三区| 9999国产精品| 国产探花在线观看| 男人的天堂99| 91丨九色丨国产在线| 欧美一区日韩一区| 99国产一区二区三精品乱码| 国产精品中文字幕亚洲欧美| 成年人在线视频| 午夜视频在线观看韩国| 精品久久久久久久久久| 亚洲www在线| 欧美一区二区美女| 久久综合一区二区| 中文不卡在线| 另类专区亚洲| 毛片手机在线观看| 欧洲高清一区二区| 萌白酱国产一区二区| 欧美性xxxxx极品娇小| 国产一区二区三区四区五区美女 | 琪琪亚洲精品午夜在线| 91精品国产91久久综合桃花| 欧美日韩xxxx| 亚洲综合在线网站| 日韩视频在线观看| 久久精品99久久| www.日韩不卡电影av| 精品福利一区二区| 国产成人精品1024| 五月开心六月丁香综合色啪 | 久久这里只有精品8| 国产精品专区第二| 亚洲男人天堂古典| 亚洲理论在线观看| 国产一区视频在线看| 国产欧美一区| 欧美性片在线观看| 九色在线观看视频| 久久久久久久少妇| 亚洲丝袜精品| 亚洲激情综合网| 国产呦萝稀缺另类资源| 一区二区三区资源| 亚洲天堂网在线观看| 91精品在线国产| 亚洲午夜视频在线| 国产在线播放一区二区三区| 精品久久网站| 3d欧美精品动漫xxxx无尽| 日本女优北野望在线电影| 最新欧美日韩亚洲| 成人写真福利网| 亚洲视频在线免费| 成人app下载| 日韩色淫视频| aaa在线免费观看| 一级在线免费视频| 国产91av视频在线观看| 国产精品黄视频| 日韩中文视频免费在线观看| 欧美福利电影网| 伊人一区二区三区| 99综合电影在线视频| 日一区二区三区| 欧美在线看片| 秋霞蜜臀av久久电影网免费 | 久久久蜜桃一区二区人| 欧美欧美欧美欧美首页| 亚洲乱码视频| 亚洲综合免费观看高清完整版 | 欧洲精品99毛片免费高清观看| 麻豆影院在线| 中国一级特黄毛片大片| 成人在线看视频| 亚洲精品在线视频观看| 97人人模人人爽人人少妇| 日本成人免费在线| 欧美激情极品视频| 神马国产精品影院av| 精品视频—区二区三区免费| 欧美狂野另类xxxxoooo| 日韩欧美成人网| 亚洲午夜久久久| 亚洲欧美日韩成人高清在线一区| 久久亚洲精华国产精华液| 国产成人自拍网| 国产在线精品免费av| 蜜臀av在线播放一区二区三区| 国产欧美三级| 在线精品观看| 影音先锋久久精品| 亚洲视频高清| 激情综合网址| 欧美精品一卡| 狠色狠色综合久久| 欧美午夜不卡| 欧美欧美全黄| 欧美日韩国产高清| 狠狠爱www人成狠狠爱综合网 | 亚洲欧美一区二区久久| 亚洲国产激情av| 国产欧美日韩视频在线观看| 97久久超碰国产精品| 97久久超碰国产精品电影| 日韩成人在线资源| 国产色播av在线| 美腿丝袜亚洲三区| 久久久久国产精品免费网站| 欧美午夜片欧美片在线观看| 亚洲激情中文1区| 小小水蜜桃在线观看| 影音先锋亚洲精品| 精品99一区二区三区| 亚洲一区二区在线看| 东京久久高清| 久久久久久久综合| 久久人人爽国产| 亚洲一区二区三区影院| 亚洲柠檬福利资源导航| 中文字幕一区二区在线观看| 亚洲三级免费电影| 亚洲成人动漫精品| 色综合中文综合网| 欧美性欧美巨大黑白大战| 欧美性三三影院| 欧美大片在线观看| 亚洲一级一级97网| 欧美激情videoshd| 国产精品入口免费视| 成人h猎奇视频网站| 国产乱码精品一区二区三区不卡| 久久国产精品精品国产色婷婷| 亚洲午夜精品一区二区| 男人的天堂狠狠干| 成人免费视频77777| 九色porny在线观看| 最新国产在线观看| 黄在线观看免费网站ktv| 成人日韩视频| 国产欧美日韩影院| 亚洲国产欧美国产综合一区| 三级久久三级久久| 成人一区二区视频| 伊人一区二区三区| 欧美日韩午夜精品| 亚洲天堂av高清| 久久久亚洲福利精品午夜| 成人免费自拍视频| 亚洲一区三区视频在线观看| 人妻久久久一区二区三区| 免费特级黄毛片| 91三级在线| 97色婷婷成人综合在线观看| 欧美三级伦理在线| 亚洲综合激情| 久久久久久毛片| 欧美性猛片xxxx免费看久爱| 亚洲男人天堂2019| 日本一区二区三区四区视频| 精品高清视频| 少妇高清精品毛片在线视频| 午夜成在线www| 91桃色在线| 亚洲视频分类| 亚洲少妇自拍| 久久精品一区蜜桃臀影院| 欧美日韩一区二区精品| 亚洲人a成www在线影院| 日本不卡免费高清视频| 好看的日韩精品| 人妻无码视频一区二区三区| 头脑特工队2在线播放| 欧美黄色三级|