MongoDB + GridFS で動作する電子商取引 Web サイトがあります。各商品には最大 5 つの画像を含めることができます。各画像には、サイズの異なる 3 つのサムネイルがあります。
これに最適な DB 構造についてアドバイスが必要です。
現在、各製品にイメージ ID とサム ID (GridFS の ID) を保存することを考えています。
{
'_id': 1,
'title': 'Some Product',
'images': [
{'id': '11', thumbs: {'small': '22', 'medium': '33'},
{'id': '44', thumbs: {'small': '55', 'medium': '66'}
]
}
それとも、パスを GridFS に格納した方がよいのでしょうか?
{
'_id': '111',
'filename': '1.jpg',
'path': 'product/988/image/111/'
},
{
'_id': '222',
'filename': '1.jpg',
'path': 'product/988/image/111/thumbnail_small'
},
{
'_id': '333',
'filename': '1.jpg',
'path': 'product/988/image/111/thumbnail_large'
}
UPDATE : GridFS の「パス」フィールドは、実際のパスではなく「偽の」パスです。すべての関連ファイルをすばやく見つける方法です。複合インデックスを使用する複数のフィールドよりも、1 つのインデックス付きフィールドを使用する方が安価です。