参考地址:http://www.ggat.cn/newsInfo.html/140 面向文档数据库是用于存储、检索和管理面向文档和半结构化的数据。它是NoSQL数据库的一个主要类别。其核心概念就是文档的观念,虽然不同的面向文档数据在实现这个定义上有差别,但它们在文档封装和数据编码上有一些标准格式。编码包括 XML、YAML、JSON 和 BSON,还有二进制格式(诸如PDF和MS office 文档)。 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 。 与现在流行的关系数据库服务器不同,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平台的NoSQL数据库,支持Linq的开源文档数据库,旨在Window平台下提供一个高性,结构简单,灵活,可扩展NoSQL存储。Raven将JSON文档存在数据库中。可以使用C#的Linq语法查询数据。下面是一个简单的例子 项目地址: http://ravendb.net/ 入门指南: http://ravendb.net/tutorials 下载: http://ravendb.net/download 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# 编写,可让你直接在数据库中存储对象。 项目地址: http://www.sisodb.com 入门指南: http://www.sisodb.com/Wiki 下载: https://github.com/danielwertheim/SisoDb-Provider/ 8. RaptorDB 是一个很小的、快速的嵌入式 NoSQL 存储模块,无需安装服务,使用 B+ 树 或者 MurMur哈希索引。支持数据持久化到磁盘中存储。 项目地址: 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