【转】Introducing… CouchDB!

Introducing… CouchDB!

pi1ot 同学提了一个问题:

javaeye上看到的“用Erlang开发的文档数据库系统CouchDB”是个什么东西,啥叫文档数据库啊

这是一个好问题,因为我也老见到这个名字,但总不知其所以然,因此,特地作了一下 research ,将我了解到的,与诸君共享。

啥叫文档数据库?

CouchDB FAQ 里面这么写:

A CouchDB document is an object that consists of named fields. Field values are lists that may contain strings, numbers and dates.

晕啊,这段虫族文翻过来,我大致这么理解:它是一个数据库,它的里面存放文档。没了!怎么能没了呢?是的,它就是没了,没有 schema, 没有 table, 没有 record,也没有 sql 。就是这样的数据库了,抓狂去吧。哈哈。其实,这个玩意并不罕见。

从概念上,和 Erlang 的 dict ,或者 Java/.Net 的 hashmap ,以及 Oracle 收购的 BerkleyDB可以模糊糊糊的看作一类东西。尤其是你用自己的生物 CPU 把 XML 和 Json 或者 Term 都模糊为“数据”的话。

HaHa,就是一个大 Hash !

那么,CouchDB 是个什么东西?

首先 couchDB 的 couch 是 Cluster Of Unreliable Commodity Hardware 的缩写,即“由不可靠的廉价硬件组成集群”(是不是听起来似曾相识呢?没错,google 提起自己的核心技术的时候,也常常这么说),单就名字而言,就能嗅到野心勃勃的味道。这个计划是由 Mysql 的工程师 Damien Katz发起的。目前,它的核心特性包括:

- a REST API using JSON instead of XML for data transport,
- a JavaScript view engine based on Mozilla Spidermonkey,
- a GNU Autotools build system supporting most POSIX systems (Noah Slater) ,
- a built-in administration interface (Christopher Lenz),
- experimental fulltext search with Lucene (Jan Lehnardt) and
- countless tweeks, enhancements and other small refinements.

如果这个列表看的你一头雾水,那太正常了,我也是哦。这里核心的关键词是 —— Json !没错,就是这个东西。所以,看到如下的 related project 列表就不足为奇了:

* CouchObject (Ruby client + JsServer for views in Ruby)
* CouchDb-Ruby
* CouchDB4J Java bindings
* Levitz - XUL based CouchDb utility client
* Erlang interface to CouchDB
* Perl interface, Net::CouchDb
* CouchDB Python Library
* CouchDB Common Lisp Library
* jQuery CouchDB Library
* Another PHP library for CouchDb

换句话说,如果以 CouchDB 为 DB ,那么你几乎可以用星球上的任何一种语言来访问它。而且,如果你语言恰好不支持(如果连 Http/Json 都不支持,我很怀疑这样的语言可以做什么用),你很快就能自己写一个出来。

其次,呃……,没有其次了(想必 Replication RESTful JavaScript Lucene 这些关键词你早已耳熟能详不用我废话了 )。

畅想下,一个特别 2.0 的技术小组,借助 CouchDB 仅仅用到 Javascript (CouchDB 就是 DB ,其中的 Javascript view 就是 SQL,Javascript json 就是 Protocol,界面?莫不是 Javascript + HTML 的一颗小菜?)就能在 CouchDB 之上,通过“纯Javascript的方式”搞出一个巨复杂的 Web 2.0 应用,开发速度以小时计哇,什么 Ror Zend ErlyWeb 的统统无视(都没有数据表,搞那些浪费生命的劳什子做甚?)。哈哈……。《如来神掌》之Web开发版秘籍在此,5毛一本。

那么,和 Erlang 有什么关系?

呃,没有说么?CouchDB 是用 Erlang 写的。实际上,还有 C(SpiderMonkey) 。

其他

关于 couchDB,infoq 有一篇很不错的介绍文章(RDBMS is not Enough)(中文翻译)。其中还提到了RDDB,是一个 CouchDB 的 Ruby 跟随项目 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值