3

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 つのインデックス付きフィールドを使用する方が安価です。

4

1 に答える 1