當前位置:
首頁 > 最新 > 圖解MongoDB

圖解MongoDB

MongoDB是一個基於分散式文件存儲的資料庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

1

沒有理解?繼續看...

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

2

還不理解吧,來點簡單的 !

通過10張圖來理解什麼是mongoDB

我們可以在網頁中抓取一些基本信息,這些信息就是一個「Document」(區別去file,我將Document定義為「塊」)。這是第一塊內容:

我們還可以抓取其他的網頁信息:

把3個「塊」記錄下來,文件的記錄是按照順序寫入,中間是不會留空的:

如果我們要在「微博」增加版本信息「ver=8.3.1」。由於每個「塊」是按順序寫入的,因為沒有了增加內容的空間。只能將這「塊」複製到最後,增加新的信息後再將原來的「塊」刪除:

如果刪除多了,留的「天窗」也多了,就會影響檢索的速度。我們在上一塊內容里建立指向下一個塊內容的指針,來提高正向檢索的速度。同時下一塊內容也建立指向上一個塊內容的指針,來提高反向檢索的速度:

如果每次要增加內容就需要複製「塊」數據到尾部,再修改,效率是很低下的。可以採用預留區域(Padding)的做法,儘可能少的做數據複製的工作:

數據是這樣寫入硬碟的:寫入硬碟時,往往已經存在了其他文件,寫入的時候並不可能總是按照順序寫的,有的時候需要擠在原來文件之間。這樣會影響寫入和讀取的速度。因為,連續讀寫的效率是最高的:

可以通過預先申請磁碟的空間的做法來解決這個問題。但是,如果申請大了,會造成磁碟的浪費,如果申請小了,就達不到效果。所以採用第一次申請16M,第二次32M,第三次64M...最大申請空間2G。即申請到2G以後,每個文件空間都是2G了:

那文件的內容是怎麼檢索呢?可以通過「二叉樹」來解決這個問題。通過B樹,將每個塊的索引映射到樹的節點上,就可以迅速的檢索到每塊內容:

上面就是mongdb的基本原理和實現方式,您理解了嗎?


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 顧炯的雲世界 的精彩文章:

打「假」區塊鏈應用(1)

TAG:顧炯的雲世界 |