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 的优点。 ;-)
我正在学习 couchDB,并决定构建一个书签管理器作为实践项目。
我有点拘泥于 RDBMS 的思维方式,一直想像创建表格一样创建文档。
所以我想知道这种方法在使用像 couchDB 这样的文档数据库方面是否 "correct"?
每个文档都包含用户数据,我将文档命名为user12345612345.json
,然后像这样构造里面的数据:
{
"username":"todd",
"password":"hSnxS987sDJf77600sHjdyDhskJShdskshjS75sa765sa"
"bookmarks":
[
{
"url":"http://www.hello.com",
"title":"Hello website"
},
... etc...
]
}
因此,我将一个用户的所有书签存储在一个文档中。这样,我可以在登录时加载它,并管理数据,如果有更新,我会更新那个文档。
我和许多用户一起思考,如果我将每个书签存储为一个文档,那将是无数个需要用户索引的文档 - 不确定这是否是正确的方法。
我的下一步是添加文件夹和标签。我在想我会简单地将这些数组添加到这个用户文档中。
对吗?
你做对了。从结构化到 "less structured" 时,您需要采取的最大心理步骤是将对象属性保持在一起。因此,如果用户是唯一的并且书签与该用户相关联,请像现在一样将用户和书签放在一起。 您的用户和标签也一样。想想你在你的应用程序中做什么。您可能希望在一次调用中检索用户及其书签、标签、文件夹等,而不是遍历多个表、连接等。这就是 NoSQL 的优点。 ;-)