我想通过开发一个PhotoAlbum应用程序来尝试CouchDb,其中不同的用户可以拥有许多包含许多照片的相册。如果我为每个用户创建一个包含一系列专辑的文档,其中包含带附件的照片,我是否正确?
{
user: "Dominik",
albums: [
{ name: "USA Trip", photos:
[
{ title: "Golden Gate Bridge", _attachments: [ the photo ] },
{ another photo }
]
},
{ ...} ]
}
还是有其他好办法吗?
或者将每个用户,专辑和照片存储在不同的文档中是否更好?这需要像mysql中的外键吗?
{ type: "user", name: "Dominik", albums: [ "a1", "a2", "a3" ] }
{ type: "album", _id: "a1", title: "USA Trip", photos: [ "p1", "p2" ... ] }
{ type: "photo", _id: "p1", _attachments: {...}, title: "Golden Gate Bridge" }
...
或者反过来?:
{ type: "user", _id: "u1", name: "Dominik" }
{ type: "album", _id: "a1", title: "USA Trip", user: "u1" }
{ type: "photo", _id: "p1", _attachments: {...}, title: "Golden Gate Bridge", album: "a1" }
答案 0 :(得分:1)
从我的观点来看,最好将数据分成几小部分。但这只是你的选择。我之所以选择划分是因为我面临每个“key-value-instance”的memcached-server限制1Mb(我们在memcached中缓存CouchDB文档),所以我们无法将数据存储在一个文档中。
但是,将数据存储在一个文档中当然有好处。我希望其他人会讲述他们的经历,你会选择最适合自己的经历。
答案 1 :(得分:1)
1999是对的。还有两点:
validate_doc_update
函数无法查看外部文档。 (如果您不使用CouchDB进行帐户和身份验证,则无关紧要。)