|
|
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是一种非规范化,解决了上述性能问题。如果文档很大并且经常更新,则存储开销和压缩成本可能会很大。你需要为你的特定工作量设定基准。
|
|
|
Jinmin · 如何防止匿名用户阅读couchdb? 8 年前 |
|
|
Trevor · 查找pouchdb错误的方向 8 年前 |
|
|
jkndrkn · 如何在CouchDB 2.0日志中查看HTTP头? 8 年前 |
|
|
Masiar · CouchDB中的部分搜索/查找 8 年前 |
|
|
user3740179 · 数据库的随机名称 8 年前 |
|
|
Lokesh Jain · 从CouchDB中的数组中删除值 8 年前 |
|
|
David J. · 使用多个斜杠将文档保存到CouchDB URL 8 年前 |