2009-11-09 75 views
0

我有一個將圖像存儲在數據庫中的應用程序。 現在我已經瞭解到,由於性能的原因,這不是最好的方法。將文件存儲在文件系統上

我已經開始抽取所有的「斑點」從數據庫中,並加入他們(通過虛擬文件夾)到數據文件夾

的問題是,我有媒體鏈接存儲8000個斑點,如果我把它們在像這樣的文件夾「data/< blobid>/< blobname.extension>」這個文件夾將包含許多可以管理的文件夾。

我想知道如何將文件存儲爲最佳? 將它們在創建日期中分組,例如「data/< year/< month>/< day>/< blobid>/< name>」。 我還必須補充說我們的文件存儲在數據庫的樹中。 我想知道是否應該將該樹結構映射到文件系統,唯一的問題是您可以移動分支。這意味着我必須移動文件系統上的分支。

任何幫助,歡迎。

Grtz, 中號

回答

7

您正在使用什麼版本的SQL Server?因爲如果您使用的是2008年,則可以使用FILESTREAM datatype來存儲圖像。這與將它們存儲在文件存儲中一樣有效,但沒有任何相關的麻煩。見Getting Traction with SQL Server 2008 Filestream

+0

thx,我會毫不猶豫地研究這一點。 – user29964 2009-11-09 14:30:42

+0

+1 - 我不知道這種類型,但它聽起來像我也應該使用它。謝謝! – 2009-11-09 14:43:10

0

您是否需要將文件存儲在相關的樹結構中?如果沒有,你可以命名文件/YOURFOLDER/blobid_blobname.extension。通過這種方式,上傳文件夾純粹作爲數據存儲庫而不是模擬數據結構。

1

一個簡單的策略是根據第一個[幾個]數字進行分組。例如:

1/ 
    2/ 
     123.blob 
     129.blob 
    5/ 
     151.blob 
2/ 
    0/ 
     208.blob 

這樣,你就知道在一個目錄中永遠不會有超過10個子目錄。您當然可以使用更多或更少的級別(目錄)和/或每個級別更多的數字。

一個更復雜的,動態的系統可以根據需要創建子級別:如果斑點的某個目錄數超過預設的最大值,創建另一個10個子目錄和文件移動

1

的BLOB數據大多數文件系統將設置了一些子目錄。舉例來說,如果你的ID爲1-10000,你可以有:

00/ 
    00/ 
    01/ 
    02/ 
     00020.blob 
     00021.blob 
     ... 
    ... 
01/ 
02/ 
03/ 
... 

其他問題我已經爲你回來:爲什麼會這樣對你不好給他們管理爲BLOB?

+0

,因爲我們的數據庫非常龐大+我們希望將我們的文件(視頻,音樂)傳輸到我們的Flex應用程序。 – user29964 2009-11-09 14:49:52

+0

大數據庫沒有問題,你是通過HTTP「流」嗎? – Xailor 2009-11-09 15:28:39

相關問題