2011-07-01 39 views
3

我正在開發一個網站,該網站將在不同部分包含大量圖像。例如,會有用戶照片和文章照片。我想所有的媒體組合成一個單一的媒體數據庫表和存儲圖像基礎上,他們被上傳日期:目錄/數據庫級別上的最佳媒體存儲解決方案

id: 1564 
name: 55821325202772db75de084b2919cabb (hashed) 
path: images/2011/07/01/ 
date: 01-07-2011 
ext: jpg 
type: image 
rtype: news (relation type) 
rid: 153 (relation parent id) 

如果我再需要鏈接到消息後153的所有圖片我需要查詢數據庫具體的rtype和rid。

這是存儲網站媒體的好方法嗎?

編輯:如果我將結合rtype和擺脫1(散列)列,這會導致更快的查詢?

回答

0

這似乎是一個很實用方法來做到這一點。

1

我認爲這樣會起作用,而且很靈活。一個小缺點是你不能從媒體到新聞發佈的外鍵,所以你沒有得到參照完整性。 (你最終可能會遇到孤立的媒體文件。)如果這是一個問題,你可以從媒體到所有可能使用它的表都有可以空的鏈接,並且一個約束條件表明這些鏈接之一必須是非空的。

1

如果您真的需要HIGH性能,您可以試試Redis

對於這個問題,你可以嘗試hash

增加新的項目:

hset id:1564 name 55821325202772db75de084b2919cabb 
hset id:1564 path images/2011/07/01/ 
hset id:1564 date 01-07-2011 
hset id:1564 ext jpg 
hset id:1564 type image 
hset id:1564 rtype news 
hset id:1564 rid 153 

閱讀路徑ID 1564:

hget id:1564 path 

閱讀所有的鍵:

hgetall id:1564 

Redis wo rks速度非常快(比memchached快100倍以上),並且所有數據都將備份到磁盤(異步),因此即使重新引導後數據也不會丟失。 內存大小應該足以存儲您的數據庫,但請確保--Redis可以非常有效地處理內存。

+0

這工作就像一個哈希表? – Jens

+0

@Jens,哈希是Redis中的一種類型的鍵。您可以使用常用的字符串值,列表,集合,排序集合和散列值。有關數據類型的更多信息:http://redis.io/topics/data-types-intro –

相關問題