2009-09-02 50 views
2

我知道你會說有幾個重複的問題。我讀過其中大部分。但我需要一個針對我提出的具體案例的答案。在Firebird blob字段中存儲數百萬個小圖像

我打算在Firebird數據庫中存儲數百萬個小jpg圖像(大約3kb)。

假設:
- 將包含這些圖像的表將不包含任何其他信息,但它的關鍵;
- 這不是一個Web應用程序;
- 圖像將永遠不會更新;
- 在大多數情況下,數據庫永遠不會增長到一位數以上的GB;
- 服務器必須易於維護,因爲不會有DBA來處理它。

這是一個很好的方法嗎?或者我應該考慮將圖像保存在文件系統中?

請。我需要一個針對非web應用程序和Firebird數據庫的特定答案。

+0

有什麼特別的原因? – 2009-09-02 12:29:26

+0

將二進制數據存儲在數據庫中沒有意義。您無法通過二進制圖像數據來過濾結果。你不能操縱它。它沒有利用數據庫提供的任何東西。 – 2009-09-02 12:34:24

+4

是的,它利用了它存儲數據的能力。如果您已經使用數據庫存儲其他內容,繼續使用它來存儲圖像是有意義的,而不是將數據存儲在兩個不同的位置。 – skaffman 2009-09-02 12:36:13

回答

1

我看到這Firebird News

一個討論的問題是:成團塊或不團塊?

1

在以前的公司,我們在Oracle 8中存儲了每秒32kb的1.55億個圖像(然後是9,然後是10)數據庫。這也有關於每個圖像的更多信息。

所以我會認爲FireBird應該能夠保持一百萬左右的出門打破太多的汗水。

+0

不過,二進制處理在數據庫和數據庫之間差別很大。例如,Oracle在存儲BLOB(它破壞了tx日誌)方面非常糟糕,但可以與RAW一起使用。火鳥也可能會吮吸二進制文件。 – skaffman 2009-09-02 13:09:17

+0

它對我們來說非常合適。 – 2009-09-03 08:08:18

0

我會建議存儲文件系統 - 但是,這樣做的三件事情的一種或多種:

  • 商店他們在一個分層目錄結構(不知道的情況下無法提出詳細說明),使沒有問題與讀取大型目錄
  • 商店他們集檔案中(如焦油),可能壓縮 - 對文件系統浪費拯救存儲小文件
  • 在您的應用緩存機制。
0

最好的辦法是不將圖像存儲在與dBASE,而是將它們存儲與文件系統。

然後,您可以在您的dbase中使用映像查找表,其中每個記錄包含文件系統中映像文件的相對或絕對路徑。

作爲一般規則,將圖片存儲爲數據庫中的斑點非常不現實。