11個面向文檔的開源NoSQL數據庫

面向文檔數據庫是用於存儲、檢索和管理面向文檔和半結構化的數據。它是NoSQLogic數據庫的一個主要類別。其核心概念就是文檔的觀念,雖然不同的面向文檔數據在實現這個定義上有差別,(在一般情況下,)但它們在文檔封裝和數據編碼上有一些標準格式。編碼包括 XML、YAML、JSON 和 BSON,還有二進制格式(諸如PDF和MS office 文檔)。

document-oriented database is a designed for storing, retrieving, and managing document-oriented, or semi structured data. Document-oriented databases are one of the main categories of NoSQL databases. The central concept of a document-oriented database is the notion of a Document. While each document-oriented database implementation differs on the details of this definition, in general, they all assume documents encapsulate and encode data (or information) in some standard format(s) (or encoding(s)). Encodings in use include XML, YAML, JSON and BSON, as well as binary forms like PDF and Microsoft Office documents (MS Word, Excel, and so on).

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

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

  • 面向集合存儲,易存儲對象類型的數據。
  • 模式自由。
  • 支持動態查詢。
  • 支持完全索引,包含內部對象。
  • 支持查詢。
  • 支持複製和故障恢復。
  • 使用高效的二進制數據存儲,包括大型對象(如視頻等)。
  • 自動處理碎片,以支持雲計算層次的擴展性。
  • 支持RUBY,PYTHON,JAVA,C++,PHP等多種語言。
  • 文件存儲格式爲BSON(一種JSON的擴展)。
  • 可通過網絡訪問。

所謂“面向集合”(Collenction-Orented),意思是數據被分組存儲在數據集中,被稱爲一個集合(Collenction)。每個 集合在數據庫中都有一個唯一的標識名,並且可以包含無限數目的文檔。集合的概念類似關係型數據庫(RDBMS)裏的表(table),不同的是它不需要定 義任何模式(schema)。

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

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

MongoDB服務端可運行在Linux、Windows或OS X平臺,支持32位和64位應用,默認端口爲27017。推薦運行在64位平臺,因爲MongoDB

在32位模式運行時支持的最大文件尺寸爲2GB。

MongoDB把數據存儲在文件中(默認路徑爲:/data/db),爲提高效率使用內存映射文件進行管理。

項目地址: http://www.mongodb.org/

入門指南: http://www.mongodb.org/display/DOCS/Quickstart

下載: http://www.mongodb.org/downloads

2. Apache CouchDB 是一個面向文檔的數據庫管理系統。它提供以 JSON 作爲數據格式的 REST 接口來對其進行操作,並可以通過視圖來操縱文檔的組織和呈現。 CouchDB 是 Apache 基金會的頂級開源項目。CouchDB落實到最底層的數據結構就是兩類B+Tree 。

11個面向文檔的開源NoSQL數據庫

與現在流行的關係數據庫服務器不同,CouchDB 是圍繞一系列語義上自包含的文檔而組織的。 CouchDB 中的文檔是沒有模式的(schema free),也就是說並不要求文檔具有某種特定的結構。 CouchDB 的這種特性使得相對於傳統的關係數據庫而言,有自己的適用範圍。一般來說,圍繞文檔來構建的應用都比較適合使用 CouchDB 作爲其後臺存儲。 CouchDB 強調其中所存儲的文檔,在語義上是自包含的。這種面向文檔的設計思路,更貼近很多應用的問題域的真實情況。對於這類應用,使用 CouchDB 的文檔來進行建模,會更加自然和簡單。與此同時,CouchDB 也提供基於 MapReduce 編程模型的視圖來對文檔進行查詢,可以提供類似於關係數據庫中 SQL 語句的能力。 CouchDB 對於很多應用來說,提供了關係數據庫之外的更好的選擇。

項目地址: http://couchdb.apache.org/

入門指南: http://couchdb.apache.org/docs/intro.html

下載: http://couchdb.apache.org/downloads.html

3. Terrastore 是一個基於Terracotta(一 個業界公認的、快速的分佈式集羣組件)實現的高性能分佈式文檔數據庫。可以動態從運行中的集羣添 加/刪除節點,而且不需要停機和修改任何配置。支持通過http協議訪問Terrastore。Terrastore提供了一個基於集合的鍵/值接口來管 理JSON文檔並且不需要預先定義JSON文檔的架構。易於操作,安裝一個完整能夠運行的集羣只需幾行命令。

項目地址: http://code.google.com/p/terrastore/

入門指南: http://code.google.com/p/terrastore/wiki/Documentation

下載: http://code.google.com/p/terrastore/downloads/list

4. RavenDB 是個新的.NET,支持Linq的開源文檔數據庫,旨在Window平臺下提供一個高性,結構簡單,靈活,可擴展NoSQL存儲。Raven將JSON文檔存在數據庫中。可以使用C#的Linq語法查詢數據。下面是一個簡單的例子

5. OrientDB 是兼具文擋數據庫的靈活性和圖形數據庫管理鏈接 能力的可深層次擴展的文檔-圖形數據庫管理系統。可選無模式、全模式或混合模式下。支持許 多高級特性,諸如ACID事務、快速索引,原生和SQL查詢功能。可以JSON格式導入、導出文檔。若不執行昂貴的JOIN操作的話,如同關係數據庫可在 幾毫秒內可檢索數以百記的鏈接文檔圖。

項目地址: http://www.orientechnologies.com/

入門指南: http://code.google.com/p/orient/wiki/Tutorials

下載: http://code.google.com/p/orient/wiki/download

6. Thrudb 是一套簡單的服務建立在Apache的Thrift的框架,提供索引和文件存儲服務的網站建設和推廣。其目的是提供Web開發靈活,快速和易於使用的服務,可以加強或取代傳統的數據存儲和訪問層。主要特徵:

  • Client libraries for most languages
  • Incremental backups and redo logging
  • Multiple storage backends (BerkeleyDB, Disk, MySQL, S3 included)
  • Memcache and Spread integration.
  • Built for horizontal scalability
  • Simple and powerful search service

項目地址: http://code.google.com/p/thrudb/

入門指南: http://thrudb.googlecode.com/svn/trunk/doc/Thrudb.pdf

下載: http://code.google.com/p/thrudb/source/checkout

7. SisoDb 是一個爲 SQL Server 編寫的面向文檔的 db-provider ,使用 C# 編寫,可讓你直接在數據庫中存儲對象。

11個面向文檔的開源NoSQL數據庫

項目地址: http://www.sisodb.com

入門指南: http://www.sisodb.com/Wiki

下載: https://github.com/danielwertheim/SisoDb-Provider/

8. RaptorDB 是一個很小的、快速的嵌入式 NoSQL 存儲模塊,使用 B+ 樹 或者 MurMur哈希索引。支持數據持久化到磁盤中存儲。

11個面向文檔的開源NoSQL數據庫

項目地址: http://www.codeproject.com/KB/database/RaptorDB.aspx

入門指南: http://www.codeproject.com/KB/database/RaptorDB.aspx

下載: http://www.codeproject.com/KB/database/RaptorDB.aspx

9. CloudKit: 提供了一個結構靈活,自動版本化, RESTful JSON存儲,可選支持OpenID 和 OAuth , 包括OAuth Discovery.

項目地址: http://getcloudkit.com/

入門指南: http://getcloudkit.com/api/

下載: https://github.com/jcrosby/cloudkit

10. Perservere: 是一個開源的工具集用於持久化和分佈式計算,使用一個直觀基於標準的HTTP REST, JSON-RPC, JSONPath, and REST Channels的JSON接口。The Persevere server includes a Persevere JavaScript client, but the standards-based interface is intended to be used with any framework or client.

項目地址: http://code.google.com/p/persevere-framework/

入門指南: http://code.google.com/p/persevere-framework/w/list

下載: http://code.google.com/p/persevere-framework/downloads/list

11. Apache Jackrabbit 是由 Apache Foundation 提供的 JSR-170 的開放源碼實現..隨着內容管理應用程序的日益普及,對用於內容倉庫的普通、標準化 API 的需求已凸現出來。Content Repository for Java Technology API (JSR-170) 的目標就是提供這樣一個接口。JSR-170 的一個主要優點是,它不綁定到任何特定的底層架構。例如,JSR-170 實現的後端數據存儲可以是文件系統、WebDAV 倉庫、支持 XML 的系統,甚至還可以是 SQL 數據庫。此外,JSR-170 的導出和導入功能允許一個集成器在內容後端與 JCR 實現之間無縫地切換。

項目地址: http://jackrabbit.apache.org

入門指南: http://jackrabbit.apache.org/getting-started-with-apache-jackrabbit.html

下載: http://jackrabbit.apache.org/downloads.html

來自: http://orangeslate.com/2011/12/06/11-open-document-oriented-databases-which-comes-under-nosql-db-category/

發佈了106 篇原創文章 · 獲贊 21 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章