-
mongodb
鎖定
- 外文名
- MongoDB
- 編寫語言
- 由C++語言編寫
- 產品類型
- 基於分佈式文件存儲的數據庫
- 特 點
- 高性能,易部署,易使用
mongodb特點
*模式自由。
*支持動態查詢。
*支持完全索引,包含內部對象。
*支持查詢。
*支持複製和故障恢復。
*自動處理碎片,以支持雲計算層次的擴展性。
*可通過網絡訪問。
mongodb使用原理
所謂“面向集合”(Collection-Oriented),意思是數據被分組存儲在數據集中,被稱為一個集合(Collection)。每個集合在數據庫中都有一個唯一的標識名,並且可以包含無限數目的文檔。集合的概念類似關係型數據庫(RDBMS)裏的表(table),不同的是它不需要定義任何模式(schema)。Nytro MegaRAID技術中的閃存高速緩存算法,能夠快速識別數據庫內大數據集中的熱數據,提供一致的性能改進。
模式自由(schema-free),意味着對於存儲在mongodb數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫裏。
存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用於唯一標識一個文檔,為字符串類型,而值則可以是各種複雜的文件類型。我們稱這種存儲形式為BSON(Binary Serialized Document Format)。
MongoDB已經在多個站點部署,其主要場景如下:
1)網站實時數據處理。它非常適合實時的插入、更新與查詢,並具備網站實時數據存儲所需的複製及高度伸縮性。
2)緩存。由於性能很高,它適合作為信息基礎設施的緩存層。在系統重啓之後,由它搭建的持久化緩存層可以避免下層的數據源過載。
3)高伸縮性的場景。非常適合由數十或數百台服務器組成的數據庫,它的路線圖中已經包含對MapReduce引擎的內置支持。
不適用的場景如下:
1)要求高度事務性的系統。
2)傳統的商業智能應用。
3)複雜的跨文檔(表)級聯查詢。
mongodb系統介紹
分佈式文件系統(Distributed File System)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。分佈式文件系統的設計基於客户機/服務器模式。一個典型的網絡可能包括多個供多用户訪問的服務器。另外,對等特性允許一些系統扮演客户機和服務器的雙重角色。
[2]
mongodb實際應用
MongoDB服務端可運行在Linux、Windows或mac os x平台,支持32位和64位應用,默認端口為27017。推薦運行在64位平台,因為MongoDB在32位模式運行時支持的最大文件尺寸為2GB。
mongodb版本發佈
2012年05月23日,MongoDB2.1 開發分支發佈了! 該版本採用全新架構,包含諸多增強。
2012年06月06日,MongoDB 2.0.6 發佈,分佈式文檔數據庫。
2013年08月20日,MongoDB 2.4.6 發佈。
2013年11月01日,MongoDB 2.4.8 發佈。
2017年03月17日,MongoDB 3.0.1發佈。
2018年08月06日,MongoDB 4.0.2發佈,支持多文檔事務。
2019年08月13日,MongoDB 4.2.0 發佈
[3]
,引入分佈式事務。
2021年07月13日,MongoDB 5.0.0 發佈。
2022年07月20日,MongoDB 6.0.0 發佈。
mongodb數據開發
mongodb服務端
下載地址
在不同的系統上會有不同的版本。
mongodb驅動
下載地址
用不同的語言開發會有不同的驅動提供。
mongodb設計特徵
MongoDB 的設計目標是高性能、可擴展、易部署、易使用,存儲數據非常方便。其主要功能特性如下。
(2)模式自由,採用無模式結構存儲。在MongoDB 中集合中存儲的數據是無模式的文檔,採用無模式存儲數據是集合區別於RDBMS 中的表的一個重要特徵。
(3)支持完全索引,可以在任意屬性上建立索引,包含內部對象。MongoDB的索引和RDBMS 的索引基本一樣,可以在指定屬性、內部對象上創建索引以提高查詢的速度。除此之外,MongoDB 還提供創建基於地理空間的索引的能力。
(4)支持查詢。MongoDB 支持豐富的查詢操作,MongoDB 幾乎支持SQL中的大部分查詢。
(5)強大的聚合工具。MongoDB 除了提供豐富的查詢功能外,還提供強大的聚合工具,如count、group 等,支持使用MapReduce 完成複雜的聚合任務。
(7)使用高效的二進制數據存儲,包括大型對象(如視頻)。使用二進制格式存儲,可以保存任何類型的數據對象。
(9)支持Perl、PHP、Java、C#、JavaScript、Ruby、C 和C++語言的驅動程序,MongoDB 提供了當前所有主流開發語言的數據庫驅動包,開發人員使用任何一種主流開發語言都可以輕鬆編程,實現訪問MongoDB 數據庫。
(10)文件存儲格式為BSON(JSON 的一種擴展)。BSON 是對二進制格式的JSON 的簡稱,BSON 支持文檔和數組的嵌套。
(11)可以通過網絡訪問。可以通過網絡遠程訪問MongoDB 數據庫。
mongodb基本概念
(1)文檔
文檔是 MongoDB 中數據的基本單位,類似於關係數據庫中的行(但是比行復雜)。多個鍵及其關聯的值有序地放在一起就構成了文檔。不同的編程語言對文檔的表示方法不同,在JavaScript 中文檔表示為:
{“greeting”:“hello,world”}
這個文檔只有一個鍵“greeting”,對應的值為“hello,world”。多數情況下,文檔比這個更復雜,它包含多個鍵/值對。例如:
{“greeting”:“hello,world”,“foo”: 3}
文檔中的鍵/值對是有序的,下面的文檔與上面的文檔是完全不同的兩個文檔。
{“foo”: 3 ,“greeting”:“hello,world”}
(2)集合
集合就是一組文檔,類似於關係數據庫中的表。集合是無模式的,集合中的文檔可以是各式各樣的。例如,{“hello,word”:“Mike”}和{“foo”: 3},它們的鍵不同,值的類型也不同,但是它們可以存放在同一個集合中,也就是不同模式的文檔都可以放在同一個集合中。既然集合中可以存放任何類型的文檔,那麼為什麼還需要使用多個集合?這是因為所有文檔都放在同一個集合中,無論對於開發者還是管理員,都很難對集合進行管理,而且這種情形下,對集合的查詢等操作效率都不高。所以在實際使用中,往往將文檔分類存放在不同的集合中,例如,對於網站的日誌記錄,可以根據日誌的級別進行存儲,Info級別日誌存放在Info 集合中,Debug 級別日誌存放在Debug 集合中,這樣既方便了管理,也提供了查詢性能。但是需要注意的是,這種對文檔進行劃分來分別存儲並不是MongoDB 的強制要求,用户可以靈活選擇。
可以使用“.”按照命名空間將集合劃分為子集合。例如,對於一個博客系統,可能包括blog.user 和blog.article 兩個子集合,這樣劃分只是讓組織結構更好一些,blog 集合和blog.user、blog.article 沒有任何關係。雖然子集合沒有任何特殊的地方,但是使用子集合組織數據結構清晰,這也是MongoDB 推薦的方法。
(3)數據庫
MongoDB 中多個文檔組成集合,多個集合組成數據庫。一個MongoDB 實例可以承載多個數據庫。它們之間可以看作相互獨立,每個數據庫都有獨立的權限控制。在磁盤上,不同的數據庫存放在不同的文件中。MongoDB 中存在以下系統數據庫。
● Admin 數據庫:一個權限數據庫,如果創建用户的時候將該用户添加到admin 數據庫中,那麼該用户就自動繼承了所有數據庫的權限。
● Local 數據庫:這個數據庫永遠不會被複制,可以用來存儲本地單台服務器的任意集合。
● Config 數據庫:當MongoDB 使用分片模式時,config 數據庫在內部使用,用於保存分片的信息。
mongodb數據模型
一個MongoDB 實例可以包含一組數據庫,一個DataBase 可以包含一組Collection(集合),一個集合可以包含一組Document(文檔)。一個Document包含一組field(字段),每一個字段都是一個key/value pair。
key: 必須為字符串類型。
value:可以包含如下類型。
● 基本類型,例如,string,int,float,timestamp,binary 等類型。
● 一個document。
● 數組類型。
mongodb適用場景
MongoDB 的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)和傳統的RDBMS 系統(具有豐富的功能)之間架起一座橋樑,它集兩者的優勢於一身。根據官方網站的描述,Mongo 適用於以下場景。
● 網站數據:Mongo 非常適合實時的插入,更新與查詢,並具備網站實時數據存儲所需的複製及高度伸縮性。
● 大尺寸、低價值的數據:使用傳統的關係型數據庫存儲一些數據時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統的文件進行存儲。
MongoDB 的使用也會有一些限制,例如,它不適合於以下幾個地方。
● 需要SQL 的問題。
mongodb應用案例
下面列舉一些公司MongoDB的實際應用:
- Craiglist上使用MongoDB的存檔數十億條記錄。
- FourSquare,基於位置的社交網站,在Amazon EC2的服務器上使用MongoDB分享數據。
- Shutterfly,以互聯網為基礎的社會和個人出版服務,使用MongoDB的各種持久性數據存儲的要求。
- bit.ly, 一個基於Web的網址縮短服務,使用MongoDB的存儲自己的數據。
- spike.com,一個MTV網絡的聯營公司, spike.com使用MongoDB的。
- Intuit公司,一個為小企業和個人的軟件和服務提供商,為小型企業使用MongoDB的跟蹤用户的數據。
- sourceforge.net,資源網站查找,創建和發佈開源軟件免費,使用MongoDB的後端存儲。
- etsy.com ,一個購買和出售手工製作物品網站,使用MongoDB。
- 紐約時報,領先的在線新聞門户網站之一,使用MongoDB。
- CERN,著名的粒子物理研究所,歐洲核子研究中心大型強子對撞機的數據使用MongoDB。
- 參考資料
-
- 1. 分佈式文件系統 .百度百科[引用日期2019-09-21]
- 2. 張紹華,潘蓉,宗宇偉主編. 大數據技術與應用 大數據治理與服務[M]. 上海:上海科學技術出版社, 2016.01.第72頁
- 3. MongoDB 4.2版本發佈Release Notes .MongoDB網站.2019-08-13[引用日期2020-03-20]