教培參考
教育培訓行業(yè)知識型媒體
發(fā)布時間: 2025年05月21日 03:09
面向文檔的數(shù)據(jù)庫系統(tǒng)MongoDB詳解,MongoDB是一個面向文檔的數(shù)據(jù)庫系統(tǒng)。使用C++編寫,不支持SQL,但有自己功能強大的查詢語法。
MongoDB使用BSON作為數(shù)據(jù)存儲和傳輸?shù)母袷?。BSON是一種類似JSON的二進制序列化文檔,支持嵌套對象和數(shù)組。
一、MongoDB很像MySQL,document對應MySQL的row,collection對應MySQL的table應用場景:
1、網(wǎng)站數(shù)據(jù):
mongo非常適合實時的插入,更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復制及高度伸縮性。
2、緩存:
由于性能很高,mongo也適合作為信息基礎設施的緩存層。在系統(tǒng)重啟之后,由mongo搭建的持久化緩存可以避免下層的數(shù)據(jù)源過載。
3、大尺寸、低價值的數(shù)據(jù):
使用傳統(tǒng)的關系數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較貴,在此之前,很多程序員往往會選擇傳統(tǒng)的文件進行存儲。
4、高伸縮性的場景:
mongo非常適合由數(shù)十或者數(shù)百臺服務器組成的數(shù)據(jù)庫。
5、用于對象及JSON數(shù)據(jù)的存儲:
mongo的BSON數(shù)據(jù)格式非常適合文檔格式化的存儲及查詢。
6、重要數(shù)據(jù):
mysql,一般數(shù)據(jù):mongodb,臨時數(shù)據(jù):memcache對于關系數(shù)據(jù)表而言,mongodb是提供了一個更快速的視圖view;而對于PHP程序而言,mongodb可以作為一個持久化的數(shù)組來使用,并且這個持久化的數(shù)組還可以支持排序、條件、限制等功能。
二、將mongodb代替mysql的部分功能,主要一個思考點就是:把mongodb當作mysql的一個view(視圖),view是將表數(shù)據(jù)整合成業(yè)務數(shù)據(jù)的關鍵。比如說對原始數(shù)據(jù)進行報表,那么就要先把原始數(shù)據(jù)統(tǒng)計后生成view,在對view進行查詢和報表。不適合的場景:
1、高度事物性的系統(tǒng):例如銀行或會計系統(tǒng)。傳統(tǒng)的關系型數(shù)據(jù)庫目前還是更適用于需要大量原子性復雜事務的應用程序。
2、傳統(tǒng)的商業(yè)智能應用:針對特定問題的BI數(shù)據(jù)庫會對產(chǎn)生高度優(yōu)化的查詢方式。對于此類應用,數(shù)據(jù)倉庫可能是更合適的選擇。
3、需要SQL的問題
4、重要數(shù)據(jù),關系數(shù)據(jù)
優(yōu)點:
1)弱一致性(最終一致),更能保證用戶的訪問速度
2)文檔結構的存儲方式,能夠更便捷的獲取數(shù)
3)內(nèi)置GridFS,高效存儲二進制大對象(比如照片和視頻)
4)支持復制集、主備、互為主備、自動分片等特性
5)動態(tài)查詢
6)全索引支持,擴展到內(nèi)部對象和內(nèi)嵌數(shù)組
缺點:
1)不支持事務
2)MongoDB占用空間過大,維護工具不夠成熟
微信掃碼關注公眾號
獲取更多考試熱門資料