【问题标题】:Amazon AWS S3 directory structure efficiencyAmazon AWS S3 目录结构效率
【发布时间】:2014-04-05 16:52:25
【问题描述】:

我有一个简单的效率问题在我脑海中盘旋。

我创建了一个 PHP 代码,用于将我文件夹中的所有文件上传到我在 Amazon S3 上的存储桶中。我的代码也可以在不丢失其结构的情况下上传子文件中的文件。

基本上,用户必须登录我的网站,然后根据用户的帐户名称,他们可以将照片上传到我在 Amazon s3 上的存储桶中。用户最多可以上传 10 张照片 - 然后将这些照片修改为子文件类型,例如修改和缩略图。

我应该如何上传目录结构以在 Amazon S3 上高效?

选项 1(同一存储桶中的文件但不同的文件夹 - 更有条理)

username/originalfiles/picture01.jpg
username/original/picture02.jpg
username/original/picture03.jpg
....
username/original/picture10.jpg


username/modifiedpicture01.jpg
username/modified/picture02.jpg
username/modified/picture03.jpg
....
username/modified/picture10.jpg


username/thumbailspicture01.jpg
username/thumbails/picture02.jpg
username/thumbails/picture03.jpg
....
username/thumbails/picture10.jpg

或者

选项 2(同一存储桶中的所有文件)

username-original-picture01.jpg
username-original-picture02.jpg
username-original-picture03.jpg
....
username-original-picture10.jpg


username-modifiedpicture01.jpg
username-modified-picture02.jpg
username-modified-picture03.jpg
....
username-modified-picture10.jpg


username-thumbailspicture01.jpg
username-thumbails-picture02.jpg
username-thumbails-picture03.jpg
....
username-thumbails-picture10.jpg

或者它在 Amazon S3 中没有什么不同?

【问题讨论】:

    标签: php amazon-web-services amazon-s3


    【解决方案1】:

    这对组织目的没有影响,S3 文件夹实际上只是为了像我们这样的人类的利益而产生的一种错觉,因此它看起来很熟悉 - 确实没有像您自己的机器上那样在物理上独立的文件夹。

    然而,您使用的命名约定将对性能产生巨大影响,一旦您达到某个点(对于少量文件,它可能不会被注意到)。

    一般来说,您希望文件/文件夹名称的开头部分是“随机的”,越随机越好……这样 s3 可以更好地分散工作量。如果名称前缀都相同,则可能存在瓶颈。每个文件名开头的简短随机散列可能会给你最好的性能。

    就在马 (AWS) 口中:

    键名中的序列模式引入了性能问题。为了理解这个问题,让我们看看 Amazon S3 是如何存储的 键名。

    Amazon S3 维护每个 AWS 区域中对象键名称的索引。 对象键按字典顺序存储在多个分区中 索引。也就是说,Amazon S3 按字母顺序存储键名。 密钥名称指示密钥存储在哪个分区。使用 顺序前缀,例如时间戳或字母顺序, 增加 Amazon S3 以特定目标为目标的可能性 为大量键进行分区,从而使 I/O 不堪重负 分区的容量。如果你在你的 键名前缀、键名以及 I/O 负载将是 分布在多个分区中。

    如果您预计您的工作量将持续超过 100 每秒请求数,您应该避免顺序键名。如果你 必须在键名中使用序列号或日期和时间模式, 为密钥名称添加随机前缀。前缀的随机性更多 跨多个索引分区均匀分布键名。 本主题后面会提供引入随机性的示例。

    http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html

    【讨论】:

    • 正是我想要的。谢谢。
    • AWS 似乎在docs.aws.amazon.com/AmazonS3/latest/userguide/… 中更新了他们的建议。 “ ...以前 Amazon S3 性能指南建议使用散列字符随机化前缀命名,以优化频繁数据检索的性能。您不再需要随机化前缀命名以提高性能,并且可以对前缀使用基于日期的顺序命名。”跨度>
    【解决方案2】:

    它在 Amazon S3 中没有任何不同。只有对象键。

    【讨论】:

    • 那么结构不会有任何区别吗?我印象深刻。我可能错了,如果它们在同一个文件夹中,它们会加载得更快。显然,如果它们位于不同的文件夹中,它们会更有条理。
    • S3完全不懂目录的概念,它是一个平面文件系统。如果您关心的是性能,请参阅docs.aws.amazon.com/AmazonS3/latest/dev/…
    猜你喜欢
    • 2019-01-03
    • 2015-10-31
    • 2016-10-17
    • 2018-12-24
    • 2013-07-07
    • 2012-07-14
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多