Sdílet prostřednictvím


Vyprázdnění dat

Platí pro: ✅Azure Data Explorer

Poznámka:

Tento článek obsahuje postup odstranění osobních údajů ze zařízení nebo služby a dá se použít k podpoře vašich povinností v rámci GDPR. Obecné informace o GDPR naleznete v části GDPR Centra zabezpečení společnosti Microsoft a části GDPR Service Trust Portal.

Datová platforma podporuje možnost odstraňovat jednotlivé záznamy pomocí Kusto .purge a souvisejících příkazů. V materializovaném zobrazení můžete také vyprázdnit celou tabulku nebo vyprázdnit záznamy.

Upozorňující

Odstranění dat prostřednictvím .purge příkazu je navržené tak, aby se používalo k ochraně osobních údajů a nemělo by se používat v jiných scénářích. Není navržená tak, aby podporovala časté žádosti o odstranění nebo odstranění obrovského množství dat a mohla mít významný dopad na výkon služby.

Pokyny k příkazu purge

Pečlivě navrhněte schéma dat a před uložením osobních údajů prozkoumejte relevantní zásady.

  1. V nejlepším případě je doba uchovávání těchto dat dostatečně krátká a data se automaticky odstraní.
  2. Pokud využití doby uchovávání není možné, izolujte všechna data, která podléhají pravidlům ochrany osobních údajů, v několika tabulkách. Optimálně používejte jenom jednu tabulku a propojte ji ze všech ostatních tabulek. Tato izolace umožňuje spustit proces vymazání dat na několika tabulkách, které uchovávají citlivá data, a vyhnout se všem ostatním tabulkám.
  3. Volající by měl provést každý pokus o dávkové provádění .purge příkazů na 1 až 2 příkazů na tabulku za den. Nevydávejte více příkazů s jedinečnými predikáty identity uživatele. Místo toho odešlete jeden příkaz, jehož predikát obsahuje všechny identity uživatelů, které vyžadují vyprázdnění.

Vyprázdnění procesu

Proces selektivního vymazání dat probíhá v následujících krocích:

  1. Fáze 1: Zadejte vstup s názvem tabulky a predikátem pro každý záznam, který označuje, které záznamy se mají odstranit. Kusto prohledává tabulku a zjišťuje rozsahy dat, které by se účastnily vyprázdnění dat. Zjištěné rozsahy jsou ty, které mají jeden nebo více záznamů, pro které predikát vrátí hodnotu true.

  2. Fáze 2: (Obnovitelné odstranění) Nahraďte všechny rozsahy dat v tabulce (identifikované v kroku (1)) znovu přijatým verzí. Znovu přijatá verze by neměla obsahovat záznamy, pro které predikát vrátí hodnotu true. Pokud se do tabulky neingestují nová data, nebudou dotazy na konci této fáze vracet data, pro která predikát vrátí hodnotu true. Doba trvání fáze obnovitelného odstranění vymazání závisí na následujících parametrech:

    • Počet záznamů, které musí být vyprázdněné
    • Záznam distribuce napříč rozsahy dat v clusteru
    • Počet uzlů v clusteru
    • Volné kapacity, které má pro operace vyprázdnění
    • Několik dalších faktorů

    Doba trvání fáze 2 se může lišit mezi několika sekundami až mnoho hodin.

  3. Fáze 3: (Pevné odstranění) Vraťte všechny artefakty úložiště, které můžou obsahovat "jedovatá" data, a odstraňte je z úložiště. Tato fáze se provádí nejméně pět dní po dokončení předchozí fáze, ale po uplynutí 30 dnů po počátečním příkazu. Tyto časové osy jsou nastavené tak, aby dodržovaly požadavky na ochranu osobních údajů dat.

.purge Vydání příkazu aktivuje tento proces, který trvá několik dní. Pokud je hustota záznamů, pro které je predikát dostatečně velký, proces efektivně reingestuje všechna data v tabulce. Tato reingestace má významný dopad na výkon a COGS (náklady na prodané zboží).

Vyprázdnění omezení a důležité informace

  • Proces vyprázdnění je konečný a nevratný. Tento proces není možné vrátit zpět ani obnovit data, která byla odstraněna. Příkazy, jako je odstranění tabulky zpět, nemůžou obnovit vymazaná data. Vrácení dat do předchozí verze nemůže přejít před nejnovější příkaz vyprázdnění.

  • Před spuštěním vyprázdnění ověřte predikát spuštěním dotazu a kontrolou, že výsledky odpovídají očekávanému výsledku. Můžete také použít dvoustupňový proces, který vrátí očekávaný počet záznamů, které se vyprázdní.

  • Příkaz .purge se spustí proti koncovému bodu Správa dat: https://ingest-[YourClusterName].[region].kusto.windows.net. Příkaz vyžaduje oprávnění správce databáze pro příslušné databáze.

  • Vzhledem k dopadu procesu mazání a k zajištění toho, že byly dodrženy pokyny k vymazání, očekává se, že volající upraví schéma dat tak, aby minimální tabulky zahrnovaly relevantní data a dávkové příkazy na tabulku, aby se snížil významný dopad procesu mazání COGS.

  • Parametr predicate příkazu .purge slouží k určení záznamů, které se mají vyprázdnit. Predicate velikost je omezená na 1 MB. Při vytváření predicate:

    • Použijte například where [ColumnName] in ('Id1', 'Id2', .. , 'Id1000')operátor in.
    • Všimněte si limitů operátoru in (seznam může obsahovat až 1,000,000 hodnoty).
    • Pokud je velikost dotazu velká, použijte například operátorwhere UserId in (externaldata(UserId:string) ["https://...blob.core.windows.net/path/to/file?..."]) .externaldata Soubor ukládá seznam ID, která se mají vyprázdnit.
    • Celková velikost dotazu po rozbalení všech externaldata objektů blob (celková velikost všech objektů blob) nesmí překročit 64 MB.

Výkon vyprázdnění

V clusteru lze kdykoli spustit pouze jeden požadavek na vymazání. Všechny ostatní požadavky se zařadí do fronty ve Scheduled stavu. Monitorujte velikost fronty vyprázdnění a udržujte odpovídající limity tak, aby odpovídaly požadavkům platným pro vaše data.

Zkrácení doby provádění vyprázdnění:

Aktivace procesu vyprázdnění

Poznámka:

Spuštění vyprázdnění je vyvoláno spuštěním příkazu Purge table TableName records na koncovém bodu https://ingest-Správa dat [YourClusterName].[ Oblast].kusto.windows.net.

Příkaz Vyprázdnit tabulku TableName records

Příkaz vyprázdnění se může vyvolat dvěma způsoby pro různé scénáře použití:

  • Programové vyvolání: Jeden krok, který má být vyvolán aplikacemi. Volání tohoto příkazu přímo aktivuje pořadí provádění vyprázdnění.

    Syntaxe

    // Connect to the Data Management service
    #connect "https://ingest-[YourClusterName].[region].kusto.windows.net"
    
    // To purge table records
    .purge table [TableName] records in database [DatabaseName] with (noregrets='true') <| [Predicate]
    
    // To purge materialized view records
    .purge materialized-view [MaterializedViewName] records in database [DatabaseName] with (noregrets='true') <| [Predicate]
    
  • Lidské vyvolání: Dvoustupňový proces, který vyžaduje explicitní potvrzení jako samostatný krok. První vyvolání příkazu vrátí ověřovací token, který by se měl poskytnout ke spuštění skutečného vyprázdnění. Tato posloupnost snižuje riziko neúmyslného odstranění nesprávných dat.

Poznámka:

Prvním krokem při volání ve dvou krocích je spuštění dotazu na celou datovou sadu, aby bylo možné identifikovat záznamy, které se mají vyprázdnit. U velkých tabulek může dojít k vypršení časového limitu nebo selhání tohoto dotazu, zejména u velkých objemů dat studené mezipaměti. V případě selhání ověřte predikát sami a po ověření správnosti použijte možnost vyprázdnění noregrets s jedním krokem.

Syntaxe

Poznámka:

Pokud se chcete připojit ke clusteru pomocí webového uživatelského rozhraní Azure Data Exploreru, přečtěte si téma Přidání clusterů.

// Connect to the Data Management service - this command only works in Kusto.Explorer
#connect "https://ingest-[YourClusterName].[region].kusto.windows.net"

// Step #1 - retrieve a verification token (no records will be purged until step #2 is executed)
.purge table [TableName] records in database [DatabaseName] <| [Predicate]

// Step #2 - input the verification token to execute purge
.purge table [TableName] records in database [DatabaseName] with (verificationtoken=h'<verification token from step #1>') <| [Predicate]

Chcete-li vyprázdnit materializované zobrazení, nahraďte klíčové slovo materialized-viewa nahraďte TableName materializedViewName.table

Parametry Popis
DatabaseName Název databáze
TableName / MaterializedViewName Název tabulky / materializovaného zobrazení, které chcete vyprázdnit.
Predicate Identifikuje záznamy, které se mají vyprázdnit. Viz omezení vyprázdnění predikátu.
noregrets Pokud je nastavená, aktivuje aktivaci s jedním krokem.
verificationtoken Ve scénáři aktivace se dvěma kroky (noregrets není nastaveno), můžete tento token použít ke spuštění druhého kroku a potvrzení akce. Pokud verificationtoken není zadaný, aktivuje se první krok příkazu. Informace o vyprázdnění se vrátí s tokenem, který by se měl předat zpět příkazu pro provedení kroku 2.

Omezení vyprázdnění predikátu

  • Predikát musí být jednoduchý výběr (například kde [ColumnName] == 'X'where / [ColumnName] in ('X', 'Y', 'Z') a [OtherColumn] == 'A').
  • Více filtrů musí být kombinováno s klauzulí "and", nikoli s samostatnými where klauzulemi (například where [ColumnName] == 'X' and OtherColumn] == 'Y' nikoli where [ColumnName] == 'X' | where [OtherColumn] == 'Y').
  • Predikát nemůže odkazovat na jiné tabulky, než je tabulka, která je vyprázdněná (TableName). Predikát může obsahovat pouze příkaz výběru (where). Nemůže projektovat konkrétní sloupce z tabulky (výstupní schéma při spuštění |table Predikát musí odpovídat schématu tabulky).
  • Systémové funkce (například ingestion_time(), ) extent_id()se nepodporují.

Příklad: Dvoustupňové vyprázdnění

Pokud chcete spustit vyprázdnění ve scénáři aktivace se dvěma kroky, spusťte krok 1 příkazu:

   // Connect to the Data Management service
   #connect "https://ingest-[YourClusterName].[region].kusto.windows.net"

   .purge table MyTable records in database MyDatabase <| where CustomerId in ('X', 'Y')

   .purge materialized-view MyView records in database MyDatabase <| where CustomerId in ('X', 'Y')

Výstup

NumRecordsToPurge EstimatedPurgeExecutionTime Ověřovacítoken
1,596 00:00:02 e43c7184ed22f4f23c7a9d7b124d196be2e570096987e5baadf65057fa65736b

Potom před spuštěním kroku 2 ověřte hodnotu NumRecordsToPurge.

K dokončení vyprázdnění ve scénáři aktivace se dvěma kroky použijte ověřovací token vrácený z kroku 1 ke spuštění kroku 2:

.purge table MyTable records in database MyDatabase
 with(verificationtoken=h'e43c7....')
<| where CustomerId in ('X', 'Y')

.purge materialized-view MyView records in database MyDatabase
 with(verificationtoken=h'e43c7....')
<| where CustomerId in ('X', 'Y')

Výstup

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
c9651d74-3b80-4183-90bb-bbe9e42eadc4 MyDatabase MyTable 2019-01-20 11:41:05.4391686 00:00:00.1406211 2019-01-20 11:41:05.4391686 Plánováno 0 KE. RunCommand; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 ID aplikace AAD=...

Příklad: Jednokrokové vyprázdnění

Pokud chcete aktivovat vyprázdnění ve scénáři aktivace s jedním krokem, spusťte následující příkaz:

// Connect to the Data Management service
 #connect "https://ingest-[YourClusterName].[region].kusto.windows.net"

.purge table MyTable records in database MyDatabase with (noregrets='true') <| where CustomerId in ('X', 'Y')

.purge materialized-view MyView records in database MyDatabase with (noregrets='true') <| where CustomerId in ('X', 'Y')

Výstup

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
c9651d74-3b80-4183-90bb-bbe9e42eadc4 MyDatabase MyTable 2019-01-20 11:41:05.4391686 00:00:00.1406211 2019-01-20 11:41:05.4391686 Plánováno 0 KE. RunCommand; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 ID aplikace AAD=...

Zrušit příkaz operace vyprázdnění

V případě potřeby můžete zrušit nevyřízené žádosti o vymazání.

Poznámka:

Tato operace je určená pro scénáře obnovení chyb. Není zaručeno úspěšné a nemělo by být součástí normálního provozního toku. Dá se použít pouze na požadavky, které jsou stále ve frontě a ještě nebyly odeslány ke spuštění.

Syntaxe

 // Cancel of a single purge operation
 .cancel purge <OperationId>

  // Cancel of all pending purge requests in a database
 .cancel all purges in database <DatabaseName>

 // Cancel of all pending purge requests, for all databases
 .cancel all purges

Příklad: Zrušení jedné operace vymazání

 .cancel purge aa894210-1c60-4657-9d21-adb2887993e1

Výstup

Výstup tohoto příkazu je stejný jako výstup příkazu show purges OperationId a zobrazuje aktualizovaný stav operace mazání, která se ruší. Pokud je pokus úspěšný, stav operace se aktualizuje na Canceled. Jinak se stav operace nezmění.

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
c9651d74-3b80-4183-90bb-bbe9e42eadc4 MyDatabase MyTable 2019-01-20 11:41:05.4391686 00:00:00.1406211 2019-01-20 11:41:05.4391686 Zrušeno 0 KE. RunCommand; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 ID aplikace AAD=...

Příklad: Zrušení všech čekajících operací vymazání v databázi

 .cancel all purges in database MyDatabase

Výstup

Výstup tohoto příkazu je stejný jako výstup příkazu zobrazit vyprázdnění , který zobrazuje všechny operace v databázi s aktualizovaným stavem. Operace, které byly úspěšně zrušeny, budou mít jejich stav aktualizován na Canceled. Jinak se stav operace nezmění.

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
5a34169e-8730-49f5-9694-7fde3a7a0139 MyDatabase MyTable 2021-03-03 05:07:29.7050198 00:00:00.2971331 2021-03-03 05:07:30.0021529 Zrušeno 0 KE. RunCommand; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 ID aplikace AAD=...
2fa7c04c-6364-4ce1-a5e5-1ab921f518f5 MyDatabase MyTable 2021-03-03 05:05:03.5035478 00:00:00.1406211 2021-03-03 05:05:03.6441689 Probíhající 0 KE. RunCommand; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 ID aplikace AAD=...

Sledování stavu operace vyprázdnění

Poznámka:

Operace vyprázdnění je možné sledovat pomocí příkazu zobrazit vyprázdnění, který se spustí na koncovém bodu https://ingest-Správa dat [YourClusterName].[ region].kusto.windows.net.

Stav = Dokončeno označuje úspěšné dokončení první fáze operace vyprázdnění, což jsou záznamy, které jsou obnovitelné odstranění a už nejsou k dispozici pro dotazování. U zákazníků se neočekává, že budou sledovat a ověřovat dokončení druhé fáze (pevné odstranění). Tato fáze se monitoruje interně.

Příkaz Zobrazit vyprázdnění

Show purges příkaz zobrazí stav operace vyprázdnění zadáním ID operace v požadovaném časovém období.

.show purges <OperationId>
.show purges [in database <DatabaseName>]
.show purges from '<StartDate>' [in database <DatabaseName>]
.show purges from '<StartDate>' to '<EndDate>' [in database <DatabaseName>]
Vlastnosti Popis Povinné/volitelné
OperationId ID operace Správa dat se vypíše po provedení jedné nebo druhé fáze. Povinné
StartDate Nižší časový limit pro operace filtrování Pokud tento parametr vynecháte, výchozí hodnota je 24 hodin před aktuálním časem. Volitelné
EndDate Horní časový limit pro operace filtrování Pokud tento parametr vynecháte, nastaví se výchozí hodnota na aktuální čas. Volitelné
DatabaseName Název databáze pro filtrování výsledků Volitelné

Poznámka:

Stav bude poskytován pouze u databází, pro které má klient oprávnění správce databáze.

Příklady

.show purges
.show purges c9651d74-3b80-4183-90bb-bbe9e42eadc4
.show purges from '2018-01-30 12:00'
.show purges from '2018-01-30 12:00' to '2018-02-25 12:00'
.show purges from '2018-01-30 12:00' to '2018-02-25 12:00' in database MyDatabase

Výstup

OperationId DatabaseName TableName ScheduledTime Duration LastUpdatedOn EngineOperationId State StateDetails EngineStartTime EngineDuration Retries ClientRequestId Principal
c9651d74-3b80-4183-90bb-bbe9e42eadc4 MyDatabase MyTable 2019-01-20 11:41:05.4391686 00:00:33.6782130 2019-01-20 11:42:34.6169153 a0825d4d-6b0f-47f3-a499-54ac5681ab78 Dokončeno Vyprázdnění bylo úspěšně dokončeno (artefakty úložiště čekající na odstranění) 2019-01-20 11:41:34.6486506 00:00:04.4687310 0 KE. RunCommand; 1d0ad28b-f791-4f5a-a60f-0e32318367b7 ID aplikace AAD=...
  • OperationId – ID operace DM vrácené při provádění vyprázdnění.
  • DatabaseName** – název databáze (rozlišují se malá a velká písmena).
  • TableName – název tabulky (rozlišují se malá a velká písmena).
  • ScheduledTime - čas spuštění příkazu vyprázdnění do služby DM.
  • Duration – celková doba trvání operace vyprázdnění, včetně doby čekání fronty DM spuštění.
  • EngineOperationId – ID operace skutečného vyprázdnění spuštěného v modulu.
  • State - vyprázdnění stavu může být jedna z následujících hodnot:
    • Scheduled - Operace vymazání je naplánována pro spuštění. Pokud úloha zůstane naplánovaná, pravděpodobně existuje backlog operací vyprázdnění. Pokud chcete vymazat tento backlog, podívejte se na vyprázdnění výkonu . Pokud operace vyprázdnění selže u přechodné chyby, bude se opakovat dm a bude nastavena na Naplánovano znovu (takže se může zobrazit přechod operace z naplánovaného na inProgress a zpět na Naplánovano).
    • InProgress - Operace vyprázdnění probíhá v motoru.
    • Completed - Vyprázdnění bylo úspěšně dokončeno.
    • BadInput – Vymazání se nezdařilo při chybném vstupu a nebude se opakovat. Příčinou tohoto selhání můžou být různé problémy, jako je chyba syntaxe v predikátu, neplatný predikát pro příkazy mazání, dotaz, který překračuje limity (například více než 1M entit v operátoru externaldata nebo více než 64 MB celkové velikosti rozšířeného dotazu) a chyby 404 nebo 403 pro externaldata objekty blob.
    • Failed - Vyprázdnění selhalo a nebude se opakovat. K tomuto selhání může dojít v případě, že operace čekala v frontě příliš dlouho (více než 14 dnů), a to kvůli backlogu jiných operací mazání nebo počtu selhání, které překračují limit opakování. Ten vytvoří interní výstrahu monitorování a tým ji prošetří.
  • StateDetails - popis státu.
  • EngineStartTime - čas, kdy byl příkaz vydán motoru. Pokud mezi tímto časem a datem ScheduledTime existuje velký rozdíl, obvykle existuje významný backlog operací vyprázdnění a cluster nebude držet krok s tempem.
  • EngineDuration - čas skutečného vyprázdnění v motoru. Pokud se mazání několikrát opakuje, jedná se o součet všech dob provádění.
  • Retries – počet opakování operace službou DM kvůli přechodné chybě.
  • ClientRequestId – ID aktivity klienta žádosti o vyprázdnění DM.
  • Principal – identita vystavitele příkazu vyprázdnění.

Vymazání celé tabulky

Vymazání tabulky zahrnuje vyřazení tabulky a jeho označení jako vyprázdněné tak, aby se na ní spustil proces pevného odstranění popsaného v procesu vyprázdnění. Vyřazení tabulky bez vymazání neodstraní všechny artefakty úložiště. Tyto artefakty se odstraní podle zásad pevného uchovávání informací, které jsou původně nastavené v tabulce. Příkaz purge table allrecords je rychlý a efektivní a je vhodnější než proces vyprázdnění záznamů, pokud je to možné pro váš scénář.

Poznámka:

Příkaz se vyvolá spuštěním příkazu Purge table TableName allrecords na koncovém bodu https://ingest-Správa dat [YourClusterName].[ region].kusto.windows.net.

Příkaz Vyprázdnit tabulku TableName allrecords

Podobně jako příkaz .purge table records může být tento příkaz vyvolán v programovém (jednokrokovém) nebo ručním (dvoustupňovovém) režimu.

  1. Programové vyvolání (jeden krok):

    Syntaxe

    // Connect to the Data Management service
    #connect "https://ingest-[YourClusterName].[Region].kusto.windows.net"
    
    .purge table [TableName] in database [DatabaseName] allrecords with (noregrets='true')
    
  2. Lidské vyvolání (dva kroky):

    Syntaxe

    
    // Connect to the Data Management service
    #connect "https://ingest-[YourClusterName].[Region].kusto.windows.net"
    
    // Step #1 - retrieve a verification token (the table will not be purged until step #2 is executed)
    
    .purge table [TableName] in database [DatabaseName] allrecords
    
    // Step #2 - input the verification token to execute purge
    .purge table [TableName] in database [DatabaseName] allrecords with (verificationtoken=h'<verification token from step #1>')
    
    Parametry Popis
    DatabaseName Název databáze.
    TableName Název tabulky.
    noregrets Pokud je nastavená, aktivuje aktivaci s jedním krokem.
    verificationtoken Ve scénáři aktivace se dvěma kroky (noregrets není nastavený) se tento token dá použít ke spuštění druhého kroku a potvrzení akce. Pokud verificationtoken není zadaný, aktivuje se první krok příkazu. V tomto kroku se vrátí token, který se vrátí zpět k příkazu a provede krok 2.

Příklad: Dvoustupňové vyprázdnění

  1. Pokud chcete spustit vyprázdnění ve scénáři aktivace se dvěma kroky, spusťte krok 1 příkazu:

    // Connect to the Data Management service
     #connect "https://ingest-[YourClusterName].[Region].kusto.windows.net"
    
    .purge table MyTable in database MyDatabase allrecords
    

    Výstup

    VerificationToken
    e43c7184ed22f4f23c7a9d7b124d196be2e570096987e5baadf65057fa65736b
  2. K dokončení vyprázdnění ve scénáři aktivace se dvěma kroky použijte ověřovací token vrácený z kroku 1 ke spuštění kroku 2:

    .purge table MyTable in database MyDatabase allrecords
    with (verificationtoken=h'eyJT.....')
    

    Výstup je stejný jako výstup příkazu .show tables (vrácený bez vyprázdněné tabulky).

    Výstup

    TableName DatabaseName Složka DocString
    Jiná tabulka MyDatabase --- ---

Příklad: Jednokrokové vyprázdnění

Pokud chcete aktivovat vyprázdnění ve scénáři aktivace s jedním krokem, spusťte následující příkaz:

// Connect to the Data Management service
#connect "https://ingest-[YourClusterName].[Region].kusto.windows.net"

.purge table MyTable in database MyDatabase allrecords with (noregrets='true')

Výstup je stejný jako výstup příkazu .show tables (vrácený bez vyprázdněné tabulky).

Výstup

TableName DatabaseName Složka DocString
Jiná tabulka MyDatabase --- ---