天天看點

MongoDB進階之路:不僅僅是技術研究,還有優化和最佳實踐

MongoDB是一個基于分布式檔案存儲的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充的高性能資料存儲解決方案。

MongoDB是一個介于關系資料庫和非關系資料庫之間的産品,是非關系資料庫當中功能最豐富,最像關系資料庫的。他支援的資料結構非常松散,是類似json的bson格式,是以可以存儲比較複雜的資料類型。Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似于面向對象的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。

本文将從操作手冊、技術研究、會議分享、場景應用等方向給大家推薦幹貨好文。

一. 操作手冊

MongDB操作手冊

快速入門旨在幫助您快速建立MongoDB執行個體、對執行個體進行基本設定以及連接配接執行個體資料庫,讓您知曉從購買MongoDB執行個體到開始使用執行個體的基本流程。

點選閱讀詳情

MongDB視訊教程

1.白名單設定及連接配接

2.備份與恢複

3.監控與報警

4.執行個體建立

5.網絡類型切換

二. 技術研究

1.MongoDB Driver:使用正确的姿勢連接配接複制集

MongoDB複制集(Replica Set)通過存儲多份資料副本來保證資料的高可靠,通過自動的主備切換機制來保證服務的高可用。但需要注意的時,連接配接副本集的姿勢如果不對,服務高可用将不複存在。

2.MongoDB Driver:使用正确的姿勢連接配接分片叢集

雲資料庫 MongoDB 版 基于飛天分布式系統和高性能存儲,提供三節點副本集的高可用架構,容災切換,故障遷移完全透明化。

3.MongoDB雲資料庫常見問題診斷

重要的内容 MongoDB的主備節點在運作過程中是不固定的,執行個體重新開機、更新、節點故障等都有可能導緻主備切換,在生産環境應該使用副本集的方式來正确連接配接MongoDB來實作高可用。 連接配接問題 使用者可通過DMS或mongo shell連接配接MongoDB雲資料庫,以下場景都基于使用者使用mongo shell連接配接資料庫。

4.MongoDB疑難雜症分析及優化

本文主要介紹阿裡雲 MongoDB 資料庫上客戶遇到的問題,及相應的解決方案。

5.MongoDB複制集原理

複制集簡介 Mongodb複制集由一組Mongod執行個體(程序)組成,包含一個Primary節點和多個Secondary節點,Mongodb Driver(用戶端)的所有資料都寫入Primary,Secondary從Primary同步寫入的資料,以保持複制集内所有成員存儲相同的資料集,提供資料的高可用。

6.MongoDB複制集同步原了解析

MongoDB副本集資料同步](docs.mongodb/manual/core/replica-set-sync/)主要包含2個步驟 intial sync,可以了解為全量同步 replication,追同步源的oplog,可以了解為增量同步 本文是對MongoDB高可用複制集原理的補充,會詳細介紹MongoDB資料同步的實作原理。

7.MongoDB索引原理

MongoDB索引原理 為什麼需要索引? 當你抱怨MongoDB集合查詢效率低的時候,可能你就需要考慮使用索引了,為了友善後續介紹,先科普下MongoDB裡的索引機制(同樣适用于其他的資料庫比如mysql)。

8.MongoDB Sharded cluster架構原理

為什麼需要Sharded cluster? MongoDB目前3大核心優勢:『靈活模式』+ 『高可用性』 + 『可擴充性』,通過json文檔來實作靈活模式,通過複制集來保證高可用,通過Sharded cluster來保證可擴充性。

9.關于MongoDB Sharding,你應該知道的

MongoDB Sharded Cluster 原理 如果你還不了解 MongoDB Sharded cluster,可以先看文檔認識一下 中文簡介:MongoDB Sharded cluster架構原理 英文彙總:docs.mongodb/manual/sharding/

10.MongoDB sharding chunk 分裂與遷移詳解

11.MongoDB Secondary 延時高(同步鎖)問題分析

背景介紹 MongoDB 複制集裡 Secondary 不斷從主上批量拉取 oplog,然後在本地重放,以保證資料與 Primary 一緻。同步原理參考MongoDB複制集同步原了解析 Secondary 拉取到一批 oplog 後,在重放這批 oplog 時,會加一個特殊的 Lock::ParallelBatchWriterMode 的鎖,這個鎖會阻塞所有的讀請求,直到這批 oplog 重放完成。

12.MongoDB dropdatabase 後,資料能恢複麼?

最近好幾個社群使用者咨詢,錯誤的執行了 dropDatabse 把資料庫誤删除了(或 dropCollection 誤删集合),有什麼方法能恢複資料?本文主要介紹幾種可能有效的恢複方案。 方案1:通過備份集恢複 如果對 MongoDB 做了全量備份 + 增量備份,那麼可以通過備份集及來恢複資料。

13.MongoDB請求處理流程

Mongodb多存儲引擎支援機制介紹了Mongodb存儲層建立資料庫、建立集合、插入文檔等資料庫操作接口,本文将介紹mongodb處理用戶端請求的模型。

14.MongoDB使用教程系列文章--Driver原理(初始化)

前言 Driver是MongoDB非常重要的組成部分,通過不同的配置實作Secondary通路;讀寫分離,動态感覺叢集容災切換等功能。MongoDB目前已經覆寫了大部分的開發語言,常見的JAVA到Go,可以參考官方連接配接MongoDB Drivers。

15.MongoDB Wiredtiger存儲引擎實作原理

Mongodb-3.2已經WiredTiger設定為了預設的存儲引擎,最近通過閱讀wiredtiger源代碼(在不了解其内部實作的情況下,讀代碼難度相當大,代碼量太大,強烈建議官方多出些介紹文章),理清了wiredtiger的大緻原理,并簡單總結,不保證内容都是正确的,如有問題請指出,歡迎讨論交流。

16.MongoDB mmapv1存儲引擎解析

mongodb的mongod服務管理一個資料目錄,可包含多個DB,每個DB的資料單獨組織,本文主要介紹mmapv1存儲引擎的資料組織方式。

17.圖解故障伺服器下線:關于阿裡雲MongoDB高可用的探秘

伺服器容災一直是雲服務運維過程中無法避開的問題。MongoDB采用的是什麼方法,得以做到在有機器故障的情況下依舊能保證使用者業務的高可用?最近舉行的“MongoDB Sharding杭州使用者交流會”中,針對這一問題,阿裡雲資深研發工程師果實分享了關于MongoDB 故障伺服器如何下線方面的詳盡的技術解密。

18.阿裡雲MongoDB Sharding備份和恢複服務深度解密

大資料時代,資料儲存的重要性不言而喻。在資料儲存過程中,

買QQ平台

資料的備份更是一個值得深入研究的課題。在3月12日下午舉行的MongoDB杭州使用者交流會上,阿裡雲技術專家明俨分享了MongoDB Sharding備份和恢複的技術解密。

三.會議分享

1.MongoDB最佳實踐及性能優化(DTCC中國資料庫技術大會分享PPT)

上周五在北京DTCC分享了「32 Tips to Boost MongoDB Performance」,本文是分享的PPT以及重要内容的注解。 注解:本次分享主要「自底向上」的介紹提升 MongoDB 服務性能需要注意的問題,從硬體、作業系統、服務端一直到應用端,前面3個層次的建議主要面向DBA及運維人員,而最上層的應用開發建議主要面向開發者。

2.MongoDB秒級備份恢複(SDCC上海站資料庫核心技術與應用實戰峰會分享PPT)

本文是我3月18日在CSDN舉辦的SDCC上分享的PPT内容,主要介紹如何對MongoDB複制集及分片叢集實作任意時間點的備份恢複,猛擊這裡下載下傳PDF版本

3.MongoDB最佳實踐及問題案例分析

介紹MongoDB最佳時間以及線上問題的案例分析

4.基于MongoDB的高并發高可用政府雲平台架構實踐

3月12日下午在阿裡巴巴西溪園區,舉行了MongoDB杭州使用者交流會。微軟MSDN特邀講師徐雷分享《基于MongoDB的政府雲平台高并發高可用HA架構實踐 》,從自身實踐出發,講述了政府雲平台分層、技術棧選型、實體架構、API架構及DB資料庫架構的設計思路和方法

5.MongoDB分布式架構演進

文章内容為2016年 PostgresSQL 中國使用者會上分享内容,主要介紹 MongoDB 高可用、可擴充的分布式架構的演進過程。

四.場景應用

1.什麼場景應該用 MongoDB ?

月初在雲栖社群上發起了一個 MongoDB 使用場景及運維管理問題交流探讨 的技術話題,有近5000人關注了該話題讨論,這裡就 MongoDB 的使用場景做個簡單的總結,談談什麼場景該用 MongoDB?

2.MongoDB應用案例:使用 MongoDB 存儲日志資料

線上運作的服務會産生大量的運作及通路日志,日志裡會包含一些錯誤、警告、及使用者行為等資訊,通常服務會以文本的形式記錄日志資訊,這樣可讀性強,友善于日常定位問題,但當産生大量的日志之後,要想從大量日志裡挖掘出有價值的内容,則需要對資料進行進一步的存儲和分析。

3.MongoDB應用案例:使用 MongoDB 存儲商品分類資訊

電商業務一個基本的功能子產品就是存儲品類豐富的商品資訊,各種商品特性、參數各異,MongoDB 靈活的文檔模型非常适合于這類業務,本文主要介紹如何使用 MongoDB 來存儲商品分類資訊,内容翻譯自User case - Product Catalog 關系型資料庫解決方案 上述問題使用傳統的關系型資料庫也可以解決,比如以下幾種方案 針對不同商品,建立不同的表 比如音樂專輯、電影這2種商品,有一部分共同的屬性,但也有很多自身特有的屬性,可以建立2個不同的表,擁有不同的schema。

4.MongoDB資料模組化小案例:朋友圈評論内容管理

MongoDB資料模組化小案例:朋友圈評論内容管理

5.MongoDB資料模組化小案例:物聯網時序資料庫模組化

注:本案例來自MongoDB官方教程PPT,也是一個非常典型的CASE,故此翻譯,并結合目前MongoDB版本做了一些内容上的更新。 本案例非常适合與IoT場景的資料采集,結合MongoDB的Sharding能力,文檔資料結構等優點,可以非常好的解決物聯網使用場景。

6.阿裡雲MongoDB與EMR的HelloWorld

越來越多的應用采用MongoDB作為資料存儲層,性能高,擴充性強,通過WriteCocern參數還可以控制寫入持久級别,CAP上靈活配置。文檔型的存儲結構又是特别适合物聯網,遊戲等領域,這些資料也蘊藏這巨大的價值,就像是金礦一樣,需要挖掘。雖然MongoDB提供了MapReduce功能,但功能相對薄弱,如果說MongoDB MapReduce是鐵鍬,Spark就是一台真正的挖掘機。

7.當物流行業遇見MongoDB

快遞物流系統裡最常見的一種業務類型就是訂單的查詢和記錄。利用MongoDB資料庫能夠幫助企業快速搭建物流快遞系統,助力物流企業輕松上雲

8.天生一對,當遊戲遇上MongoDB

當遊戲遇上MongoDB,會碰撞出什麼樣的火花,本文為您一一道來。MongoDB針對遊戲靈活多變需求、一些專有場景-道具自動過期和附近玩家、高可用、高可擴充、回檔、滾服、營運資料分析等場景都有非常好的解決方案,可謂是天生一對。

五.官網

1.雲資料庫 MongoDB版

雲資料庫MongoDB版支援ReplicaSet和Sharding兩種部署架構,具備安全審計,時間點備份等多項企業能力。在網際網路、物聯網、遊戲、金融等領域被廣泛采用。

2.雲資料庫MongoDB Sharding釋出

支援分表存儲、自建遷移、副本集轉Sharding等

提供容災備份、彈性擴容、監控運維等方案

3.雲資料庫MongoDB獨享執行個體上線

獨享資源,保障業務持久穩定