CouchDB
Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"[2]。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的面向文档的NoSQL数据库。其中一个显著的功能就是多主复制。CouchDB的第一个版本发布在2005年,在2008年成为了Apache的项目。 不同于关系型数据库,CouchDB没有将数据和关系存储在表格里。替代的,每个数据库是一个独立的文档集合。每一个文档维护其自己独立的数据和自包涵的schema。一个应用程序可能会访问多个数据库,比如其中一个位于用户的手机上,另一个位于在远程的服务器上。文档的元数据包含版本信息,让其能够合并可能因为数据库链接丢失导致的任何差异。 CouchDB实现了一个多版本并发控制(MVCC)形式,用来避免在数据库写操作的时候对文件进行加锁。冲突留给应用程序去解决。解决一个冲突的通用操作的是首先合并数据到其中一个文档,然后删除旧的数据[3]。 其他功能包括文档级别的ACID语义和最终一致性,MapReduce,复制(Replication)。它还支持通过一个做Futon的内置web应用程序来进行数据库管理。 历史CouchDB(Couch是 cluster of unreliable commodity hardware的首字母缩写)[4]是前IBM的Lotus Notes开发者Damien Katz创建于2005年的一个项目。Damien Katz将其定义为“面向大规模可扩展对象数据库的存储系统”。他对该数据库的目标是让其成为互联网的数据库,其从底层的设计就支持部署web应用程序。他自己通过将近两年的时间创建了该项目同时将其作为开源项目在GNU General Public License下发布。 在2008年2月,其成为Apache Incubator项目,同时其许可协议变更为Apache License。几个月后,其升级为顶级项目。这促使了其第一个稳定版在2010年7月发布。 在2012年初期,Damien Katz离开了项目专注于Couchbase Server。不过该项目还在继续进行中,在2012年4月发布了1.2版本,2013年4月发布了1.3版本。 主要功能
CouchDB内置了一个的叫做Futon的通过web访问的管理接口。 使用案例、产品部署CouchDB的复制和同步强大功能让其能够使用在无法保证网络链接但是应用程序必须继续在离线模式工作的移动设备。 使用CouchDB的企业一些使用CouchDB的企业示例:
数据操作CoucbDB管理JSON文档的集合。文档通过视图进行组织。视图通过Aggregate函数进行定义,过滤查询的时候并行计算,类似MapReduce。 通过HTTP访问数据应用程序通过HTTP与CouchDB进行交互。下面是一些通过cURL进行演示的示例。这些示例假设CouchDB运行在本地localhost(127.0.0.1)的5984端口。
开源组件CouchDB包含了一些其他的开源项目作为其自己的内置包。
其他
参考文献
外部链接
|