一、 基本結構劃分
從整體上可以將mongodb自底向上劃分為四部分:
1. 基礎資料部分
2. 一般的資料庫操作
3. mongodb提供的操作特性
4. 資料庫架構管理
1. 基礎資料部分
資料庫最終的工作就是把資料儲存,然後在使用者需要的時候以一種方式把資料提出去。因此,所有資料都需要以一種形式儲存到記憶體或者硬碟裡。
在mongodb裡面主要有兩種資料的儲存方式。
bson:類似於乙個有序的json。是資料儲存的基礎,在mongodb中的大部分資料都是用這種資料結構與使用者互動。與一般資料庫不同雖然mongodb也是kv操作讀取資料,但是用一key對應的value可以是不同型別。
gridfs:bson只能儲存最大4mb的資料,當需要儲存大型資料的時候,就需要用gridfs來做儲存了。
2. 一般資料庫操作
作為資料庫應該包含基本的增、刪、改、查功能,並且提供加速基本操作的輔助工具,mongodb同樣也提供了這些基本功能。
動態查詢:基本的增刪改查功能。同時在做這些操作的時候mongodb為這些操作自動優化,如:考慮可以利用的索引,直接從快取中讀取內容等等。
地理位置索引:可以根據距離等位置相關屬性來做索引。
預查詢:在真正執行一條語句前,測試查詢等基本操作的耗時,作為資料庫設計或者語句效率的檢測。
3. mongodb提供的操作特性
同一位置插入資料:與其他資料庫不同,mongodb在真正將資料寫入本地前,做了快取處理,在記憶體中讀寫資料的速度比每次都寫到本地的速度快多了。
map and reduce function:mongodb的特殊資料結構,決定了他可以有與眾不同的特殊資料處理方式。編寫這兩個函式可以完成很多資料庫本身沒有提供的自定義功能。
4. 資料庫架構管理
資料備份:由於mongodb的實時讀取性和記憶體中處理資料的特性,單個mongodb資料庫是很容易造成資料丟失的,為保證資料不丟失或少丟失(實際生產中會丟失),mongodb提供了資料備份和選舉執行主機的機制。(在實際生產中不能需要多台mongodb伺服器共同執行)下圖簡單描述了mongodb的主從機關系。
自動分片:在實際生產中,當資料量過大超過了一台mongodb伺服器所能支援的時候,需要考慮建立乙個mongodb的資料庫集群,每乙個集儲存整體資料的某一部分。下圖簡單描述了乙個mongodbs集群的工作情況:
了解了mongodb的集群方式後,我覺得自底向上對mongodb的原始碼進行閱讀比較好。
原因:1. 先了解基礎的資料結構,對邏輯演算法中出現的資料結構有所了解。
2. 演算法與執行平台無關,集群等功能與執行平台有關。為了不過早的牽絆與系統功能,理解mongodb的設計哲學之後對深層次功能的了解更有利。
3. 在生產優化中,底部的資料結構或者演算法調整可能更容易產生效果。
因此,列出如下幾點閱讀順序:
1. gridfs,bjson
了解基本資料結構
2. 基本搜尋功能
了解對資料的基本處理,輸入輸出規則
3. 索引,搜尋優化
索引的建立和索引是如何提供其強大的輔助搜尋功能的。
4. 資料備份
多台伺服器的副本是如何保持同步的
當主伺服器宕機程式是如何選擇副本伺服器的
當主伺服器恢復後是以什麼策略再次同步資料的
5. 自動分片搜尋
當建立完分片之後,mongodb是如何處理多個伺服器之間的資料跳轉搜尋的。
MongoDB執行計畫分析詳解
mongodb效能分析方法 explain mongodb 3.0之後,explain的返回與使用方法與之前版本有了很大的變化,介於3.0之後的優秀特色和我們目前所使用給的是3.0.7版本,本文僅針對mongodb 3.0 的explain進行討論。3.0 的explain有三種模式,分別是 que...
mongodb基礎結構
mongodb是一種nosql資料庫,不同於非關係型資料庫,沒有表 字段 記錄等概念。mongodb是面向集合 模式自由的文件型資料庫。物理結構也包含資料檔案 日誌檔案等。如 乙個test庫包括乙個test.ns檔案和乙個或乙個以上test.x資料檔案。ll data drwxr xr x.2 ro...
MongoDB(七)MongoDb資料結構
首先,向資料庫插入一條bjson資料 首先是定義文件,然後使用admin使用者名稱密碼登入,進入test資料庫,向test資料庫中插入此文件 表名稱和表中的記錄 插入結果,檢視mongovue如下圖所示 從上圖可以看出系統自帶的三個資料庫,local,admin,test,在加入一條記錄的時候,會自...