2013-05-13 66 views
0

在我的Windows 8/RT應用程序中,我在獨立存儲中使用SQLite DataBase(sqlite-net)女巫商店。在DataBase中,我有很多數據,包括文件(圖像,pdf和其他)鏈接。我從Web服務器獲得這些鏈接。當我獲得鏈接時,我想要下載文件並將其存儲在本地。

我的問題是:什麼是存儲大量文件(100 +)的最佳方式?
一個重要的想法:我需要組織快速找到想要的文件通過添加快速搜索來存儲大量文件的最佳方式

我有三個想法:

  1. 僅創建的文件另一個數據庫(我不能修改現有的)
  2. 在IS中創建文件夾,並直接存儲在這裏。
  3. 創建文件列表並將其存儲在IS中。

這將是更好/更快?或者有人有另一個偉大的解決方案?

+0

什麼是您期望的平均和最大文件大小? – mvp 2013-05-13 08:15:35

+0

最大尺寸== 5Mb,平均尺寸== 1Mb – jimpanzer 2013-05-13 08:26:47

回答

0

100個文件是不是就可以輕鬆存儲多達在單(NTFS)目錄100K的文件(或文件夾)這樣的大數目。

如果從Web服務器接收文件,則問題是源是否可以確保沒有重複的文件名。如果這不能保證,我建議有一個數據庫表從原始文件名和元數據映射到它的散列(SHA256或類似),並存儲文件與其散列相對應的文件名。

然後,使用文件時,你可以通過它傳遞給使用使用StorageFile API原來的文件名用戶。

超過100k個文件,您可以從散列的前兩個字母創建子文件夾結構。

無論哪種方式,存儲在數據庫中,並在目錄中的文件的文件元數據已經爲我們在過去的最有用的方法。

0

平均大小爲1MB的100個文件只有100MB。

大多數人說,存儲數據庫二進制文件是錯誤的,建議分開,只存儲文件保存的文件名在數據庫中,但我認爲它是好的前提是你知道自己在做什麼,爲什麼。

在數據庫中存儲文件的巨大優勢在於,您可以將文件與其屬性邏輯地保存在一起。此外,你可以簡單地複製一個文件,這將備份一切。

數據庫還爲您提供交易支持。讀取BLOB並將其寫入數據庫可能會遇到一些問題,但這不是很困難。

+0

爲什麼人們這麼說?如果您始終通過數據庫訪問文件,則單獨存儲文件非常脆弱。 – reinierpost 2013-05-13 08:40:20

+0

我不知道爲什麼。我傾向於使用數據庫的一切。我可能會重新考慮我的文件是否超過100MB – mvp 2013-05-13 08:41:30

+1

我認爲它通常只是一種自動關聯:文檔通常是文件系統上的文件,因此開發人員不會想到它們也可以以不同的方式存儲。 – reinierpost 2013-05-13 08:44:53

相關問題