1. 程式人生 > >為什麽使用MongoDB?

為什麽使用MongoDB?

mongodb 數據庫 nosql

1.為什麽要學習?

項目需要,公司需要通過從以往的日誌記錄以及購買信息中挖掘有價值的信息,數據量大結構復雜;

項目的需求決定要解決數據庫高並發讀寫,海量數據的高效存儲和訪問以及高可擴展和高可用性等問題。

mongoDB(非結構化數據庫)不僅可以處理結構化數據,而且更適合處理非結構化數據(文本、圖像、超媒體等信息)。它突破了關系型數據庫結構定義不易改變而且數據定長的限制,在處理連續信息和非結構化信息中有著關系型數據庫無法比擬的優勢。

MongoDB的優勢:大數據量高性能,易擴展,高可用性,輕松實現大數據量的存儲;完善的Java API,存儲格式時JSON,對JAVA,JS來說非常好處理,運維起來很方便,清晰的版本控制,非常活躍的社區。

關系型數據庫不擅長:大量數據的寫入;字段不固定,表結構變更;簡單查詢需要快速返回結果;

MongoDB在各大互聯網公司廣泛使用,涉及範圍廣,使用簡單。

2.MongoDB都有哪些特性?

面向文檔存儲:BSON

面向集合存儲:易存儲對象類型的數據。

強大的查詢功能:支持豐富的查詢表達式。使用json形式的標記,可以查詢文檔中內嵌的對象及數組。

完整的查詢功能:全索引支持包括內嵌對象及數組。查詢優化器生成高效查詢計劃。

模式自由:集合中的鍵不要求一致,鍵值不要求一致的數據類型。不知道它的任何結構定義

復制(主從復制/副本集)及自動故障轉移:用於故障恢復,讀擴展;Mongo數據庫支持服務器之間的數據復制,支持主從模式 以及服務器之間的相互復制

分片(自動分片):用於負載均衡,寫擴展。支持水平的數據庫集群,動態添加額外的機器

GridsFS:避免文件系統對目錄做文件數目的限制。不會產生磁盤碎片

支持RUBY,PYTHON,JAVA,C++等多語言,多平臺

查詢監視:監視工具用於分析數據庫操作性能

緩存服務:對關系性數據庫數據進行緩存,減少數據壓力

自動處理碎片

三、MongoDB在數據庫中存儲二進制數據的解決方案?

兩種:第一種是像存儲普通數據那樣,將文件轉化為二進制數據存入mongodb,第二種使用gridfs

第一種:先讀取文件內容,然後塞進bson.binary.Binary對象裏,最後像平常那樣寫入數據庫;獲取文件一樣的簡單,像平時那樣查找數據,然後將二進制內容寫入文件即可;

第二種如果是大文件可以使用gridfs

gridfs會把文件分成若幹塊來存儲,每一塊的大小默認為256K,所以,如果是小文件,就不要用gridfs來存儲了,不然會浪費空間的,gridfs是MongoDB之上的分布式文件系統,可以使用mongodb的分片和復制機制,因為Mongodb分配數據空間時以2GB為單位,所以gridfs不產生磁盤碎片。


本文出自 “Apple” 博客,請務必保留此出處http://59465168.blog.51cto.com/5268021/1947902

為什麽使用MongoDB?