2012-05-11 49 views
2

我有一個電子商務網站在MongoDB + GridFS上工作。 每個產品最多可以有5個圖像。 每張圖片都有3張不同尺寸的縮略圖。GridFS - 產品圖片和縮略圖 - 什麼是最好的數據庫結構?

我需要一個關於最佳DB結構的建議。

目前我在考慮到圖像的ID,也拇指的ID(從GridFS的標識)存儲在每個產品:

{ 
    '_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

如果您將圖像與MongoDB中的GridFS一起存儲,我會選擇第一個。

第二個模式似乎不正確。我的意思是GridFS應該存儲文件,所以使用圖像的ID您不需要這些文件中的任何路徑。如果你只是想存儲文件的路徑,直接將它嵌入到你的主集合中,所以你不需要這種無用的集合的開銷。

如果你確實應該將圖像存儲在dbms中,一般參見Storing Images in DB - Yea or Nay?

此外,如果您只保存路徑,則您可能需要很少或不需要更改,以防切換到某個CDN以將圖像發送給客戶。

相關問題