我试图建立一个文件上传网站作为一个侧面项目,我从来没有建立任何需要处理大量这样的文件。据我所知,存储和检索文件有三个主要选项(请注意,每个上传文件可能有多个文件,因此,例如,website.com/a23Fc可能允许您下载单个或多个文件,具体取决于有多少用户最初上传 - 类似imgur.com):建立一个文件上传网站,缩放
- 棒中的所有文件在一个巨大的文件的目录,并使用(关系)DB弄清楚哪些文件属于哪些URL,然后返回取决于此的文件名列表。例如:用户加载website.com/abcde,因此它查询与abcde上传相关的所有文件的数据库,返回它们的文件名,并且网站输出这些文件。
- 使用CouchDB是因为它允许您实际将文件附加到数据库中的单个记录,因此每个URL /上传可以是附带有文件的数据库记录。例如,用户加载website.com/abcde,CouchDB抓取带有abcde ID的文档,抓取附加到该文档的文件,并将它们提供给用户。
- 完全跳过使用数据库,并为每个上传,创建一个新的目录,并在其中粘贴文件。例如:用户加载website.com/abcde,站点查找/ files/abcde /目录,抓取所有文件并将其提供给用户,因此根本不涉及数据库。
这些似乎最具扩展性?就像我说的那样,我在这方面的经验很少,所以如果我完全失败了,或者如果有明显的第四种选择,我可以对它敞开大门。在单个目录(即选项1)中有数千或数百万个文件似乎不是很聪明,但是在一个目录(即选项3)中有成千上万的目录似乎不太好。