【发布时间】:2009-11-22 17:12:35
【问题描述】:
在阅读this 之后,使用 SHA-1 作为目录存储文件听起来是个好主意。
我不知道这意味着什么,但我只知道 SHA-1 和 MD5 是散列算法。如果我使用this ruby script 计算 SHA-1 哈希,并更改文件的内容(这会更改哈希),那么我如何知道文件的存储位置?
那么我的问题是,实现 SHA-1/文件存储系统的基础是什么?
如果所有文件都一直在更改内容,是否有更好的解决方案来存储它们,还是只需要不断更新哈希?
我只是在考虑如何创建一个通用的文件存储系统,如 GoogleDocs、Flickr、Youtube、DropBox 等,您可以在不同的环境中重复使用这些系统(例如存储 PubMed 期刊文章或 Cramster家庭作业和测试,或者只是像 Flickr 上的图像)。我可能会将它们存储在 Amazon EC2 上。只是一些系统,所以我可以说“从现在开始,我将在 99% 的时间里进行文件存储”,所以我可以停止考虑构建一种可靠/一致的方式来存储文件并解决一些实际问题。
【问题讨论】:
-
我认为这个想法是在存储在路径之前计算哈希值(在您更改文件内容之后)。这样你应该没有问题?
-
所以如果所有文件都一直在更改内容,是否有更好的解决方案来存储它们,还是只需要不断更新哈希?
-
您只需使用初始哈希。你不需要不断更新。将哈希值保存在数据库中。
-
散列解决了 2 个问题(为不太可能发生冲突的文件选择名称,并通过将散列拆分成形成路径的部分来避免在某些文件系统上处理字典中大量文件的性能问题)。这已成为一种最佳实践,一些框架可以帮助您。尽管如果您指定您打算如何处理这些文件,您可能会获得更精确/适用的解决方案/答案:)
标签: ruby file-storage sha1