AIP-165 按條件刪除

編號165
原文鏈接https://google.aip.dev/165
狀態批準
創建日期2019-12-18
更新日期2019-12-18

有時API需要提供一種機制,按照一些過濾參數刪除大量資源,而非提供待刪除的各資源名字。

這是一個稀有的場景,用于用戶一次性刪除數千或更多資源的情況。此時,普通的批量刪除模式(AIP-235)笨重低效。

指南

重要?大多數API?應當?僅使用刪除(AIP-135)或批量刪除(AIP-235)方法刪除資源,?不應?實現按條件刪除。因為刪除通常是不可逆的,這類操作容易讓用戶意外丟失大量數據。

API?可以?實現?Purge?方法,按過濾字符串刪除大量資源。但?應當?僅在批量刪除(AIP-235)模式無法實現預期目標時這么做。

rpc PurgeBooks(PurgeBooksRequest) returns (google.longrunning.Operation) {option (google.api.http) = {post: "/v1/{parent=publishers/*}/books:purge"body: "*"};option (google.longrunning.operation_info) = {response_type: "PurgeBooksResponse"metadata_type: "PurgeBooksMetadata"};
}
  • 接口名字?必須?以?Purge?開頭,其余部分?應當?是待清除資源的復數形式。
  • 請求消息?必須?與接口名字一致,并帶有?Request?后綴。
  • 應答類型?必須?是?google.longrunning.Operation?(參考AIP-151),解析成一個名字與接口名字一致的消息,并帶有?Response?后綴。
  • HTTP動詞?必須?是?POST?,?body?必須?是?"*"?。
  • URI路徑?應當?表示資源集合。
  • parent?字段?應當?包含在URI中。如果API支持跨多個上級資源刪除,?應當?接受與AIP-159一致的?-?字符。

請求消息

Purge?方法實現了常見的請求消息模式:

message PurgeBooksRequest {// The publisher to purge books from.// To purge books across publishers, send "publishers/-".string parent = 1 [(google.api.field_behavior) = REQUIRED,(google.api.resource_reference) = {child_type: "library.googleapis.com/Book"}];// A filter matching the books to be purged.string filter = 2 [(google.api.field_behavior) = REQUIRED];// Actually perform the purge.// If `force` is set to false, the method will return a sample of// resource names that would be deleted.bool force = 3;
}
  • 應當?包含單一的?string parent?域,頂級資源除外。
    • 域?應當?被注解為必需域。
    • 域?應當?標識所引用的資源類型。
  • 必須?包含單一的?string filter?域,?必須?遵守和?List?方法(AIP-160)同樣的語義。
    • 應當?被注解為必需域。
  • 必須?包含單一的?bool force?域。如果沒有設定,API?必須?返回將待刪除資源數量和資源樣本,而非實際執行刪除。

應答消息

Purge?方法實現了常見的應答消息模式:

message PurgeBooksResponse {// The number of books that this request deleted (or, if `force` is false,// the number of books that will be deleted).int32 purge_count = 1;// A sample of the resource names of books that will be deleted.// Only populated if `force` is set to false.repeated string purge_sample = 2 [(google.api.resource_reference) = {type: "library.googleapis.com/Book"}];
}
  • 應當?包含單一的?int32 purge_count?域,返回已刪除(或待刪除)資源數量。這個值?可以?是類似于AIP-158中?total_size?的近似值(若如此服務?應當?在文檔中記錄)。
  • 應當?包含?repeated string purge_sample?域。如果?force?設定為?false?,?應當?提供待刪除資源名字樣本。如果?force?設定為?true?,則此域?不應?返回值。
    • 樣本數量?應當?足夠多,捕獲顯著錯誤。一個好的經驗法則是100。API?應當?在文檔中記錄樣本大小,并?應當?說明這是數量上限(可能發送較少樣本)。
    • 樣本?可以?是隨機的,也?可以?是確定的(如第一個匹配的資源名字)。API?應當?在文檔中記錄實現方法。
    • 域?應當?標識所引用的資源類型。

注意?請求?必須?包含?force?域,即使缺少?purge_count?和?purge_sample?域。

修訂記錄

  • 2022-06-02?更改后綴描述,消除多余的"-"。
  • 2020-10-29?擴展關于HTTP、域行為和資源引用注解的指南。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897732.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897732.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Maven教程與實戰案例】

文章目錄 前言一、Maven是什么?二、Maven的安裝與配置1. 安裝前置條件2. 下載與配置 Maven3. 驗證安裝 三、Maven的核心概念1. POM.xml 文件2. 構建生命周期與插件機制 四、實戰項目示例1. 項目目錄結構2. 編寫代碼App.javaAppTest.java 3. 構建項目4. 運行項目 前言…

20250310:OpenCV mat對象與base64互轉

代碼: https://github.com/ReneNyffenegger/cpp-base64 指南:https://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp/ 實操:

概率論的基本知識

逆概率還不懂,改天再想想。 聯合概率 聯合概率(Joint Probability) 是概率論中的一個重要概念,用于描述多個隨機變量同時取某些值的概率。聯合概率可以幫助我們理解多個變量之間的關系。

pytest數據庫測試文章推薦

參考鏈接: 第一部分:http://alextechrants.blogspot.fi/2013/08/unit-testing-sqlalchemy-apps.html第二部分:http://alextechrants.blogspot.fi/2014/01/unit-testing-sqlalchemy-apps-part-2.html

如何自己做奶茶,從此告別奶茶店

自制大白兔奶茶,奶香與茶香激情碰撞,每一口都是香濃與甜蜜的雙重誘惑,好喝到跺腳!絲滑口感在舌尖舞動,仿佛味蕾在開派對。 簡單幾步就能復刻,成本超低,輕松在家享受奶茶自由。 材料:大白兔奶糖&…

SOA(面向服務架構)與微服務架構的區別與聯系

SOA(面向服務架構)與微服務架構的區別與聯系 1. 引言 在現代軟件架構中,SOA(Service-Oriented Architecture,面向服務架構)和微服務架構(Microservices Architecture)是兩種常見的…

LLM的準確率評估采用什么方式:準確率評估使用的是 `sklearn.metrics` 模塊中的 `accuracy_score` 函數

LLM的準確率評估采用什么方式:準確率評估使用的是 sklearn.metrics 模塊中的 accuracy_score 函數 評估方式 代碼里的準確率評估是基于每個樣本最后一個預測的 token 與真實的 token 進行對比。具體來說,它會遍歷測試數據集中的每個樣本,使用模型預測出最后一個 token 的 …

文件和異常

從文件中讀取數據 讀取整個文件 讀取整個文件 要讀取文件,需要一個包含幾行文本的文件。下面首先創建一個文件,它包含精確 到小數點后30位的圓周率值,且在小數點后每10位處換行: pi_digits.txt 3.14159265358979323846264338…

2025最新版Windows通過GoLand遠程連接Linux構建Go項目保姆級教學

以Ubuntu24.04和GoLand2024.1.6為例子,演示如何在Windows上通過GoLand遠程連接Linux進行Go編程。 通過go version指令可以發現當前Ubuntu系統沒有安裝go。 go version 通過指令安裝go,其他系統可以通過wget安裝,要指定安裝的具體go版本&…

Spring Boot 集成 Lua 腳本:實現高效業務邏輯處理

1. 前言 1.1 什么是Lua Lua是一種輕量級、高性能的腳本語言,常用于游戲開發、嵌入式系統、配置文件解析等領域。Lua語法簡潔,易于學習和使用,且具有強大的擴展性。 1.2 Spring Boot與Lua集成的意義 將Lua集成到Spring Boot應用中,可以實現動態配置業務邏輯、簡化復雜業…

Linux筆記---文件系統硬件部分

1. 文件系統 文件系統是操作系統用于明確存儲設備(常見的是磁盤,也有基于NAND Flash的固態硬盤)或分區上的文件的方法和數據結構,即在存儲設備上組織文件的方法。 1.1 基本組成 索引節點(inode)&#xff…

12.31[net]review

復用(Multiplexing)的概念 定義:在傳輸層,復用是指多個應用進程可以使用同一個傳輸層協議(如 TCP 或 UDP)來發送數據。從應用層的角度看,不同的應用進程(如網頁瀏覽器、郵件客戶端等…

網絡安全防護架構有哪些 網絡安全防護措施包括

網絡安全預防措施 網安措施 計算機網絡安全措施主要包括保護網絡安全、保護應用服務安全和保護系統安全三個方面,各個方面都要結合考慮安全防護的物理安全、防火墻、信息安全、Web安全、媒體安全等等。 (一)保護網絡安全。 網絡安全是為保護商務各方網絡端系統之…

物理筆記 | 拓撲相變的物理圖像

1. 一般相變 對于一般的相變是朗道理論預言的由對稱性自發破缺導致的。 比如在一維橫場Ising模型中的量子相變 H ? J ∑ j σ j z σ j 1 z ? h ∑ j σ j x H -J \sum_{j} \sigma_j^z \sigma_{j1}^z - h \sum_{j} \sigma_j^x H?Jj∑?σjz?σj1z??hj∑?σjx? 其相…

紅黑樹介紹

1 問題引入 為什么有AVL樹,還要引入紅黑樹? 在進行多次的插入和刪除時: 1)AVL樹會存在大量的旋轉操作,追求的是嚴格平衡; 2)紅黑樹通過為節點增加顏色來換取增刪節點時旋轉次數…

Java基礎:枚舉類enum入門案例

1.基礎枚舉定義與使用: package com.zxy;public class Main {public static void main(String[] args) { // 獲取枚舉值cars car cars.BMW;switch (car){case BMW :System.out.println("BMW");break;case BENZ :System.out.println("BENZ&…

torch numpy sort排序出現索引順序不正常

問題 torch 調用numpy ,numpy 的sort排序值的順序沒發現問題,但是排序的索引argsort()是有明顯問題。 方案 多一次取索引 arr.argsort().argsort()參考: https://blog.csdn.net/qq_50571974/article/details/123173118

大模型架構記錄5-向量數據庫

一 倒排索引、KNN、PQ 1.1 基礎版本 query -> requery 對問題做處理,處理上下文 對query 做 refined query 1.2 向量數據庫 二 搜索邏輯 2.1 knn 2.2 近似KNN 先和N個空間的均值比較再和空間內部的所有點比較,計算最近值。 優化一: …

Python :數據模型

一. 什么是數據模型? Python數據模型是Python對象系統的抽象,通過一組特殊方法?(如__init__、__len__等)和協議?(如迭代協議、上下文管理協議),定義了對象如何與語言的內置功能(如…

考研數學非數競賽復習之Stolz定理求解數列極限

在非數類大學生數學競賽中,Stolz定理作為一種強大的工具,經常被用來解決和式數列極限的問題,也被譽為離散版的’洛必達’方法,它提供了一種簡潔而有效的方法,使得原本復雜繁瑣的極限計算過程變得直觀明了。本文&#x…