0

抱歉标题不好。

我正在保存网页。我目前使用 1 个 XML 文件作为索引。一个元素包含文件创建日期 (UTC)、完整 URL(w. 查询字符串等等)。并且标题在具有相似名称但附加特殊扩展名的单独文件中。

但是,对于 40k(包括头)文件,XML 现在是 3.5 MB。最近还在看书,添加新条目,保存这个 XML 文件。但现在我把它保存在内存中,每隔一段时间保存一次。

当我请求一个页面时,在 XML 文件上使用 XPath 查找 URL,如果有条目,则返回文件路径。

目录结构为 .\ www.host.com/randomFilename.randext

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

我在想:

  • 每个 XML 文件。域(包括子域)。但我觉得这可能很麻烦。
  • 使用 SVN。我刚刚对其进行了测试,但我没有大型存储库的经验。执行 svn add "文件路径 ",并在我完成后提交。
  • 创建一个自定义文件系统,然后我可以在其中包含我想要的所有内容,例如。发布数据。
  • 从 URL 生成文件名并以某种方式展平查询字符串,但操作系统可能会拒绝大查询字符串。如果我将它与标题一起保存,我仍然需要跟踪映射到每个不同查询字符串的多个文件。麻烦。而且我也不希望它执行得太慢。

多个程序实例将在不同的计算机上执行读/写操作。

如果我遵循目录/文件方法,理论上我可以在它们之间添加一个层,以便它动态使用DotNetZip。但话又说回来,查询字符串。

我只是在这里寻找方向或经验。

我还想要的是能够保留这些文件的历史记录,因此本地文件不会被覆盖,然后我可以选择我想要的版本(按日期)。这就是我尝试SVN的原因。

4

2 回答 2

0

我会推荐关系数据库或版本控制系统。

您可能希望使用 SQL Server 2008 的新FILESTREAM功能将文件本身存储在数据库中。

于 2009-08-30T20:10:18.067 回答
0

我将使用 2 个数据存储,一个用于原始文件,另一个用于索引。

存储平面文件,我觉得Berkeley DB是个不错的选择,可以通过md5或者其他hash函数生成key,还可以压缩文件内容,节省一些磁盘空间。

对于索引,您可以使用关系数据库或更复杂的文本搜索引擎,如 Lucene。

于 2009-08-30T22:48:36.327 回答