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 跟随项目 。
分享到:
相关推荐
为了帮助开发者更好地理解并利用这一新平台的功能,《Introducing Windows 7 for Developers》一书应运而生。本书由Yochay Kiriaty、Laurence Moroney、Sasha Goldshtein 和 Alon Fliess 共同编写,并由Microsoft ...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
《Introducing Python》是一本广泛认可的Python编程入门书籍,英文版提供了全面而深入的Python语言教程。这本书适合初学者,也对有一定经验的程序员有很高的参考价值。它覆盖了Python的基础语法、核心概念以及一些...
Java 8 是Java编程语言的一个重要更新版本,由Raoul-Gabriel Urma所著的《Introducing Java 8》是一本介绍Java 8新特性的指南书。本书提供了Java 8中新增的Lambda表达式和流(Streams)的快速入门,旨在帮助程序员...
《Introducing Visual C# 2010》是面向初学者和中级程序员的一本经典教程,旨在引导读者深入了解Visual C# 2010编程语言及其相关开发工具。随书附带的源代码是为了帮助读者更好地理解书中的示例和实践项目,以便于将...
Introducing Erlang Getting Started in Functional Programming(2nd) 英文epub 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
《Introducing Visual C# 2010》是关于C#编程语言的一份详细指南,主要针对Visual Studio 2010版本。这本书深入浅出地介绍了C#的基础概念、语法以及在实际开发中的应用。C#是微软公司推出的面向对象的编程语言,广泛...
Introducing Bootstrap 4 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或...
Introducing JavaFX 8 Programming provides a fast-paced, practical introduction to JavaFX, Java’s next-generation GUI programming framework. In this easy-to-read guide, best-selling author Herb ...
从给出的文件内容来看,我们正在讨论一本关于正则表达式的电子书——《Introducing Regular Expressions》,该书由Michael Fitzgerald撰写,2012年由O'Reilly Media出版。 正则表达式的知识可以分为以下几个部分来...
【标题】:“Introducing Power BI” 【描述】:“Introducing Power BI”可能是一个关于微软的商业智能工具Power BI的介绍性材料,旨在帮助用户理解其基本概念、功能和使用方法。Power BI是一款强大的数据分析和...
Introducing Starling Building GPU Accelerated Applications 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除