2011-04-25 74 views
2

我的應用程序使用數據庫(用於存儲掃描文檔等)。這些通常是JPEG圖像,大部分只是文本。用於圖像的數據庫存儲引擎

我知道這是建議從數據庫中使用圖片文件,並鏈接到他們,而是要找回他們這樣它只是更容易。該應用程序使用一臺服務器和多個客戶端,並且存儲文件會浪費大量硬盤空間(開銷,扇區分配等),並且需要使用共享文件夾和映射的驅動器和內容。慢,而且不太安全。

總之,我們的一些客戶已經使用了幾年我們的應用程序,他們的數據庫已經成長爲數十GB的,因爲這些圖像的居多。目前他們存儲在InnoDB表(MySQL)中。

問題是:有沒有更好的方法?

數據本身是一次性寫入的,而不是通常會被刪除(但理論上是可能的),這樣的東西是緩慢的存儲(合理範圍內)的,不可改變的和快速的訪問將是完美的。

我想使我自己的存儲引擎,將包括壓縮,索引和緩存,只允許每個表的兩列(BIGINT,BLOB)的。這樣的事情已經存在嗎?

+0

我會檢查大傢伙在做什麼。即Flickr,Tumblr,Facebook(?)等 – givanse 2013-08-24 02:51:22

回答

0

MSSQL 2005年推出的文件流,它允許你存儲在數據庫中三分球,但保持斑點從數據庫中,並在目錄(因爲他們應該)。整潔的事情是,當你備份數據庫時,blob也會被備份。兩全其美。目錄也是受限訪問,通常只有SQL本身才能訪問。

存儲圖像作爲文件,保持指針在數據庫中。

+0

不是很好,因爲有很多圖像,他們傾向於在磁盤上佔用更多的空間而不是實際的空間,這就是爲什麼我要尋找一個寫入它們的存儲引擎連續。這是一個可以在一年內掃描一百萬份文件的系統。 – Patrick 2011-04-26 12:08:09