![]() |
1
2
为了给你提供一个具体的想法,我将以某种方式模拟一个Dropbox克隆:
这将是文件结构:
如果需要,还可以添加一个reduce函数,只需
假设您调用了数据库“dropclone”,并将视图添加到名为“dropclone”的设计文档中,视图名为“files”,则您可以这样查询它:
对于 http://localhost:5984/dropclone/_design/dropclone/_view/files?key=[ “共享图片”、“假期”]&reduce=false&include\u docs=true
您还可以将整个共享名和路径添加到_id中,因为这样您就可以仅通过已知路径直接访问每个文件。您仍然可以冗余地添加路径或不添加路径,只需将\u id动态拆分为其路径组件。 其他方法包括:
|
![]() |
2
1
数据建模从应用程序将使用的查询开始。 如果您的查询是用户看到他/她的所有文件夹,并且打开文件夹会显示其下的所有文档和子文件夹,则选项1适合查询。 然而,有一个非常重要的问题需要首先回答,尤其是对于CouchDB。这就是数据库的大小。如果需要跨多个节点划分数据库,那么性能将受到影响,可能会导致数据库没有响应。因为打开一个包含许多文档的文件夹意味着搜索每个分区。这是因为分区是由用户无法控制的ID散列决定的。对于小型单节点(或非分区)DB,性能良好。
选项3/4是一种非规范化,解决了上述性能问题。如果文档很大并且经常更新,则存储开销和压缩成本可能会很大。你需要为你的特定工作量设定基准。
|
![]() |
Sweepy Dodo · JSON lite的格式化 5 月前 |
![]() |
user24242514 · 将嵌套查询字符串请求转换为字典 6 月前 |
![]() |
Shane Harley · 通过这些JSON元素进行映射 6 月前 |
![]() |
Shane Harley · 将HTML作为JSON字符串的一部分? 6 月前 |
![]() |
Matt Miles · 如何将嵌套的JSON转换为数据帧? 7 月前 |