MongoDB的介紹和使用場景(1)

MongoDB 是一個高性能,開源,無模式文檔型數據庫,是當前 NoSQL 數據庫產品中最熱門的一種。它在許多場景下可用於替代傳統的關係型數據庫或鍵/值存儲方式,MongoDB 使用 C++開發。MongoDB 的官方網站地址是:http://www.mongodb.org/程序員

1.爲何要用 NoSQLweb

NoSQL,全稱是」Not Only Sql」,指的是非關係型的數據庫,這類數據庫主要有這些特色:非關系型的、分佈式的、開源的、水平可擴展的。原始的目的是爲了大規模 web 應用,NoSQL 被咱們用得最多的當數 key-value 存儲,固然還有其餘的文檔型的、列存儲、圖型數據庫、xml 數據庫等mongodb

目前新浪微博的Redis和Google的Bigtable以及Amazon的SimpleDB使用的就是 NoSQL 型數據庫。NoSQL 數據存儲不須要固定的表結構,一般也不存在鏈接操做。數據庫

2.MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。MongoDB 最大的特色是他支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。它是一個面向集合的,模式自由的文檔型數據庫。數組

(1) 面向集合(Collenction-Orented)
意思是數據被分組存儲在數據集中, 被稱爲一個集合(Collenction)。每一個集合在數據庫中都有一個惟一的標識名,而且能夠包含無限數目的文檔。集合的概念相似關係型數據庫(RDBMS)裏的表(table),不一樣的是它不須要定義任何模式(schema)。緩存

(2) 模式自由(schema-free)
意味着對於存儲在 MongoDB 數據庫中的文件,咱們不須要知道它的任何結構定義。提了這麼屢次"無模式"或"模式自由",它到是個什麼概念呢?例如,下面兩個記錄能夠存在於同一個集合裏面:
{"welcome" : "Beijing"}
{"age" : 25}服務器

(3) 文檔型
意思是咱們存儲的數據是鍵-值對的集合,鍵是字符串,值能夠是數據類型集合裏的任意類型,包括數組和文檔. 咱們把這個數據格式稱做 「BSON」 即 「Binary Serialized dOcument Notation.」

分佈式

3. 功能
(1) 面向集合的存儲:適合存儲對象及 JSON 形式的數據
(2) 動態查詢:MongoDB 支持豐富的查詢表達式。查詢指令使用 JSON 形式的標記,可輕易查詢文檔中內嵌的對象及數組
(3) 完整的索引支持:包括文檔內嵌對象及數組。MongoDB 的查詢優化器會分析查詢表達式,並生成一個高效的查詢計劃
(4)查詢監視:MongoDB 包含一系列監視工具用於分析數據庫操做的性能
(5)複製及自動故障轉移:MongoDB 數據庫支持服務器之間的數據複製,支持主-從模式及服務器之間的相互複製。複製的主要目標是提供冗餘及自動故障轉移
(6)高效的傳統存儲方式:支持二進制數據及大型對象(如照片或圖片)
(7)自動分片以支持雲級別的伸縮性:自動分片功能支持水平的數據庫集羣,可動態添加額外的機器

工具

4.適用場合性能

(1)網站數據:MongoDB 很是適合實時的插入,更新與查詢,並具有網站實時數據存儲所需的複製及高度伸縮性

(2)緩存:因爲性能很高,MongoDB 也適合做爲信息基礎設施的緩存層。在系統重啓以後,由 MongoDB 搭建的持久化緩存層能夠避免下層的數據源過載

(3)大尺寸,低價值的數據:使用傳統的關係型數據庫存儲一些數據時可能會比較昂貴,在此以前,不少時候程序員每每會選擇傳統的文件進行存儲

(4)高伸縮性的場景:MongoDB 很是適合由數十或數百臺服務器組成的數據庫。MongoDB的路線圖中已經包含對 MapReduce 引擎的內置支持

(5)用於對象及 JSON 數據的存儲:MongoDB 的 BSON 數據格式很是適合文檔化格式的存儲及查詢

相關文章
相關標籤/搜索