MongoDB 是一個基於分佈式文件存儲的數據庫,由 C++ 編寫,旨在爲 WEB 應用提供可擴展、高性能的數據存儲解決方案。mongodb
MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫中功能最豐富、最像關係數據庫的。在高負載的狀況下,添加更多的節點,能夠保證服務器性能。數據庫
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象,字段值能夠包含其餘文檔,數組及文檔數組。編程
{數組
field1:value1, //一個字段即一個鍵值對,值能夠是多種數據類型。鍵值對之間用逗號分隔。瀏覽器
field2:value2,服務器
field3:value3,網絡
........數據結構
}編程語言
示例:分佈式
{
id:1,
name:"張三",
age:20,
score:[90,100,99,95]
}
MongoDB 是一個面向文檔存儲的數據庫,操做簡單。
能夠在MongoDB記錄中設置任何屬性的索引 (如:FirstName="Sameer",Age="8")來實現更快的排序。
能夠經過本地或者網絡建立數據鏡像,從而使MongoDB有更強的擴展性。
若是負載的增長(須要更多的存儲空間和更強的處理能力) ,它能夠分佈在計算機網絡中的其餘節點上,這就是所謂的分片。
MongoDB支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
MongoDB 能夠使用update()命令替換完成的文檔(數據)或者一些指定的數據字段 。
MongoDB中的Map/Reduce主要是用來對數據進行批量處理和聚合操做。
Map和Reduce。Map函數調用emit(key,value)遍歷集合中全部的記錄,將key與value傳給Reduce函數進行處理。
Map函數和Reduce函數是使用Javascript編寫的,並能夠經過db.runCommand或mapreduce命令來執行MapReduce操做。
GridFS是MongoDB中的一個內置功能,能夠用於存放大量小文件。
MongoDB容許在服務端執行腳本,能夠用Javascript編寫某個函數,直接在服務端執行,也能夠把函數的定義存儲在服務端,下次直接調用便可。
MongoDB爲多種編程語言提供了支持
MongoDB提供了網絡和系統監控工具Munin,做爲插件使用。
Gangila是MongoDB高性能的系統監視的工具,做爲插件使用。
基於圖形界面的開源工具 Cacti, 用於查看CPU負載、網絡帶寬利用率,它也提供了一個應用於監控 MongoDB 的插件。