在我的項目中,我有一個有大約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
。
我的解決方案:
考慮以下兩個步驟:
添加
ImageDocuments
相關文檔,然後通過調用EntityFramework
DbContext
Add
和SaveChange
方法添加所產生的 文檔。調用已創建的存儲過程中的每個
ImageDocuments
的 相關文檔。被調用的存儲過程使用bcp命令 從數據庫中提取圖像文件並將其保存在服務器的特定路徑 中,然後從數據庫中刪除ImageDocument
的數據。
它的工作原理,但我有這樣一些問題:
- 我」不能創建備份集成文件。
- 由於我的保存交易導致原子性違規被破壞爲 一些小型交易。
- 一致性違規。也許在調用存儲過程系統 時墜毀。
- 耐久性違規。因刪除
ImageDocument
記錄到 發佈數據庫空間。
現在我的問題是,,有沒有更好的解決方案來做到這一點,並解決問題?
如果我們可以在SQL服務器中創建一個文件字段來維護文件分隔的數據庫文件中的內容,那將是非常好的。
[SQL Server的FILESTREAM(http://technet.microsoft.com/en-us/library/bb933993(V = SQL.105)的.aspx) –
甚至在磁盤上破越好..。 –
我不是那種在數據庫中保存圖像的好習慣。當我面臨同樣的挑戰時,我只保存路徑。 –