我正在使用go爲了與雲存儲進行交互。多對象刪除Google雲存儲去
我無法從app引擎使用gsutil會,並與rm命令刪除?
我可以使用DeleteObject刪除一個對象,或遍歷一系列對象並刪除每個對象,但我正在尋找另一種解決方案,如Datastor中的DeleteMulti。
您是否有更好的多重刪除解決方案?
我正在使用go爲了與雲存儲進行交互。多對象刪除Google雲存儲去
我無法從app引擎使用gsutil會,並與rm命令刪除?
我可以使用DeleteObject刪除一個對象,或遍歷一系列對象並刪除每個對象,但我正在尋找另一種解決方案,如Datastor中的DeleteMulti。
您是否有更好的多重刪除解決方案?
刪除的每個對象都需要一次調用GCS。迭代每個對象並調用delete是最簡單且可能的最佳解決方案。如果您需要更快的性能,您可能希望使用多個線程一次向GCS發送多個刪除請求。
如果這對於您的應用來說是一個重大的性能問題,那麼還有另一種方式,我不願意提及它,因爲它增加了很多複雜性並且不會購買太多額外的性能。 GCS支持將批處理呼叫集中到一個連接中。它可能不會比在多個線程上發送刪除請求更快,但它的行爲更像是一個DeleteMulti調用。
實際上,批量調用通過向/批處理路徑發送多部分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
但同樣,我建議只是個人發送的刪除請求。批量調用不是原子的,這意味着一些刪除可能會成功,而其他的刪除可能會失敗。如果其中一個批量刪除操作失敗,則需要解析批量響應消息以確定哪個調用失敗,以便您可以重試它,這很可能不值得爲您獲得的收益付出努力。