couchDB - 书签数据建模的正确方法?

couchDB - correct way to model bookmark data?

我正在学习 couchDB,并决定构建一个书签管理器作为实践项目。

我有点拘泥于 RDBMS 的思维方式,一直想像创建表格一样创建文档。

所以我想知道这种方法在使用像 couchDB 这样的文档数据库方面是否 "correct"?

每个文档都包含用户数据,我将文档命名为user12345612345.json,然后像这样构造里面的数据:

{
     "username":"todd",
     "password":"hSnxS987sDJf77600sHjdyDhskJShdskshjS75sa765sa"
     "bookmarks":
                  [
                       {
                       "url":"http://www.hello.com",
                       "title":"Hello website"
                       },
                       ... etc...
                  ]
}

因此,我将一个用户的所有书签存储在一个文档中。这样,我可以在登录时加载它,并管理数据,如果有更新,我会更新那个文档。

我和许多用户一起思考,如果我将每个书签存储为一个文档,那将是无数个需要用户索引的文档 - 不确定这是否是正确的方法。

我的下一步是添加文件夹和标签。我在想我会简单地将这些数组添加到这个用户文档中。

对吗?

你做对了。从结构化到 "less structured" 时,您需要采取的最大心理步骤是将对象属性保持在一起。因此,如果用户是唯一的并且书签与该用户相关联,请像现在一样将用户和书签放在一起。 您的用户和标签也一样。想想你在你的应用程序中做什么。您可能希望在一次调用中检索用户及其书签、标签、文件夹等,而不是遍历多个表、连接等。这就是 NoSQL 的优点。 ;-)