如何建模我的域以在couchDB中使用?

时间:2010-11-21 17:11:07

标签: model dns nosql couchdb

我已经习惯了Google AppEngine中的BigTable nosql数据库。 现在我正在以“文档”的概念学习couchDB。 我不确定这两件事是否相同。在GAE大表中,您可以像对关系数据库一样对数据进行建模,除了只有最小的事务(仅用于将细节链接到实体),没有连接和字段上的约束(每行可以有不同的字段)。

这对于couchDB也是如此吗?他们是映射普通实体的其他方法吗? 例如,对于错误跟踪器,您将如何映射Bug,用户(谁打开错误),开发人员(谁应该修复它),BugType和BugStatus?

2 个答案:

答案 0 :(得分:2)

我使用GAE已经有一段时间了。据我记得,有模型和同一模型的所有对象具有相同的属性和不同的值。您可以使用类似于SQL的查询语言查询数据库。

在CouchDB中,您存储的所有内容都是一个文档,您不必强制将文档放入任何模式中。您可以通过编写JavaScript函数来查询文档,而不是编写SQL和连接表。相反,你应该尽可能地对数据进行非规范化。

我会针对错误提出以下示例文档:

{ 
  "_id" : "bug-1234",
  "type" : "bug",
  "state" : "new",
  "user" : { 
      "name" : "user",
      "email" : "user@example.com"},
  "developer" : {
      "name" : "superdev",
      "email" : "dev@example.com",
      "id" : "dev-123"},
  "title" : "this is the bug title",
  "description" : "this is the bug description",
  "comments" : [
      {"user" : "tom", "text" : "first!"}, 
      {"user" : "jerry", "text" : "LOL"}
  ]
}

此博文可能会帮助您http://www.couch.io/migrating-to-couchdb

答案 1 :(得分:1)

我发现有关在couchdb中建模数据的最佳博客:

http://www.cmlenz.net/archives/2007/10/couchdb-joins