面向文档的数据库主要设计用来存储、获取以及管理基于文档的或者叫半结构化的数据。也属于 NoSQL 数据库的一种类别。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用 JSON、XML 等多种格式存储。

  本文介绍 11 个开源的面向文档的数据库系统:

  1. MongoDB

  MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几 乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

  2. CouchDB

  Apache CouchDB 是一个面向文档的数据库管理系统。它提供以 JSON 作为数据格式的 REST 接口来对其进行操作,并可以通过视图来操纵文档的组织和呈现。 CouchDB 是 Apache 基金会的顶级开源项目。

 

CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB 的目标具有高度可伸缩性,提供了高可用性和高可靠性,即使运行在容易出现故障的硬件上也是如此。CouchDB 最初是用 C++ 编写的,但在 2008 年 4 月,这个项目转移到 Erlang OTP
平台进行容错测试。

CouchDB 可以安装在大部分 POSIX 系统上,包括 Linux® 和 Mac OS X。尽管目前还不正式支持 Windows®,但现在已经着手编写 Windows 平台的非官方二进制安装程序。CouchDB 可以从源文件安装,也可以使用包管理器安装(比如在 Mac OS X 上使用 MacPorts)。

CouchDB 是一个顶级 Apache Software Foundation 开源项目,根据 Apache 许可 V2.0 发布。这个开源许可允许在其他软件中使用这些源代码,并根据需要进行修改,但前提是遵从版权需知和免责声明。与许多其他开源许可一样,这个许可允许用户根据需求使用、修改和分发该软件。不一定由同一个许可包含所有修改,因为我们仅维护一个 Apache 代码使用许可需知。

 

 

  3. Terrastore

  Terrastore是一个基于Terracotta(一 个业界公认的、快速的分布式集群组件)实现的高性能分布式文档数据库。可以动态从运行中的集群添 加/删除节点,而且不需要停机和修改任何配置。支持通过http协议访问Terrastore。Terrastore提供了一个基于集合的键/值接口来管 理JSON文档并且不需要预先定义JSON文档的架构。易于操作,安装一个完整能够运行的集群只需几行命令。

  4. RavenDB

  RavenDB 是个新的.NET开源文档数据库。下面是一个简单的例子

  

\

 

  5. OrientDB

  Orient DB 是一个可伸缩的文档数据库,支持 ACID 事务处理。使用 Java 5 实现。

  

\

 

  6. ThruDB

  Thrudb是一套简单的服务建立在Apache的Thrift的框架,提供索引和文件存储服务的网站建设和推广。其目的是提供Web开发灵活,快速和易于使用的服务,可以加强或取代传统的数据存储和访问层。

  7. SisoDB

  SisoDb 是一个为 SQL Server 编写的面向文档的 db-provider ,使用 C# 编写,可让你直接在数据库中存储对象。

  

\

 

  8. RaptorDB

  RaptorDB 是一个很小的、快速的嵌入式 NoSQL 存储模块,使用 B+ 树 或者 MurMur 哈希索引。支持数据持久化到磁盘中存储。

  

block_diagram.png

 

  9. CloudKit

  CloudKit 提供了模型无关的,可自动版本化的 RESTful 的 JSON 存储,支持 OpenID 和 OAuth,包括 OAuth 发现。

  

\

 

  10. Perservere

  Persevere - REST JSON 数据库,JavaScript 的分布式计算和持久对象映射框架。

  11. Jackrabbit

  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 实现之间无缝地切换。

  

\