MongoDB介紹

一、前言

  最近開始學習非關係型數據庫MongoDB,卻在博客園上找不到比較系統的教程,很多資料都要去查閱英文網站,效率比較低下。本人不才,藉着自學的機會把心得體會都記錄下來,方便感興趣的童鞋分享討論。部分資源出自其他博客,旨將零散知識點集中到一起,如果有侵犯您的權利,請聯繫[email protected]。大部分內容均系原創,歡迎大家轉載分享,但轉載的同時別忘了註明作者和原文鏈接哦。
二、MongoDB簡介
  MongoDB是一個高性能,開源,無模式的文檔型數據庫,是當前NoSql數據庫中比較熱門的一種。它在許多場景下可用於替代傳統的關係型數據庫或鍵/值存儲方式。Mongo使用C++開發。Mongo的官方網站地址是:http://www.mongodb.org/,讀者可以在此獲得更詳細的信息。
小插曲:什麼是NoSql?
  NoSql,全稱是 Not Only Sql,指的是非關係型的數據庫。下一代數據庫主要解決幾個要點:非關係型的、分佈式的、開源的、水平可擴展的。原始的目的是爲了大規模web應用,這場運動開始於2009年初,通常特性應用如:模式自由、支持簡易複製、簡單的API、最終的一致性(非ACID)、大容量數據等。NoSQL被我們用得最多的當數key-value存儲,當然還有其他的文檔型的、列存儲、圖型數據庫、xml數據庫等。
  特點:
  高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:
·         面向集合存儲,易存儲對象類型的數據。
·         模式自由。
·         支持動態查詢。
·         支持完全索引,包含內部對象。
·         支持查詢。
·         支持複製和故障恢復。
·         使用高效的二進制數據存儲,包括大型對象(如視頻等)。
·         自動處理碎片,以支持雲計算層次的擴展性
·         支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++語言的驅動程序,社區中也提供了對Erlang及.NET等平臺的驅動程序。
·         文件存儲格式爲BSON(一種JSON的擴展)。
·         可通過網絡訪問。
  功能:
·         面向集合的存儲:適合存儲對象及JSON形式的數據。
·         動態查詢:Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
·         完整的索引支持:包括文檔內嵌對象及數組。Mongo的查詢優化器會分析查詢表達式,並生成一個高效的查詢計劃。
·         查詢監視:Mongo包含一個監視工具用於分析數據庫操作的性能。
·         複製及自動故障轉移:Mongo數據庫支持服務器之間的數據複製,支持主-從模式及服務器之間的相互複製。複製的主要目標是提供冗餘及自動故障轉移。
·         高效的傳統存儲方式:支持二進制數據及大型對象(如照片或圖片)
·         自動分片以支持雲級別的伸縮性:自動分片功能支持水平的數據庫集羣,可動態添加額外的機器。
  適用場合:
·         網站數據:Mongo非常適合實時的插入,更新與查詢,並具備網站實時數據存儲所需的複製及高度伸縮性。
·         緩存:由於性能很高,Mongo也適合作爲信息基礎設施的緩存層。在系統重啓之後,由Mongo搭建的持久化緩存層可以避免下層的數據源過載。
·         大尺寸,低價值的數據:使用傳統的關係型數據庫存儲一些數據時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統的文件進行存儲。
·         高伸縮性的場景:Mongo非常適合由數十或數百臺服務器組成的數據庫。Mongo的路線圖中已經包含對MapReduce引擎的內置支持。
·         用於對象及JSON數據的存儲:Mongo的BSON數據格式非常適合文檔化格式的存儲及查詢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章