gpt4 book ai didi

amazon-web-services - 在更新文件时从AWS S3下载

转载 作者:行者123 更新时间:2023-12-04 05:47:25 29 4
gpt4 key购买 nike

这似乎是一个非常基本的问题,但是如果我正在S3上下载文件,而该文件正在由另一个进程进行更新,那么我是否需要担心获取不完整的文件?

例如:一个200MB的CSV文件。用户A开始以1Mbps的速度使用200MB的新内容更新文件。 16秒后,用户B开始以200Mbps的速度下载文件。用户B是否获得了全部200MB的原始文件,还是用户B获得了约2MB的用户A的更改,而没有其他?

最佳答案

用户B获得全部200MB的原始文件。

原因如下:

S3上的PUT操作是原子的。从技术上讲,没有“修改”对象之类的东西。覆盖对象时实际发生的情况是,该对象被具有相同 key 的另一个对象替换。但是原始对象实际上并没有被替换,直到新的(覆盖)对象全部上载并且成功上传为止……即使如此,覆盖的对象在技术上还没有“消失”-只是在存储桶的索引中被替换了,以便将来的请求将被提供给新对象。

(实际上已记录了服务新对象并不能保证总是立即发生。与可立即下载的新对象上载相反,覆盖现有对象最终是一致的,这意味着可能(但不太可能)上传对象后的短时间内,仍可以将旧副本提供给后续请求)。

但是,当您覆盖一个对象,并且未在存储桶上启用版本控制时,尽管有相同的键,但旧对象和新对象实际上是独立存储在S3中的。现在,存储桶的索引不再引用该旧对象,因此您不再需要为存储该存储对象开帐单,并且不久之后就会从S3的后备存储中清除该对象。实际没有记录在多久之后发生……但是(tl; dr)覆盖当前正在下载的对象不会引起任何意外的副作用。

Updates to a single key are atomic. For example, if you PUT to an existing key, a subsequent read might return the old data or the updated data, but it will never write corrupted or partial data.

http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel

关于amazon-web-services - 在更新文件时从AWS S3下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781418/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com