MongoDB官網(wǎng):
https://www.mongodb.org
官網(wǎng)的下載頁面:
https://www.mongodb.org/downloads
官方文檔關(guān)鍵詞索引頁面:點擊這里。
MongoDB中文社區(qū):
http://www.mongoing.com
mongodb基礎(chǔ)知識
數(shù)據(jù)庫名可以是滿足以下條件的任意UTF-8字符串:
- 不能是空字符串( "" )。
- 不得含有
空格
、.
、$
、/
、\\
和\\0
(空字符)。 - 應(yīng)盡量全部小寫,因為數(shù)據(jù)庫名并不區(qū)分大小寫。
- 不能為空,且少于64個字符。
- 在windows下最好別用
/\. "$*<>:|?
中的任何一個,更不允許包含null。 - 在類unix的系統(tǒng)下最好別用
/\. "$
,當(dāng)然也包括null。
有一些數(shù)據(jù)庫名是保留的,可以直接訪問這些有特殊作用的數(shù)據(jù)庫。
- admin: 從權(quán)限的角度來看,這是"root"數(shù)據(jù)庫。要是將一個用戶添加到這個數(shù)據(jù)庫,這個用戶自動繼承所有數(shù)據(jù)庫的權(quán)限。一些特定的服務(wù)器端命令也只能從這個數(shù)據(jù)庫運行,比如列出所有的數(shù)據(jù)庫或者關(guān)閉服務(wù)器。
- local:這個數(shù)據(jù)永遠(yuǎn)不會被復(fù)制,可以用來存儲限于本地單臺服務(wù)器的任意集合
- config:當(dāng)Mongo用于分片設(shè)置時,config數(shù)據(jù)庫在內(nèi)部使用,用于保存分片的相關(guān)信息。
集合名必須以下劃線或字母開頭,且禁止:
- 包含
$
。 - 包含空字符串,即""。
- 包含
null
字符。 - 以
system.
前綴開頭(系統(tǒng)保留使用)
域名field不允許包含
.
或null字符,而且不能以美元符號$
開頭
關(guān)于operator,點擊MongoDB(operator)
關(guān)于集合的操作,點擊MongoDB(operation)
關(guān)于MongoDB的引擎,點擊MongoDB(引擎)
關(guān)于索引部分,點擊MongoDB(index)
關(guān)于聚合部分,點擊MongoDB(聚合)
差不多上手了之后,一些存在的細(xì)節(jié)問題只能在實際操作中發(fā)現(xiàn)。可以選pymongo來實操了,基本的入門大概是這樣的:pymongo日記
收集來的關(guān)于MongoDB的優(yōu)劣的討論:
收集文章
淺析MongoDB數(shù)據(jù)庫的海量數(shù)據(jù)存儲應(yīng)用
MongoDB的主要特點
(1)文件存儲格式為Bson
,使用易于掌握和理解的Json風(fēng)格語法。相對Json來說,Bson擁有更好的性能,主要表現(xiàn)為更快的遍歷速度、操作更簡易、增加了額外的數(shù)據(jù)類型。
(2)模式自由,支持嵌入子文檔和數(shù)組,無需事先創(chuàng)建數(shù)據(jù)結(jié)構(gòu),屬于逆規(guī)范化的數(shù)據(jù)模型,有利于提高查詢速度。
(3)動態(tài)查詢,支持豐富的查詢表達(dá)式,使用Json形式的標(biāo)記,可輕易查詢文檔中內(nèi)嵌的對象和數(shù)組及子文檔。
(4)完整的索引支持,包括文檔內(nèi)嵌對象和數(shù)據(jù),同時還提供了全文索引方式,MongoDB的查詢優(yōu)化器會分析查詢表達(dá)式,并生成一個高效的查詢計劃。
(5)使用高效的二進(jìn)制數(shù)據(jù)存儲,適合存儲大型對象(如高清圖片、視頻等)。
(6)支持多種復(fù)制模式,提供冗余及自動故障轉(zhuǎn)移。支持Master-Slave、Replica Pairs/Replica Sets、有限Master-Master模式。
(7)支持服務(wù)端腳本和Map/Reduce,可以實現(xiàn)海量數(shù)據(jù)計算,即實現(xiàn)云計算功能。(8)性能高、速度快。在多數(shù)場合,其查詢速度對于MySQL要快的多,對于CPU占用非常小。部署很簡單,幾乎是零配置。
(9)自動處理碎片,支持自動分片功能實現(xiàn)水平擴(kuò)展的數(shù)據(jù)庫集群,可以動態(tài)添加或移除節(jié)點。
(10)內(nèi)置GridFS,支持海量存儲。
(11)可通過網(wǎng)絡(luò)訪問,采用高效的MongoDB網(wǎng)絡(luò)協(xié)議,在性能方面要優(yōu)于http或Rest協(xié)議。
(12)第三方支持豐富,MongoDB社區(qū)活躍,越來越多的公司和網(wǎng)站在生產(chǎn)環(huán)境中使用MongoDB進(jìn)行技術(shù)架構(gòu)優(yōu)化,同時由10gen公司官方提供強大技術(shù)支持。
MongoDB的適用場景
MongoDB的主要目標(biāo)是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統(tǒng)的RDBMS系統(tǒng)(豐富的功能)架起一座橋梁,集兩者的優(yōu)勢于一身。
(1)網(wǎng)站數(shù)據(jù):MongoDB非常適合實時的插入,更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性。
(2)緩存:由于性能很高,MongoDB也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由MongoDB搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過載。
(3)大尺寸,低價值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統(tǒng)的文件進(jìn)行存儲。
(4)高伸縮性的場景:MongoDB非常適合由數(shù)十或數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。MongoDB的路線圖中已經(jīng)包含對MapReduce引擎的內(nèi)置支持。
(5)用于對象及JSON數(shù)據(jù)的存儲:MongoDB的Bson數(shù)據(jù)格式非常適合文檔化格式的存儲及查詢。