我已经为我存储的一些文件创建了一个 S3 存储桶。我们使用 Rails ActiveStorage 来支持它。
我们的应用程序有帐户和用户。该帐户每月生成两个文档,我们要保存到该帐户。用户也可以生成保存到帐户的报告。
帐户架构具有以下列:
id # the primary key.
uuid # the global ID that links all accounts across all apps.
name # the name we show to users and assign to the account.
我们目前将所有附加文件存储在存储桶的根目录中,但我们希望使结构更加合理且不那么混乱。
理想情况下,这在存储桶中是可读的,因此我们一直在考虑使用
name
- 但不能保证这会改变。幸运的是,如果名称确实发生变化,ActiveStorage 将继续跟踪旧密钥。
是否有一些关于如何最好地构建它的最佳实践?
是的,确实有一些设计模式的最佳实践。当然,您不能将所有对象保存在存储桶的根中(如果您可以拥有大量对象)。为什么?因为您可以实现每个分区 Amazon S3 前缀每秒 3,500 个 PUT/COPY/POST/DELETE 或 5,500 个 GET/HEAD 请求。因此,如果您的所有对象都位于存储桶的根中,它们将共享相同的前缀,因此您只能实现我之前描述的目标。
至于如何构造bucket,目前还没有最佳实践。您可以通过多种方式做到这一点,而且它们都可能是正确的。只做您认为最适合您的应用程序的方法。