代码之家  ›  专栏  ›  技术社区  ›  RageZ

CouchDB是一个现实世界的例子

  •  40
  • RageZ  · 技术社区  · 15 年前

    今天晚上,在我的每日技术搜索中,我看到了CouchDB,它的性能是任何RDBM的10到100倍,它如何将我们从SQL语言、表、主键等等中拯救出来。我决定自己试试。唯一的问题是,我似乎无法弄清楚它是如何工作的。

    首先,我想用couchdb编写一个Web联系人管理器代码。这个项目可以让用户做一些基本的事情,比如

    • 创建/编辑/删除联系人
    • 查看他们订购的联系人列表
    • 根据不同的条件搜索它们

    那我该怎么开始呢?

    这是我的一些想法

    • 为每个用户创建一个数据库,如July,Ann
    • 在这些数据库中,添加一些类型为contact的文档,文档首先看起来像这样,请参见代码1
    • 创建/编辑/删除是直截了当的,只需在良好的数据库中执行Put、Post、Delete即可。
    • 搜索将由couchdb-lucene处理,就像dnolen建议的那样。

    现在出现了困难的部分,我不太了解整个map/reduce概念,以及如何使用它来完成我以前使用SQL所做的工作。另外,对于视图,如何处理分页,以及分组。

    我想建立一个带有类似这样的链接分页集的屏幕

    John, Doe
    Johny, Hallyday
    Jon, Skeet
    
    A B C D E F **J** etc .... <-- those are link to see persons with that first name
    

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


    联系文件。

    {
        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 ...
    }
    
    3 回复  |  直到 6 年前
        1
  •  23
  •   user203631    15 年前

    奥雷利即将出版的书可以免费在线阅读: http://books.couchdb.org/relax/

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

    存储和检索数据非常简单,最困难的部分是考虑映射/减少视图而不是SQL查询。

        2
  •  8
  •   Brian Agnew    15 年前

    IBM有一个伟大的 tutorial ,使用curl通过 REST interface .

        3
  •  5
  •   dnolen    15 年前

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

    对于强大的搜索,我推荐CouchDB Lucene。