【问题标题】:What does prefix mean in S3S3中的前缀是什么意思
【发布时间】:2019-12-09 11:04:06
【问题描述】:

docs 说,

例如,您的应用程序在存储桶中的每个前缀每秒可以实现至少 3,500 个 PUT/COPY/POST/DELETE 和 5,500 个 GET/HEAD 请求。桶中的前缀数量没有限制。您可以通过并行读取来提高读取或写入性能。例如,如果您在 Amazon S3 存储桶中创建 10 个前缀来并行读取,您可以将读取性能扩展到每秒 55,000 个读取请求。

但是,它并没有明确提到前缀的概念。

例如,

假设我有 3 个文件,它们对应的键是:

a/a1.txt
b/b1.txt
2.txt

据我了解,S3 中没有文件夹的概念。因此,S3 将在我的存储桶上创建类似的内容。

|- a/
|- a1.txt
|- 2.txt
|- b/
|- b1.txt

我确实遇到过这个blog,但这让我更加困惑。

我的问题:-

在 S3 中创建的每个以“/”结尾的 Object 都是前缀吗? 换句话说,我们在 S3 Web 控制台中看到的每个文件夹都是前缀吗?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-sdk


    【解决方案1】:

    虽然 S3 理论上是一个平面存储,但它的许多操作都对带有集合分隔符的前缀进行了特殊处理,通常是 /。例如,this help page 讨论了如何通过查看您使用的前缀来构建 S3 控制台 Web 界面上的“文件夹”。

    这里要记住的重要一点是这些文件夹本身并不是对象,因此在您的示例中,存储桶中没有存储ab 的键。

    如果你创建了一个bucket并立即添加一个key为a/b/c/d/e.txt的对象,那么:

    • 桶将只包含一个对象,键为a/b/c/d/e.txt
    • 某些 API 和 UI 会推断出该键的前缀 a/b/c/d,作为对相关键进行分组的一种方式

    【讨论】:

    • 那么,有两种方法可以创建 S3 前缀,一种是隐式创建,就像你上面提到的那样,另一种是当我们显式创建一个 S3 对象时,其键设置为以分隔符结尾?
    • @nmxl 我认为对以分隔符结尾的名称没有任何特殊处理。对于任何将前缀视为文件夹的 UI,这就像创建一个名称为空的文件(即其中可能包含数据),而不是创建一个空文件夹,因此它可能会破坏 UI。
    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多