抱歉标题不好。
我正在保存网页。我目前使用1个XML文件作为索引。一个元素包含文件创建日期(UTC),完整URL(w。查询字符串,什么不是)。并且标题位于具有相似名称但附加了特殊扩展名的单独文件中。
但是,在40k(包括标题)文件中,XML现在是3.5 MB。最近我还在阅读,添加新条目,保存这个XML文件。但现在我把它保存在记忆中并且每隔一段时间保存一次。
当我请求页面时,在XML文件上使用XPath查找URL,如果有条目,则返回文件路径。
目录结构是 \ www.host.com/ randomFilename.randext
所以我正在寻找更好的方法。
我在想:
多个程序实例将在不同的计算机上执行读/写操作。
如果我遵循目录/文件方法,理论上我可以在它之间添加一个层,因此它可以动态使用DotNetZip。但话又说回来,查询字符串。
我只是在这里寻找方向或经验。
我还想要的是能够保存这些文件的历史记录,因此本地文件不会被覆盖,然后我可以选择我想要的版本(按日期)。这就是我尝试SVN的原因。
答案 0 :(得分:0)
我建议使用关系数据库或版本控制系统。
您可能希望使用SQL Server 2008的新FILESTREAM功能将文件本身存储在数据库中。
答案 1 :(得分:0)
我会使用2个数据存储,一个用于原始文件,另一个用于索引。
要存储平面文件,我认为Berkeley DB是一个不错的选择,密钥可以通过md5或其他哈希函数生成,也可以压缩文件内容以节省一些磁盘空间。
对于索引,您可以使用关系数据库或更复杂的文本搜索引擎,如Lucene。