2013-06-24 18 views
0

在我的項目中,我有一個有大約60個表的大型數據庫。 我應該保存並收集許多圖像文件(約5000),其平均大小約爲2MB。在SQL中存儲圖像字段的最佳和大規模解決方案是什麼?

我的數據庫的估計大小將是10 GB甚至更高!

在代碼中首先要考慮的機型如下:

class Document 
{ 
    [Key] 
    public int Id {get;set} 
// ... 
    public virtual ICollection<ImageDocument> Images {get;set;} 
} 

class ImageDocument 
{ 
    [Key] 
    public int Id {get;set} 
// ... 
    public Document Document {get;set;} 
} 

正如你看到的每一個文件都有一些ImageDocuments

我的解決方案:

考慮以下兩個步驟:

  1. 添加ImageDocuments相關文檔,然後通過調用EntityFramework DbContextAddSaveChange方法添加所產生的 文檔。

  2. 調用已創建的存儲過程中的每個ImageDocuments的 相關文檔。被調用的存儲過程使用bcp命令 從數據庫中提取圖像文件並將其保存在服務器的特定路徑 中,然後從數據庫中刪除ImageDocument的數據。

它的工作原理,但我有這樣一些問題

  1. 我」不能創建備份集成文件。
  2. 由於我的保存交易導致原子性違規被破壞爲 一些小型交易。
  3. 一致性違規。也許在調用存儲過程系統 時墜毀。
  4. 耐久性違規。因刪除ImageDocument記錄到 發佈數據庫空間。

現在我的問題是,,有沒有更好的解決方案來做到這一點,並解決問題?

如果我們可以在SQL服務器中創建一個文件字段來維護文件分隔的數據庫文件中的內容,那將是非常好的。

+1

[SQL Server的FILESTREAM(http://technet.microsoft.com/en-us/library/bb933993(V = SQL.105)的.aspx) –

+0

甚至在磁盤上破越好..。 –

+0

我不是那種在數據庫中保存圖像的好習慣。當我面臨同樣的挑戰時,我只保存路徑。 –

回答

相關問題