我已经习惯了Google AppEngine中的BigTable nosql数据库。 现在我正在以“文档”的概念学习couchDB。 我不确定这两件事是否相同。在GAE大表中,您可以像对关系数据库一样对数据进行建模,除了只有最小的事务(仅用于将细节链接到实体),没有连接和字段上的约束(每行可以有不同的字段)。
这对于couchDB也是如此吗?他们是映射普通实体的其他方法吗? 例如,对于错误跟踪器,您将如何映射Bug,用户(谁打开错误),开发人员(谁应该修复它),BugType和BugStatus?
答案 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"}
]
}
答案 1 :(得分:1)
我发现有关在couchdb中建模数据的最佳博客: