41

今晚在我的日常技术谷歌搜索中,我遇到了 couchDB,在看到大量关于它如何执行比任何 RDBM 好十到一百倍的演示之后,它如何将我们从 SQL 语言、表、主键等等中拯救出来。我决定自己尝试一下。唯一的问题似乎我无法弄清楚它是如何工作的。

首先,我想使用 couchDB 编写一个 Web 联系人管理器。该项目将使用户能够做一些基本的事情,比如

  • 创建/编辑/删除联系人
  • 查看订购的联系人列表
  • 根据各种标准搜索它们

那么我该如何开始呢?

这里是我的一些想法

  • 为每个用户创建一个数据库,例如July, Ann
  • 在那些数据库中,添加一些类型为联系人的文档,该文档首先看起来像这样,请参见代码 1
  • 创建/编辑/删除很简单,只需要在好的数据库中做PUT、POST、DELETE
  • 搜索将由 couchdb-lucene 处理,如 dnolen 建议的

现在困难的部分来了,我并不真正了解整个 map/reduce 概念以及如何使用它来完成我以前使用 SQL 所做的工作。还有视图如何处理分页,还有分组。

我想用一组类似这样的链接建立一个屏幕

约翰,多伊
约翰尼,哈利戴
乔恩,飞碟

ABCDEF **J** 等 .... <-- 这些是查看具有该名字的人的链接

我应该创建什么视图来实现这一点,如果你能提供样本,那就太好了。


联系文件。

{
    type: 'contact',
    firstname: 'firstname',
    lastname: 'lastname',
    email: ['home': 'foobar@foobar.net', 'work': 'foobar@foobar-working.net'],
    phone: ['home': '+81 00 0000 0000'],
    address: []
    ... some other fields maybe ...
}
4

3 回答 3

24

O'Reilly 即将出版的新书可在线免费阅读:http: //books.couchdb.org/relax/

只需安装和使用——您可以在命令行上使用 curl 直接执行 http 请求,或使用名为 futon 的内置 Web 界面。

存储和检索数据真的很容易,最难的部分是考虑 map/reduce-views 而不是 sql 查询。

于 2009-11-05T16:04:36.810 回答
8

IBM 有一个很棒的教程,使用 curl 通过REST 接口进行读/写。

于 2009-11-05T13:07:11.083 回答
6

使用 CouchDB 很容易实现您的应用程序。每个用户都有一个数据库。联系人只是特定用户数据库中的文档。CRUD 只是使用 HTTP 与数据库通信。您可以创建发出键(姓、名)以允许排序的视图。

对于强大的搜索,我会推荐 couchdb-lucene。

于 2009-11-05T15:45:21.007 回答