Mongodb集群中的分布式讀寫

學習mongodb,體會mongodb的每一個使用細節,歡迎閱讀威贊的文章。這是威贊發布的第81篇mongodb技術文章,歡迎瀏覽本專欄威贊發布的其他文章。如果您認為我的文章對您有幫助或者解決您的問題,歡迎在文章下面點個贊,或者關注威贊。謝謝。

本文簡單介紹Mongodb的分布式操作。mongodb支持復制集和分片集合,本文結合官方文檔,整理介紹復制集和分片結合的數據讀取。

復制集中的數據讀取

默認情況下,應用鏈接到復制集后,從復制集的主節點承擔了客戶端或應用的數據讀寫操作。mongodb允許用于指定參數readpreferences來通過復制集中的其他節點來讀取數據。

同樣用戶可以設置readpreferences參數,將讀取操作轉移到從節點或與主節點最近的節點來實現下面的操作目的

  • 減少多數據中心數據同步的延遲
  • 將大量的讀取操作分配的主節點以外的節點,從而提高讀取數據吞吐量
  • 在從節點做數據備份
  • 當主節點切換時,直到新的主節點選出來以后才可以讀取數據。

在復制集從節點讀取數據時,因為數據變更從主節點同步到從節點需要時間和過程,因此讀取數據的狀態可能不是最新的狀態。同樣因為數據同步的延遲,在從節點中讀取到的數據可能不是單調連續的。客戶端可以使用數據一致性的session設置,保證數據讀取的正確性。當然,使用從節點讀取數據時,客戶端可以按照數據庫連接或操作來設置。用戶可以參考相關的文檔來設定不同的參數。

復制集中的數據寫入

在復制集中,所有的寫入操作都是發生在主節點。主節點執行寫入操作,同時將操作記錄在主節點的操作日志當中。操作日志是一個可重現的順序操作的集合。從節點持續的將操作日志同步到自己的節點,并依據操作日志當中記錄下來的事件,將數據變更同步寫入到自己節點的數據集中。用戶可以指定mongodb主節點通知用戶數據變更完成的方式。比如,當主節點數據寫入完成后,就返回寫入結果給客戶,或者在最近的一個從節點完成后,將數據變更結果返回給客戶。

分片集中數據讀取

分片集允許用戶將數據分成不同的數據塊,保存到分片集的不同節點當中。這種方式對應用和數據庫客戶端來說是透明的。數據分塊保存發生在數據庫集群當中。在復制集當中,用戶的操作是針對集群中的一個mongos服務實例的。mongos服務實例,依據數據分塊時產生的元數據,將請求派發到不同的節點。

當用戶指定具體的數據分片時,mongodb分片集無需再次確認到哪個節點中讀取數據,這樣讀取操作會變得很高效。針對分片集群的查詢應該帶上分片鍵。帶有分片鍵的查詢,mongos可以用過分片元數據將查詢分配到具體的分片節點當中。

對于沒有分片鍵的查詢,mongodb分片集群不得不查詢集群中所有的節點。這樣從每個分片節點收集數據,會變得很低效。在大型分片集群當中,這種分散收集的方式是不可行的。

與復制集類似,分片集在從節點中讀取到的數據可能無法反應數據最新的狀態。在從節點中讀取的數據,也無法保證是單調一致的。用戶可以使用一致性會話,保證數據讀取的一致性。

分片集中數據的寫入

在分片集合中,mongos直接將應用或客戶端發過來的數據寫到對應的數據分片中。mongos通過元數據配置庫,找到數據應該寫入的節點,將寫入數據的操作派發到該節點。

Mongodb依據用戶指定的分片鍵,將數據分成不同的數據塊。然后將這些數據塊保存到不同的分片節點中。分片鍵決定了數據塊寫入的節點。mongodb分片集寫入數據時,會影響集群的性能。

mongodb數據更新單個文檔數據時,必須要包含分片鍵或主鍵。多文檔數據的更新時,帶有分片鍵在某些情況下會提高效率。多文檔數據更新也有可能被發到每一個分片服務上。

如果分片鍵的值每個插入操作都增加或減少,那么所有的這些插入操作會產生一個新的數據分片。這樣來說,單個插入操作的容量,就會被限制為分片的容量。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38570.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38570.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38570.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

互聯網摸魚日報(2024-07-01)

互聯網摸魚日報(2024-07-01) 36氪新聞 最前線 | 孚能科技廣州基地投產,年產能30GWh,主推SPS大軟包產品 本周雙碳大事:800億元“風光火儲”大項目來了;光伏巨頭SolarEdge股價驟跌20%;韓國電池廠大火,鋰電安…

目標檢測算法的優缺點

目標檢測算法在計算機視覺領域具有廣泛的應用,其優缺點因算法類型和具體實現而有所不同。以下是對一些主流目標檢測算法優缺點的概述: 1. 傳統目標檢測算法 優點: 模型簡單:傳統目標檢測算法通常基于手工設計的特征和分類器&am…

Java進階學習|Day3.Java集合類(容器),Stream的使用,哈希初接觸

java集合類(容器) Java中的集合類主要由Collection和Map這兩個接口派生而出,其中Collection接口又派生出三個子接口,分別是Set、List、Queue。所有的Java集合類,都是Set、List、Queue、Map這四個接口的實現類&#xf…

Powershell 簡易爬蟲,提取種子網站的磁力鏈接

目錄 一. 需求二. 分析2.1 思路分析2.2 技術點 三. 代碼四. 效果 一. 需求 ?有網站如下所示,先要求從按照關鍵詞搜索到的網頁中,提取出所有的磁力鏈接。 二. 分析 2.1 思路分析 打開網頁之后,從網頁中先提取出所有的標題相關的url然后再打…

linux驅動部分內容整理

文章目錄 Linux驅動概念應用程序調用驅動程序流程驅動模塊的加載linux設備號加載和卸載注冊新字符設備注冊設備節點自動創建設備節點編譯編譯驅動程序編譯應用程序 地址映射ioctrl命令碼的解析 并發與競爭原子操作自旋鎖信號量互斥體 linux中斷DMA映射其它printkmemcpyvolatile…

如何在ubuntu上安裝ros-noetic?

如何在ubuntu上安裝ros-noetic? 1. 源由2. 快速安裝3. ROS學習 1. 源由 圍繞ros-noetic這個系統,前面已經有不少談及: Linux 35.5 JetPack v5.1.3ros-noetic安裝Linux 35.5 JetPack v5.1.3Fast-Planner編譯安裝Linux 35.5 JetPack v5.1.…

RocketMQ常用基本操作

文章中的rabbitmq使用的是rocketmq-all-5.1.3-bin-release版本,需要安裝包的可自行下載 RockerMQ啟動停止命令 啟動命令 nohup sh bin/mqnamesrv & nohup sh bin/mqbroker -n localhost:9876 --enable-proxy & 查看日志 tail -f ~/logs/rocketmqlogs/…

多線程編程的挑戰與解決方案

多線程編程的挑戰與解決方案 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 1. 多線程編程的挑戰 在現代軟件開發中,多線程編程成為處理并發任務…

PatchTST創新點

這篇論文的創新點主要集中在PatchTST模型的設計和應用中。以下是對其創新點的詳細說明: 創新點 頻道獨立補丁設計:PatchTST模型通過將多變量時間序列分割成不同的頻道,每個頻道作為單變量時間序列處理。每個頻道獨立地通過實例歸一化操作和補…

明星中藥企業系列洞察(九)一手好牌打的稀爛!近500年老字號鎖定退市,太安堂為何“塌房”了?

近日,太安堂發布公告稱,公司已收到深交所下發的《關于廣東太安堂藥業股份有限公司股票終止上市的決定》,深交所決定終止公司股票上市,預計其最后交易日期為7月4日。太安堂曾作為國內知名的中成藥上市公司之一,是國家級…

matlab仿真 通信信號和系統分析(上)

(內容源自詳解MATLAB/SIMULINK 通信系統建模與仿真 劉學勇編著第三章內容,有興趣的讀者請閱讀原書) 一、求離散信號卷積和 主要還是使用卷積函數conv,值得注意的是,得到的卷積和長度結果為81&#xff0…

node.js+uniapp(vue),阿里云短信驗證碼

reg.vue: 思路是&#xff1a;前端調用獲取驗證碼的接口 > 后端生成驗證碼返回給前端 > 前端渲染驗證碼 <template> <div> <input class"sl-input" v-model"phone" type"tel" maxlength"11" placeholder"手…

微信小程序畢業設計-微信食堂線上訂餐系統項目開發實戰(附源碼+論文)

大家好&#xff01;我是程序猿老A&#xff0c;感謝您閱讀本文&#xff0c;歡迎一鍵三連哦。 &#x1f49e;當前專欄&#xff1a;微信小程序畢業設計 精彩專欄推薦&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python畢業設計…

【在線評論】不同視角下在線評論對客戶滿意度和推薦度的影響—推文分析—2024-07-01

今天的推文主題是【在線評論】&#xff0c;重點關注可以關注第四篇&#xff0c;很全面地分析了在線評論的信息多維性。 第一篇從客戶的在線評論入手&#xff0c;將客戶消費的動機為功利、享受、社會滿足&#xff1b;第二篇是關于在線評論對消費者再次選擇同一家酒店的機制探索…

MySQL之主從同步、分庫分表

1、主從同步的原理 MySQL主從復制的核心是二進制日志 二進制日志&#xff08;binlog&#xff09;記錄了所有DDL語句和DML語句&#xff0c;但不包括數據查詢&#xff08;select、show&#xff09;語句。 1.1、復制分三步 master主庫在事務提交時&#xff0c;會把數據變更記錄…

電子戰學習筆記01:電子戰概論

0、寫在文前 本人在學習電子戰相關理論知識時&#xff0c;一直感覺無從下手&#xff0c;之后在老師的推薦下購買了《EW101&#xff1a;電子戰基礎》紙質書籍學習&#xff0c;所以將自己的學習筆記在CSDN上記錄一下&#xff0c;也供有需要的同學參考。 1、電子戰定義 電子戰&…

Spring Boot與Apache Kafka集成的深度指南

Spring Boot與Apache Kafka集成的深度指南 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在現代分布式系統中&#xff0c;消息隊列的作用愈發重要&#xff0…

【鴻蒙學習筆記】鴻蒙ArkTS學習筆記

應用開發導讀&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-dev-guide-V5 【鴻蒙培訓】第&#xff11;天?環境安裝 【鴻蒙培訓】第&#xff12;天?裝飾器?組件和頁面生命周期 【鴻蒙學習筆記】數據類型 【鴻蒙學習筆記】運算…

Spring Cloud中的服務發現與注冊

Spring Cloud中的服務發現與注冊 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討Spring Cloud中的服務發現與注冊&#xff0c;這是微服務架構中至…

全網最詳細的 gin框架請求數據綁定Bind 源碼解析 -- 幫助你全面了解gin框架的請求數據綁定原理和方法

在gin框架中&#xff0c;我們可以將多種請求數據&#xff08;json, form,uri&#xff0c;header等&#xff09;直接綁定到我們定義的結構體&#xff0c;底層是通過反射方式獲取我們定義在結構體上面的tag來實現請求數據到我們的結構體數據的綁定的。 在gin的底層有2大體系的數據…