2011-07-31 43 views
0

比方說,我有一個博客文章列表。每篇文章都有一個圖像,每個圖像都有一個縮略圖。數據庫設計 - 大字段

顯示文章列表時,每個文章都會顯示縮略圖;當顯示一篇文章時,它將顯示全尺寸的圖像。

這意味着我有三件大型(未知尺寸)數據項與每篇文章:圖像,縮略圖和文本。

什麼是這些設計的優點和缺點:

  1. 文章表包括縮略圖列和圖像列
  2. 文章表包括縮略圖列,圖像存儲在單獨的表中
  3. 縮略圖和圖像存儲在一個單獨的表
  4. 縮略圖,並存儲在自己單獨的表圖片
  5. 網站有寫訪問文件夾中的圖像和縮略圖店d,數據庫包含的URL /文件名

(任我還沒有考慮過?)

如果它的確與衆不同,我不認爲它應該,該網站將被用Ruby/Rails編寫,使用Postgres或MySql。

回答

0

如果我正確理解事情,數據庫已經自動處理根據字段的數據類型和大小將大字段分離爲單獨的「表」。谷歌爲「行外存儲」或類似的東西。可能也有這樣的設置。

這意味着您不必爲自己的大型字段創建單獨的表。

至於存儲磁盤而不是數據庫我不知道。我認爲這個問題以前曾經被問過很多次。

1

IMO,選項5是最好的。僅僅因爲你可以將圖像存儲在數據庫中,並不意味着你應該這樣做。將文件位置以及有關圖像的任何元數據存儲在數據庫中。將圖像存儲在文件系統中。

在數據庫中存儲圖像的'缺點'是,你最終會跳過箍環來實際使用你的應用程序中的圖像。幾乎任何圖書館,腳本,插件等都可以使用你的圖像,如果他們在一個目錄中沒有任何特殊的編碼。將它們放在數據庫中,您需要編寫代碼才能提供使用它們的權限。

我能看到的唯一好處是在多個Web服務器使用單個(或複製數據庫)的webfarm環境中,圖片將自動提供給所有Web服務器,並且數據和圖像可以全部備份一旦。

國際海事組織,利弊遠遠超過親使用數據庫來存儲圖像。

+1

在一般情況下,您還必須管理和同步兩組不同的權限:一組設置在dbms中,另一組設置在文件系統中。如果一般的網絡公衆被允許提交圖片,他們需要在部分文件系統中擁有'w'權限,這對一些公司來說是可以接受的,而對於其他公司是不能容忍的。 –