簡體   English   中英

存儲下載文件的最佳方法是什么?

[英]What is the best way to store downloaded files?

對不起,標題不好。

我正在保存網頁。 我目前使用1個XML文件作為索引。 一個元素包含文件創建日期(UTC),完整URL(帶有查詢字符串,而沒有)。 並將標頭放在一個單獨的文件中,該文件具有相似的名稱,但附加特殊擴展名。

但是,要處理40k(包括頭文件)文件,XML現在為3.5 MB。 最近,我仍在閱讀,添加新條目,保存此XML文件。 但是現在我將其保留在內存中,並偶爾保存一次。

當我請求頁面時,使用XML文件上的XPath查找URL,如果有條目,則返回文件路徑。

目錄結構為。\\ www.host.com/ randomFilename.randext

所以我正在尋找更好的方法。

我在想:

  • 每個XML文件一個。 域(包括子域)。 但是我覺得這可能很麻煩。
  • 使用SVN。 我只是測試了它,但沒有大型存儲庫的經驗。 執行svn為每次下載添加“ 文件路徑 ”,並在完成后提交。
  • 創建一個自定義文件系統,然后在其中可以包含我想要的所有內容,例如。 發布數據。
  • 從URL生成文件名並以某種方式展平查詢字符串,但是操作系統可能會拒絕較大的查詢字符串。 而且,如果我將其保留在標頭中,則仍然需要跟蹤映射到每個不同查詢字符串的多個文件。 麻煩 而且我也不希望它執行得太慢。

多個程序實例將在不同的計算機上執行讀/寫操作。

如果我遵循目錄/文件方法,則理論上我可以在兩者之間添加一個層,以便它可以動態使用DotNetZip 但是再一次,查詢字符串。

我只是在這里尋找方向或經驗。

我還想要保留這些文件的歷史記錄的功能,這樣就不會覆蓋本地文件,然后我可以選擇想要的版本(按日期)。 那就是為什么我嘗試SVN。

我建議使用關系數據庫或版本控制系統。

您可能想使用SQL Server 2008的新FILESTREAM功能將文件本身存儲在數據庫中。

我將使用2個數據存儲,一個用於原始文件,另一個用於索引。

要存儲平面文件,我認為Berkeley DB是一個不錯的選擇,密鑰可以通過md5或其他哈希函數生成,也可以壓縮文件內容以節省一些磁盤空間。

對於索引,您可以使用關系數據庫或更復雜的文本搜索引擎(如Lucene)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM