您的问题非常广泛,但我假设您正在谈论文件的存储/组织/层次结构(而不是平台/基础架构).
组织的典型方法是基于文件名本身将文件上载到3级分层结构.
例如.Filename ="My_Video_12.mpg"
哪个会被存储,
/M/Y/_/My_Video_12.mpg
Run Code Online (Sandbox Code Playgroud)
或者另一个例子,"a9usfkj_0001.jpg"
/a/9/u/a9usfkj_0001.jpg
Run Code Online (Sandbox Code Playgroud)
这样,您最终得到了一个可管理的结构,可以根据其名称轻松找到文件的位置.它还确保目录不会大规模扩展并且访问速度极慢.
只是一个想法,但可能更值得明确你的问题实际上是什么.
我认为除非您提供更多上下文并描述文件的用例,否则您不会得到任何具体答案。与任何其他技术决策一样,“最佳实践”始终是不同功能和非功能需求之间的折衷方案,因此该问题需要更多背景信息才能产生您可以采取行动的答案。
话虽如此,以下是我认为合理的一些策略:
1)使用文件使用者规定的约定。 例如,如果文件将由 CMS/发布解决方案使用,则该系统可能有一些用于处理文件的标准化解决方案。
2)使用第三方上传解决方案。有很多工具可以帮助指导您找到解决您的特定问题的解决方案。Transloadit、Zencoder和Encoding等工具都有不同的选项来处理上传。查看这些选项应该会让您了解什么可以被视为“行业标准”。
3)查看经过验证的解决方案,并模仿适合您的用例的部分。有一些开源解决方案可以处理您在此处描述的这类事情。查看不同的插件,例如paperclip,了解它们如何组织文件,或更重要的是,它们提供了哪些抽象,可以让您在需求变化时改变主意。
4)设计自己的解决方案。进行峰值,这是暴露您未曾考虑过的需求的最有效方法之一。尝试集成上述工具之一,看看效果如何。软件是软性的,因此没有最终决定。也许最好的解决方案就是尝试一些东西,当它不再适合时就改变它。
这可能不是您正在寻找的具体答案,但就像我在开始时提到的那样,设计决策始终是一种权衡,一种情况下的“最佳实践”可能是另一种情况下最糟糕的解决方案:)
祝你好运!