我正在运行一个网站,处理多媒体上传的主要用途之一。我想知道在服务器上组织大量用户上传文件的最佳实践或行业标准是什么。
发布于 2012-03-10 17:07:38
我认为除非你给出更多的上下文并描述文件的用例,否则你不会得到任何具体的答案。就像任何其他技术决策一样,“最佳实践”总是在不同的功能需求和非功能需求之间进行折衷,因此,这个问题需要更多的上下文来产生您可以采取行动的答案。
话虽如此,以下是我会考虑的一些策略:
1) 使用由文件消费者指定的约定。例如,如果文件将由内容管理系统/发布解决方案使用,则该系统可能有一些标准化的文件处理方案。
2) 使用第三方上传方案。有很多工具可以帮助您找到解决特定问题的解决方案。像Transloadit、Zencoder和Encoding这样的工具都有不同的上传选项。看看这些选项应该会让你对什么可以被认为是“行业标准”有所了解。
3) 查看经过验证的解决方案,并模仿适合您的用例的部分。有一些开源解决方案可以处理您在这里描述的事情。看看不同的插件,比如paperclip,了解它们是如何组织文件的,或者更重要的是,它们提供了什么抽象,让你在需求变化时改变主意。
4) 设计你自己的解决方案。做一个峰值,这是暴露你没有想过的需求的最有效的方法之一。尝试集成上面提到的工具之一,看看效果如何。软件是软的,所以没有决定是最终的。也许最好的解决方案是尝试一些东西,当它不再适合的时候改变它。
这可能不是您正在寻找的具体答案,但正如我在开始时提到的,设计决策始终是一种权衡,在一种情况下的“最佳实践”在另一种情况下可能是最糟糕的解决方案:)
祝你好运!
发布于 2012-03-14 04:56:09
您的问题非常广泛,但我假设您谈论的是文件的存储/组织/层次结构(而不是平台/基础架构)。
一种典型的组织方法是将文件上传到基于文件名本身的3级分层结构。
例如:Filename = "My_Video_12.mpg“
然后将其存储在,
/M/Y/_/My_Video_12.mpg或者另一个例子,"a9usfkj_0001.jpg“
/a/9/u/a9usfkj_0001.jpg这样,您最终得到了一个可管理的结构,它使得简单地根据文件名来定位文件的位置变得很容易。它还可以确保目录不会增长到很大的规模,访问速度也不会变得非常慢。
这只是一个想法,但可能值得更明确地说明您的问题实际上是关于什么的。
发布于 2012-03-13 05:45:30
据我所知,你想要一个关于如何存储文件的建议。如果这是你想要的,我建议你有两个不同的存储系统来存储你的文件。
第一个存储是存储物理文件的地方,就像服务器上的一个目录(没有启用FTP,浏览器是否可以访问,...)或者选择亚马逊s3 (aws.amazon.com/en/s3/)、Rackspace CloudFiles (www.rackspace.com/cloud/cloud_hosting_products/files/)或任何其他存储解决方案(如果你愿意,你甚至可以选择dropbox )。所有这些选项都提供了保存/检索文件的API。
第二个存储将是一个数据库,用于索引和控制文件。在数据库上,可以是MySQL、MSSQL或非关系型数据库,如亚马逊DynamoDB或SimpleSQL,您可以设置指向您的文件的链接(http链接、文件的路径或类似的内容)。
此外,在DB上,您可以控制和存储您想要的任何文件元数据,并选择一个或多个@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和Petboard: An ASP.NET Sample Using Amazon S3 and Amazon SimpleDB
致以问候。
https://stackoverflow.com/questions/9554443
复制相似问题