我正在尝试构建一个文件上传站点作为辅助项目,但我从未构建过任何需要处理此类大量文件的东西。据我所知,存储和检索文件有三个主要选项(请注意,每次上传可以有多个文件,因此,例如, website.com/a23Fc 可能会让您下载单个或多个文件,具体取决于关于用户最初上传的数量 - 类似于 imgur.com):
其中哪些似乎最具可扩展性?就像我说的,我在这方面的经验很少,所以如果我完全离开或者如果有明显的第四种选择,我对它持开放态度。在单个目录中拥有数千或数百万个文件(即选项 1)似乎不太聪明,但在一个目录中拥有数千或数百万个目录(即选项 3)似乎并没有好多少。
最佳答案
我曾经工作过的一家公司在处理大约 PB 的图像文件时遇到了这个确切的问题。他们的解决方案是使用 Andrew 文件系统(更多信息请参见 http://en.wikipedia.org/wiki/Andrew_File_System)将文件存储在与 URL 结构匹配的目录结构中。这在实践中扩展得很好。
他们还出于应用程序内部的其他原因记录了数据库中文件的存在。
关于performance - 构建可扩展的文件上传站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009501/