1. 程式人生 > >Mongodb系統

Mongodb系統

zed list bson 互聯網 創建 ++ 不同 基本類型 分布式文件系

Mongodb系統

簡介

MongoDB 是一個基於分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

MongoDB是一個介於關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似jsonbson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引

特點

它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:

*面向集合存儲,易存儲對象類型的數據。

*支持動態查詢

*支持完全索引,包含內部對象。

*支持查詢。

*支持復制和故障恢復。

*使用高效的二進制數據存儲,包括大型對象(如視頻等)。

*自動處理碎片,以支持雲計算層次的擴展性。

*支持RUBYPYTHONJAVAC++PHPC#等多種語言。

*文件存儲格式為BSON(一種JSON的擴展)。

*可通過網絡訪問。

*模式自由。

使用原理

所謂面向集合Collection-Oriented),意思是數據被分組存儲在數據集中,被稱為一個集合(Collection)。每個集合在數據庫中都有一個唯一的標識名,並且可以包含無限數目的文檔。集合的概念類似關系型數據庫

RDBMS)裏的表(table),不同的是它不需要定義任何模式(schema)Nytro MegaRAID技術中的閃存高速緩存算法,能夠快速識別數據庫內大數據集中的熱數據,提供一致的性能改進。

模式自由(schema-free),意味著對於存儲在mongodb數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫裏。

存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用於唯一標識一個文檔,為字符串類型,而值則可以是各種復雜的文件類型。我們稱這種存儲形式為BSONBinary Serialized Document Format)。

MongoDB已經在多個站點部署,其主要場景如下:

1)網站實時數據處理。它非常適合實時的插入、更新與查詢,並具備網站實時數據存儲所需的復制及高度伸縮性。

2)緩存。由於性能很高,它適合作為信息基礎設施的緩存層。在系統重啟之後,由它搭建的持久化緩存層可以避免下層的數據源過載。

3)高伸縮性的場景。非常適合由數十或數百臺服務器組成的數據庫,它的路線圖中已經包含對MapReduce引擎的內置支持。

不適用的場景如下:1)要求高度事務性的系統。

2)傳統的商業智能應用。

3)復雜的跨文檔(表)級聯查詢。

系統介紹

分布式文件系統Distributed File System)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。分布式文件系統的設計基於客戶機/服務器模式。一個典型的網絡可能包括多個供多用戶訪問的服務器。另外,對等特性允許一些系統扮演客戶機和服務器的雙重角色。

HBase是一個分布式的、面向列的開源數據庫,該技術來源於 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化數據的分布式存儲系統

Yonghong Data Mart是基於自有技術研發的一款數據存儲、數據處理的軟件。Yonghong Data Mart的分布式文件存儲系統 (ZDFS)是在Hadoop HDFS基礎上進行的改造和擴展,將服務器集群內所有節點上存儲的文件統一管理和存儲。

實際應用

MongoDB服務端可運行在LinuxWindowsmac os x平臺,支持32位和64位應用,默認端口為27017。推薦運行在64位平臺,因為MongoDB32位模式運行時支持的最大文件尺寸為2GB

版本發布

20120523日,MongoDB2.1 開發分支發布了! 該版本采用全新架構,包含諸多增強。

20120606日,MongoDB 2.0.6 發布,分布式文檔數據庫。

20130423日,MongoDB 2.4.3 發布,此版本包括了一些性能優化,功能增強以及bug修復。

20130820日,MongoDB 2.4.6 發布。

20131101日,MongoDB 2.4.8 發布,是目前最新的穩定版。

數據開發

服務端

下載地址

在不同的系統上會有不同的版本。

驅動

下載地址

用不同的語言開發會有不同的驅動提供。

數據模型

一個MongoDB 實例可以包含一組數據庫,一個DataBase 可以包含一組Collection(集合),一個集合可以包含一組Document(文檔)。一個Document包含一組field(字段),每一個字段都是一個key/value pair

key: 必須為字符串類型。

value:可以包含如下類型。

基本類型,例如,stringintfloattimestampbinary 等類型。

一個document

數組類型。

適用場景

MongoDB 的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)和傳統的RDBMS 系統(具有豐富的功能)之間架起一座橋梁,它集兩者的優勢於一身。根據官方網站的描述,Mongo 適用於以下場景。

網站數據:Mongo 非常適合實時的插入,更新與查詢,並具備網站實時數據存儲所需的復制及高度伸縮性。

緩存:由於性能很高,Mongo 也適合作為信息基礎設施的緩存層。在系統重啟之後,由Mongo 搭建的持久化緩存層可以避免下層的數據源過載。

大尺寸、低價值的數據:使用傳統的關系型數據庫存儲一些數據時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統的文件進行存儲。

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

用於對象及JSON 數據的存儲:Mongo BSON 數據格式非常適合文檔化格式的存儲及查詢。

MongoDB 的使用也會有一些限制,例如,它不適合於以下幾個地方。

高度事務性的系統:例如,銀行或會計系統。傳統的關系型數據庫目前還是更適用於需要大量原子性復雜事務的應用程序。

傳統的商業智能應用:針對特定問題的BI 數據庫會產生高度優化的查詢方式。對於此類應用,數據倉庫可能是更合適的選擇。

需要SQL 的問題。

應用案例

下面列舉一些公司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


Mongodb系統