1

关于这个问题:

用于 Web 照片库的正确 NoSQL 数据架构

在 MySQL 中,检索专辑的内容如下所示:

SELECT photos.*, albums.album_title
FROM photos, albums_to_photos, albums
wHERE albums_to_photos.photo_id = photos.photo_id AND
      albums_to_photos.album_id = albums.album_id AND
      album_title = 'Family Vacation'

这将检索专辑“Family Vacation”中所有照片的列表

我想到的一种方法是创建一个名为“相册”的表,并将所有照片的照片 ID 存储在值字段中。例如:

{_id:'Family Vacation',
 values:'25, 512, 6172, 16923, 168253, 79185892'}

然后对这些值中的每一个执行多选,以将照片 ID 查找到实际的照片项目。这是一个好方法吗?

4

2 回答 2

0
{
   "_id": ObjectId("4f30153eecd1ab7c49ded566"),
   "album": "Family Vacation",
   "photo": "25"
},
{
   "_id": ObjectId("4f30153eecd1ab7c49ded565"),
   "album": "Family Vacation",
   "photo": "512"
}

单独存储每张照片,如果您想在某个时候添加更多照片信息,例如标题,则更易于管理。还可以考虑使用 id 来引用您的相册。然后您可以执行以下操作:

->find(array(“专辑”=>“家庭假期”))

于 2012-02-06T18:29:03.753 回答
0

Stur,如果我错了,请纠正,但是按列过滤会进行全表扫描,对吗?如果是这样,我相信 Ensnare 提出的解决方案将更好地处理更大的数据。

诱捕,假设标签使用 dynamodb,您可以使用一组整数作为照片 ID,但您需要使用每行 64kb 的限制。

您还可以创建二级索引,使用专辑名称作为主键,使用 photoid 作为范围键。

于 2012-02-07T13:39:58.610 回答