对于小于 64 MB 的大小,CloudBlockBlob 的 UploadFromStream 函数是否是原子的?
Is UploadFromStream function of CloudBlockBlob atomic for sizes less than 64 MB?
我正在从 BlockBlob 读取文件。文件大小保证小于 64 MB。因此它是单块操作。读取文件后,我正在更改它的某些部分并通过 CloudBlockBlob 的 UploadFromStream 函数重新上传它。我的问题是 "Is UploadFromStream function of CloudBlockBlob atomic for sizes less than 64 MB?"。在写入过程中出现异常后,是否有可能我在 azure 存储上有损坏的文件?
注意:我已经为 AppendBlob 询问了 ,得到的答案是它是原子的。
是的,如果它小于 64MB,它就是原子的,除非您并行化,因为并行化会将数据分块。即使对于大于 64MB 的块 blob 数据,也有一个两步提交过程,因此如果上传在中间失败,您仍然处于相对良好的状态。如果我们以 4MB 块的形式上传数据块,我们也必须提交这些块。因此,如果上传失败,我们将不会提交,您所拥有的只是一些额外的未提交块,只能通过获取块列表操作访问(也就是,它们未提交的块不可下载)。因此,对于在中间失败的块 blob 上传,通常不会覆盖您现有的数据或破坏它。
我正在从 BlockBlob 读取文件。文件大小保证小于 64 MB。因此它是单块操作。读取文件后,我正在更改它的某些部分并通过 CloudBlockBlob 的 UploadFromStream 函数重新上传它。我的问题是 "Is UploadFromStream function of CloudBlockBlob atomic for sizes less than 64 MB?"。在写入过程中出现异常后,是否有可能我在 azure 存储上有损坏的文件?
注意:我已经为 AppendBlob 询问了
是的,如果它小于 64MB,它就是原子的,除非您并行化,因为并行化会将数据分块。即使对于大于 64MB 的块 blob 数据,也有一个两步提交过程,因此如果上传在中间失败,您仍然处于相对良好的状态。如果我们以 4MB 块的形式上传数据块,我们也必须提交这些块。因此,如果上传失败,我们将不会提交,您所拥有的只是一些额外的未提交块,只能通过获取块列表操作访问(也就是,它们未提交的块不可下载)。因此,对于在中间失败的块 blob 上传,通常不会覆盖您现有的数据或破坏它。