文檔型數據庫是NoSQL中很是重要的一個分支,它主要用來存儲、索引並管理面向文檔的數據或者相似的半結構化數據。顧名思義,文檔型數據庫(面向文檔數據庫)的關鍵核心概念即文檔(Document),它是數據庫中最小的單位。每一種文檔型數據庫的部署都有所不一樣,一般來講,它們假定文檔以某種標準化格式封裝並加密數據,並用多種格式進行解碼,包括XML、YAML、JSON和BSON,固然也包括二進制格式如PDF、微軟Office文檔等。在本文中,來自IBM的高級IT工程師Lijin Joseji向咱們介紹了11種主流的文檔型數據庫。html
MongoDBgit
MongoDB是目前最爲流行的NoSQL數據庫,它是一種面向集合,模式無關的文檔型數據庫。其中數據以「集合」的方式進行分組,每一個集合都有單獨的名稱並能夠包含無限數量的文檔。這裏的集合同關係型數據庫中的表(table)相似,惟一的區別就是它並無任何明確的schema.github
MongoDB以一系列鍵值對集合的方式存儲數據,其中鍵(Key)是字符串,值(Value)是任何一種數據類型的集合,包括數組和文檔。mongodb
主頁: http://www.mongodb.org/數據庫
文檔: http://www.mongodb.org/display/DOCS/Quickstartapache
下載: http://www.mongodb.org/downloads後端
CouchDBapi
CouchDB是一個文檔型數據庫服務器,能夠經過JSON格式的REST接口進行訪問,使用JavaScript做爲查詢語言。一個CouchDB文檔就是一個對象,由不一樣字段組成。字段值能夠是字符串、數字、日期,甚至能夠是有序列表和關聯映射。數組
主頁: http://couchdb.apache.org/安全
文檔: http://couchdb.apache.org/docs/intro.html
下載: http://couchdb.apache.org/downloads.html
Terrastore
Terrastore的特色是提供高級的擴展和彈性特徵,而無需犧牲一致性。它是一個基於Terracotta實現的高性能分佈式文檔數據庫,後者是業界公認的快速分佈式集羣技術。
主頁: http://code.google.com/p/terrastore/
文檔: http://code.google.com/p/terrastore/wiki/Documentation
下載: http://code.google.com/p/terrastore/downloads/list
RavenDB
Raven是一個。NET文檔型數據庫,它的特色是提供了高性能、schema-less、靈活可擴展的面向。NET和Windows平臺的NoSQL數據存儲平臺。RavenDB在其內部能夠存儲任何JSON文檔,他是一個無模式的數據庫,你可使用C#的Linq語法定義索引。
文檔: http://ravendb.net/tutorials
下載: http://ravendb.net/download
OrientDB
OrientDB是用Java編寫的開源NoSQL數據庫管理系統,雖然是文檔型數據庫,可是它的關係管理方式卻和圖形數據庫相相似。它支持schema-less、schema-full和schema-mixed多種模式。OrientDB擁有健壯的基於用戶角色的安全分析系統,並支持SQL查詢。
主頁: http://www.orientechnologies.com/
文檔: http://code.google.com/p/orient/wiki/Tutorials
下載: http://code.google.com/p/orient/wiki/Download
ThruDB
Thrudb是一套創建在Apache Thrift framework下的簡單服務,提供索引和文件存儲服務的網站建設和推廣。其目的是提供Web開發靈活,快速和易於使用的服務,能夠增強或取代傳統的數據存儲和訪問層。
Thrudb支持多個數據存儲後端,包括BerkeleyDB、Disk、MySQL,還擁有Memcache和Spread集成。
主頁: http://code.google.com/p/thrudb/
文檔: http://thrudb.googlecode.com/svn/trunk/doc/Thrudb.pdf
下載: http://code.google.com/p/thrudb/source/checkout
SisoDB
SisoDb是一個用C#編寫的,專門提供給SQL Server面向文檔的db-provider.它能夠存儲POCO的對象圖形,而無需設置任何映射。每一個實體都別視爲一個聚合根,可以快速生成單獨的表。
文檔: http://www.sisodb.com/Wiki
下載: https://github.com/danielwertheim/SisoDb-Provider/
RaptorDB
RaptorDB是一個很是小型的快速嵌入式NoSQL數據庫,它使用b+tree或者MurMur哈希索引。最初的設計是用來存儲JSON數據,可是目前能夠存儲任何類型的數據。
主頁: http://www.codeproject.com/KB/database/RaptorDB.aspx
文檔: http://www.codeproject.com/KB/database/RaptorDB.aspx
下載: http://www.codeproject.com/KB/database/RaptorDB.aspx
CloudKit
CloudKit提供了模式無關、自動版本化的REST JSON存儲,支持OpenID和OAuth,包括OAuth Discovery.
文檔: http://getcloudkit.com/api/
下載: https://github.com/jcrosby/cloudkit
Perservere
Persevere是一個開源的工具集,用來應對持久性和分佈式計算,它使用了一個標準化的JSON接口。Persevere項目的核心就是Persevere Server,它包含了一個Persevere JavaScript客戶端,可是基於標準的接口能夠用於任何框架或者客戶端。
主頁: 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
Jackrabbit
Apache Jackrabbit是一個JSR-170的開放源碼實現,支持結構化與非結構化內容、全文搜索、版本控制、交易以及觀測等。
主頁: http://jackrabbit.apache.or
文檔: http://jackrabbit.apache.org/getting-started-with-apache-jackrabbit.html
下載: http://jackrabbit.apache.org/downloads.html
結論
文檔數據庫存儲並檢索文檔數據,用戶在選用的時候須要參照自身的需求而定。你須要考慮數據訪問的模式和用例,以便建立一個高效實用的文檔模型。當你的域模型可以分割並分配到多個文檔的時候,文檔型數據庫將是一個不錯的選擇。好比一個博客軟件、一個CMS或者一個維基百科類軟件,使用文檔型數據庫是最佳的方法。而當數據庫中有太多的關係和標準化約束的狀況下,則傳統的關係型數據庫更爲合適。