標籤: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之上的Distributed File System,可以使用mongodb的分區和複製機制,因為Mongodb分配資料空間時以2GB為單位,所以gridfs不產生磁碟片段。
本文出自 “Apple” 部落格,請務必保留此出處http://59465168.blog.51cto.com/5268021/1947902
為什麼使用MongoDB?