我正在运营一个网站,处理其主要用途之一的多媒体上传。 我想知道在服务器上组织很多用户上传文件的最佳实践或行业标准是什么。
答案 0 :(得分:8)
您的问题非常广泛,但我假设您正在讨论文件的存储/组织/层次结构(而不是平台/基础架构)。
组织的典型方法是根据文件名本身将文件上传到3级分层结构。
EG。 Filename =" My_Video_12.mpg"
然后将存储在
中/M/Y/_/My_Video_12.mpg
或者另一个例子," a9usfkj_0001.jpg"
/a/9/u/a9usfkj_0001.jpg
这样,您最终会得到一个易于管理的结构,只需根据其名称轻松找到文件的位置即可。它还确保目录不会大规模扩展并且访问速度极慢。
只是一个想法,但可能更值得明确你的问题实际上是什么。
答案 1 :(得分:3)
除非您提供更多上下文并描述文件的用例,否则我认为您不会得到任何具体答案。与任何其他技术决策一样,“最佳实践”总是在不同的功能和非功能需求之间进行折衷,因此问题需要更多的上下文来产生您可以采取行动的答案。 / p>
话虽如此,这里有一些我会考虑声音选项的策略:
1)使用文件使用者指定的约定。 例如,如果文件将由CMS /发布解决方案使用,则该系统可能具有一些用于处理文件的标准化解决方案。
2)使用第三方上传解决方案。有许多工具可以帮助您找到解决特定问题的解决方案。 Transloadit,Zencoder和Encoding等工具都有不同的处理上传选项。看看这些选项应该会让您了解什么可以被视为“行业标准”。
3)查看经过验证的解决方案,并模拟适合您用例的部分。有开源解决方案可以处理您在此处描述的内容。查看不同的插件,例如paperclip,了解他们如何组织文件,或者更重要的是,他们提供了哪些抽象,让您在需求变化时改变主意。
4)设计自己的解决方案。做一个高峰,这是暴露您没有想过的要求的最有效方式之一。尝试集成上面提到的其中一个工具,看看它是如何进行的。软件很软,所以没有决定是最终的。也许最好的解决方案是尝试一些东西,并在它不适合时更改它。
这可能不是您正在寻找的具体答案,但正如我在开始时提到的那样,设计决策总是权衡,在一个环境中“最佳实践”可能是另一个环境中最糟糕的解决方案:)
祝你好运!
答案 2 :(得分:1)
根据我的理解,您需要有关如何存储文件的建议。如果这是你想要的,我建议你为你的文件安装2个不同的存储系统。
第一个存储将是存储物理文件的位置,例如服务器上的目录(无FTP启用,可访问或不访问浏览器......)或转到Amazon s3(aws.amazon.com/en/s3/ ),Rackspace CloudFiles(www.rackspace.com/cloud/cloud_hosting_products/files/)或任何其他存储解决方案(如果需要,您甚至可以选择Dropbox)。所有这些选项都提供了保存/检索文件的API。
第二个存储将是一个数据库,用于索引和控制文件。在数据库上,可能是MySQL,MSSQL或非关系型数据库,如Amazon DynamoDB或SimpleSQL,您可以设置链接到您的文件(http链接,文件的路径或类似的东西)。 / p>
此外,在数据库上,您可以控制和存储所需文件的任何元数据,并选择一个或多个@ ebaxt的解决方案来获取它。元数据可以是文件的旧版本,文本文件的单词,相机模型和图片的地理位置等。当然,这取决于您的需求以及如何真正使用它。您有很多选项,但如果没有更多关于您假装的信息,很难建议您找到解决方案。
在亚马逊教程区域(http://aws.amazon.com/articles/Amazon-S3?browse=1),您可以找到很多关于它的论文,例如Netflix's Transition to High-Availability Storage Systems,Using the Java Persistence API with Amazon SimpleDB和{ {3}}
问候。