【问题标题】:Multi object Deleteion google cloud storage go谷歌云存储中的多对象删除
【发布时间】:2015-05-07 12:53:47
【问题描述】:

我正在使用 go 与云存储交互。

我无法使用应用引擎中的 gsutil 并使用 rm 命令 删除?

我可以使用DeleteObject 删除一个对象,或者遍历一系列对象并删除每个对象,但我正在寻找另一种解决方案,例如 Datastor 中的DeleteMulti

你有更好的多删除解决方案吗?

【问题讨论】:

    标签: google-app-engine go google-cloud-storage


    【解决方案1】:

    每个被删除的对象都需要一次 GCS 调用。遍历每个对象并调用 delete 是最简单且可能是最好的解决方案。如果您需要更快的性能,您可能希望使用多个线程一次向 GCS 发送多个删除请求。

    如果这对您的应用来说是一个重大的性能问题,那么还有另一种方式,我不愿提及,因为它增加了显着的复杂性并且不会购买太多额外的性能。 GCS 支持将调用批处理到单个连接中。它可能不会比通过多个线程发送删除请求快多少,但它的行为更像是 DeleteMulti 调用。

    实际上,批处理调用通过向 /batch 路径发送多部分 HTTP 请求来工作,其中的每个部分都代表一个 HTTP 调用。删除多个对象的请求如下所示:

    POST /batch HTTP/1.1
    Host: www.googleapis.com
    Content-Length: content_length
    Content-Type: multipart/mixed; boundary="===============7330845974216740156=="
    Authorization: Bearer oauth2_token
    
    
    --===============7330845974216740156==
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+1>
    
    DELETE /storage/v1/b/example-bucket/o/obj1 HTTP/1.1
    accept: application/json
    
    
    --===============7330845974216740156==
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+2>
    
    DELETE /storage/v1/b/example-bucket/o/obj2 HTTP/1.1
    accept: application/json
    
    
    --===============7330845974216740156==--
    

    这里有更多关于它的文档:https://cloud.google.com/storage/docs/json_api/v1/how-tos/batch

    但是,我再次建议只发送单独的删除请求。批处理调用不是原子的,这意味着一些删除可能会成功,而另一些则失败。如果其中一个批量删除操作失败,您将需要解析批量响应消息以找出哪个调用失败,以便您可以重试它,这很可能不值得您为获得回报而付出努力.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      相关资源
      最近更新 更多