在NoSQL中存储相册的内容

时间:2012-02-06 18:14:45

标签: python nosql amazon-dynamodb

继续这个问题:

  

Proper NoSQL data schema for web photo gallery

在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查找为实际照片项目。这是一个好方法吗?

2 个答案:

答案 0 :(得分:0)

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

单独存储每张照片,如果您想在某些时候添加更多照片信息,例如标题,则更容易管理。另请考虑使用id来引用您的相册。然后你可以做类似的事情:

- > find(array(“album”=>“Family Vacation”))

答案 1 :(得分:0)

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

Ensnare,假设您使用dynamodb,您可以使用Set of Integer作为照片ID,但是您需要使用每行64kb的限制。

您还可以使用相册名称作为主键,将photoid作为范围键来创建辅助索引。