Podpora kanálu změn ve službě Azure Blob Storage

Účelem kanálu změn je poskytnout transakční protokoly všech změn, ke kterým dochází v objektech blob a metadatech objektů blob ve vašem účtu úložiště. Kanál změn poskytuje objednaný, zaručený, trvalý, neměnný protokol těchto změn jen pro čtení. Klientské aplikace můžou tyto protokoly kdykoli číst buď ve streamování, nebo v dávkovém režimu. Každá změna generuje přesně jednu položku transakčního protokolu, takže pro stejnou změnu nebudete muset spravovat více položek protokolu. Kanál změn umožňuje vytvářet efektivní a škálovatelná řešení, která zpracovávají události změn, ke kterým dochází v účtu Blob Storage, a to s nízkými náklady.

Informace o zpracování záznamů v kanálu změn najdete v tématu Proces kanálu změn ve službě Azure Blob Storage.

Jak kanál změn funguje

Záznamy kanálu změn se ukládají jako objekty blob ve speciálním kontejneru ve vašem účtu úložiště za standardní ceny objektů blob. Dobu uchovávání těchto souborů můžete řídit na základě vašich požadavků (viz podmínky aktuální verze). Události změn se připojují k kanálu změn jako záznamy ve specifikaci formátu Apache Avro : kompaktní, rychlý binární formát, který poskytuje bohaté datové struktury s vloženým schématem. Tento formát se běžně používá v ekosystému Hadoop, Stream Analytics a Azure Data Factory.

Tyto protokoly můžete zpracovávat asynchronně, přírůstkově nebo v plném rozsahu. Libovolný počet klientských aplikací může nezávisle číst kanál změn paralelně a vlastním tempem. Analytické aplikace, jako je Apache Drill nebo Apache Spark , můžou využívat protokoly přímo jako soubory Avro, které umožňují je zpracovávat s nízkými náklady, s velkou šířkou pásma a bez nutnosti psát vlastní aplikaci.

Následující diagram znázorňuje, jak se záznamy přidají do kanálu změn:

Diagram showing how the change feed works to provide an ordered log of changes to blobs

Podpora kanálu změn je vhodná pro scénáře, které zpracovávají data na základě změněných objektů. Aplikace můžou například:

  • Aktualizace sekundárního indexu, provádění synchronizací s mezipamětí, vyhledávání pomocí vyhledávacího webu nebo jakýkoli jiný scénář správy obsahu
  • Extrakce přehledů obchodních analýz a metrik na základě změn objektů, a to buď v datových proudech, nebo v dávkovém režimu
  • Ukládání, auditování a analýza změn objektů za libovolné časové období, a to za účelem zabezpečení, dodržování předpisů nebo informací při správě podnikových dat
  • Vytvářejte řešení pro zálohování, zrcadlení nebo replikaci stavu objektu ve vašem účtu za účelem správy havárie nebo dodržování předpisů.
  • Sestavte propojené kanály aplikace, které reagují na změny událostí nebo plánují spouštění na základě vytvořeného nebo změně objektu.

Kanál změn je požadovaná funkce pro replikaci objektů objektů a obnovení k určitému bodu v čase pro objekty blob bloku.

Poznámka:

Kanál změn poskytuje trvalý a uspořádaný model protokolu změn, ke kterým dochází v objektu blob. Změny se zapíšou a zpřístupní v protokolu kanálu změn v řádu několika minut od změny. Pokud vaše aplikace musí reagovat na události mnohem rychleji, zvažte místo toho použití událostí služby Blob Storage. Události služby Blob Storage poskytují jednorázové události v reálném čase, které umožňují službě Azure Functions nebo aplikacím rychle reagovat na změny, ke kterým dochází v objektu blob.

Povolení a zakázání kanálu změn

Abyste mohli začít zachytávat a zaznamenávat změny, musíte u svého účtu úložiště povolit kanál změn. Zakažte kanál změn a zastavte zachytávání změn. Změny můžete povolit a zakázat pomocí šablon Azure Resource Manageru na portálu nebo v PowerShellu.

Tady je několik věcí, které je potřeba mít na paměti, když povolíte informační kanál změn.

  • V každém účtu úložiště existuje pouze jeden kanál změn pro službu blob. Záznamy kanálu změn jsou uloženy v kontejneru $blobchangefeed .

  • Změny vytvoření, aktualizace a odstranění se zaznamenávají pouze na úrovni služby blob.

  • Kanál změn zachycuje všechny změny pro všechny dostupné události, ke kterým dochází v účtu. Klientské aplikace můžou podle potřeby vyfiltrovat typy událostí. (Viz podmínky aktuální verze).

  • Kanál změn můžou povolit pouze účty úrovně Standard pro obecné účely verze 2, objektů blob bloku Premium a Blob Storage. Účty s povoleným hierarchickým oborem názvů se v současné době nepodporují. Účty úložiště pro obecné účely verze 1 nejsou podporované, ale dají se upgradovat na účty úložiště pro obecné účely verze 2 bez výpadků. Další informace najdete v tématu Upgrade na účet úložiště GPv2.

Povolení kanálu změn u účtu úložiště pomocí webu Azure Portal:

  1. Na webu Azure Portal vyberte svůj účet úložiště.

  2. V části Správa dat přejděte na možnost Ochrana dat.

  3. V části Sledování vyberte Povolit kanál změn objektů blob.

  4. Kliknutím na tlačítko Uložit potvrďte nastavení ochrany dat.

    Screenshot showing how to enable change feed in Azure portal

Využívání kanálu změn

Kanál změn vytváří několik metadat a souborů protokolu. Tyto soubory se nacházejí v kontejneru $blobchangefeed účtu úložiště. Kontejner $blobchangefeed je možné zobrazit prostřednictvím webu Azure Portal nebo prostřednictvím Průzkumník služby Azure Storage.

Klientské aplikace můžou kanál změn využívat pomocí knihovny procesoru kanálu změn objektů blob, která je k dispozici se sadou SDK pro procesor kanálu změn. Informace o zpracování záznamů v kanálu změn najdete v tématu Protokoly kanálu změn procesu ve službě Azure Blob Storage.

Segmenty kanálu změn

Kanál změn je protokol změn uspořádaných do hodinovýchsegmentů , ale připojených k a aktualizaci každých pár minut. Tyto segmenty se vytvoří pouze v případě, že v dané hodině dojde k událostem změny objektů blob. Díky tomu může vaše klientská aplikace využívat změny, ke kterým dochází v určitém časovém rozsahu, aniž byste museli prohledávat celý protokol. Další informace najdete v části Specifikace.

Dostupný hodinový segment kanálu změn je popsán v souboru manifestu, který určuje cesty k souborům kanálu změn pro daný segment. $blobchangefeed/idx/segments/ Výpis virtuálního adresáře zobrazuje tyto segmenty seřazené podle času. Cesta segmentu popisuje začátek hodinového časového rozsahu, který segment představuje. Pomocí tohoto seznamu můžete vyfiltrovat segmenty protokolů, které vás zajímají.

Name                                                                    Blob Type    Blob Tier      Length  Content Type    
----------------------------------------------------------------------  -----------  -----------  --------  ----------------
$blobchangefeed/idx/segments/1601/01/01/0000/meta.json                  BlockBlob                      584  application/json
$blobchangefeed/idx/segments/2019/02/22/1810/meta.json                  BlockBlob                      584  application/json
$blobchangefeed/idx/segments/2019/02/22/1910/meta.json                  BlockBlob                      584  application/json
$blobchangefeed/idx/segments/2019/02/23/0110/meta.json                  BlockBlob                      584  application/json

Poznámka:

Automaticky se $blobchangefeed/idx/segments/1601/01/01/0000/meta.json vytvoří, když povolíte kanál změn. Tento soubor můžete bezpečně ignorovat. Jedná se o vždy prázdný inicializační soubor.

Soubor manifestu segmentu (meta.json) zobrazuje cestu k souborům kanálu změn pro tento segment ve chunkFilePaths vlastnosti. Tady je příklad souboru manifestu segmentu.

{
    "version": 0,
    "begin": "2019-02-22T18:10:00.000Z",
    "intervalSecs": 3600,
    "status": "Finalized",
    "config": {
        "version": 0,
        "configVersionEtag": "0x8d698f0fba563db",
        "numShards": 2,
        "recordsFormat": "avro",
        "formatSchemaVersion": 1,
        "shardDistFnVersion": 1
    },
    "chunkFilePaths": [
        "$blobchangefeed/log/00/2019/02/22/1810/",
        "$blobchangefeed/log/01/2019/02/22/1810/"
    ],
    "storageDiagnostics": {
        "version": 0,
        "lastModifiedTime": "2019-02-22T18:11:01.187Z",
        "data": {
            "aid": "55e507bf-8006-0000-00d9-ca346706b70c"
        }
    }
}

Poznámka:

Kontejner $blobchangefeed se zobrazí až po povolení funkce kanálu změn ve vašem účtu. Než budete moct vypsat objekty blob v kontejneru, budete muset několik minut počkat, až kanál změn povolíte.

Změna záznamů událostí

Soubory kanálu změn obsahují řadu záznamů událostí změn. Každý záznam události změny odpovídá jedné změně jednotlivého objektu blob. Záznamy jsou serializovány a zapsány do souboru pomocí specifikace formátu Apache Avro . Záznamy lze číst pomocí specifikace formátu souboru Avro. Pro zpracování souborů v daném formátu je k dispozici několik knihoven.

Soubory kanálu změn se ukládají ve virtuálním $blobchangefeed/log/ adresáři jako doplňovací objekty blob. První soubor kanálu změn v každé cestě bude mít 00000 v názvu souboru (například 00000.avro). Název každého dalšího souboru protokolu přidaného do této cesty se zvýší o 1 (například: 00001.avro).

Schémata záznamů událostí

Popis jednotlivých vlastností najdete ve schématu událostí služby Azure Event Grid pro službu Blob Storage. Události BlobPropertiesUpdated a BlobSnapshotCreated jsou aktuálně exkluzivní pro kanál změn a zatím nejsou podporované pro události blob Storage.

Poznámka:

Soubory kanálu změn pro segment se nezobrazí okamžitě po vytvoření segmentu. Délka zpoždění je v normálním intervalu latence publikování kanálu změn, který je během několika minut od změny.

Schéma verze 1

V záznamech kanálu změn se schématem verze 1 mohou být zaznamenány následující typy událostí:

  • Objekt blobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated

Následující příklad ukazuje záznam události změny ve formátu JSON, který používá schéma událostí verze 1:

{
    "schemaVersion": 1,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2022-02-17T12:59:41.4003102Z",
    "id": "322343e3-8020-0000-00fe-233467066726",
    "data": {
        "api": "PutBlob",
        "clientRequestId": "f0270546-168e-4398-8fa8-107a1ac214d2",
        "requestId": "322343e3-8020-0000-00fe-233467000000",
        "etag": "0x8D9F2155CBF7928",
        "contentType": "application/octet-stream",
        "contentLength": 128,
        "blobType": "BlockBlob",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "storageDiagnostics": {
            "bid": "9d725a00-8006-0000-00fe-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Schéma verze 3

V záznamech kanálu změn se schématem verze 3 mohou být zaznamenány následující typy událostí:

  • Objekt blobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated

Následující příklad ukazuje záznam události změny ve formátu JSON, který používá schéma událostí verze 3:

{
    "schemaVersion": 3,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2022-02-17T13:05:19.6798242Z",
    "id": "eefe8fc8-8020-0000-00fe-23346706daaa",
    "data": {
        "api": "PutBlob",
        "clientRequestId": "00c0b6b7-bb67-4748-a3dc-86464863d267",
        "requestId": "eefe8fc8-8020-0000-00fe-233467000000",
        "etag": "0x8D9F216266170DC",
        "contentType": "application/octet-stream",
        "contentLength": 128,
        "blobType": "BlockBlob",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "previousInfo": {
            "SoftDeleteSnapshot": "2022-02-17T13:08:42.4825913Z",
            "WasBlobSoftDeleted": "true",
            "BlobVersion": "2024-02-17T16:11:52.0781797Z",
            "LastVersion" : "2022-02-17T16:11:52.0781797Z",
            "PreviousTier": "Hot"
        },
        "snapshot": "2022-02-17T16:09:16.7261278Z",
        "blobPropertiesUpdated" : {
            "ContentLanguage" : {
                "current" : "pl-Pl",
                "previous" : "nl-NL"
            },
            "CacheControl" : {
                "current" : "max-age=100",
                "previous" : "max-age=99"
            },
            "ContentEncoding" : {
                "current" : "gzip, identity",
                "previous" : "gzip"
            },
            "ContentMD5" : {
                "current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
                "previous" : "Q2h1Y2sgSW="
            },
            "ContentDisposition" : {
                "current" : "attachment",
                "previous" : ""
            },
            "ContentType" : {
                "current" : "application/json",
                "previous" : "application/octet-stream"
            }
        },
        "storageDiagnostics": {
            "bid": "9d726370-8006-0000-00ff-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Schéma verze 4

Následující typy událostí mohou být zaznamenány v záznamech kanálu změn se schématem verze 4:

  • Objekt blobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • Objekt blobAsyncOperationInitiated
  • RestorePointMarkerCreated

Následující příklad ukazuje záznam události změny ve formátu JSON, který používá schéma událostí verze 4:

{
    "schemaVersion": 4,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2022-02-17T13:08:42.4835902Z",
    "id": "ca76bce1-8020-0000-00ff-23346706e769",
    "data": {
        "api": "PutBlob",
        "clientRequestId": "58fbfee9-6cf5-4096-9666-c42980beee65",
        "requestId": "ca76bce1-8020-0000-00ff-233467000000",
        "etag": "0x8D9F2169F42D701",
        "contentType": "application/octet-stream",
        "contentLength": 128,
        "blobType": "BlockBlob",
        "blobVersion": "2022-02-17T16:11:52.5901564Z",
        "containerVersion": "0000000000000001",
        "blobTier": "Archive",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "previousInfo": {
            "SoftDeleteSnapshot": "2022-02-17T13:08:42.4825913Z",
            "WasBlobSoftDeleted": "true",
            "BlobVersion": "2024-02-17T16:11:52.0781797Z",
            "LastVersion" : "2022-02-17T16:11:52.0781797Z",
            "PreviousTier": "Hot"
        },
        "snapshot": "2022-02-17T16:09:16.7261278Z",
        "blobPropertiesUpdated" : {
            "ContentLanguage" : {
                "current" : "pl-Pl",
                "previous" : "nl-NL"
            },
            "CacheControl" : {
                "current" : "max-age=100",
                "previous" : "max-age=99"
            },
            "ContentEncoding" : {
                "current" : "gzip, identity",
                "previous" : "gzip"
            },
            "ContentMD5" : {
                "current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
                "previous" : "Q2h1Y2sgSW="
            },
            "ContentDisposition" : {
                "current" : "attachment",
                "previous" : ""
            },
            "ContentType" : {
                "current" : "application/json",
                "previous" : "application/octet-stream"
            }
        },
        "asyncOperationInfo": {
            "DestinationTier": "Hot",
            "WasAsyncOperation": "true",
            "CopyId": "copyId"
        },
        "storageDiagnostics": {
            "bid": "9d72687f-8006-0000-00ff-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Schéma verze 5

V záznamech kanálu změn s schématem verze 5 mohou být zaznamenány následující typy událostí:

  • Objekt blobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • Objekt blobAsyncOperationInitiated

Následující příklad ukazuje záznam události změny ve formátu JSON, který používá schéma událostí verze 5:

{
    "schemaVersion": 5,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2022-02-17T13:12:11.5746587Z",
    "id": "62616073-8020-0000-00ff-233467060cc0",
    "data": {
        "api": "PutBlob",
        "clientRequestId": "b3f9b39a-ae5a-45ac-afad-95ac9e9f2791",
        "requestId": "62616073-8020-0000-00ff-233467000000",
        "etag": "0x8D9F2171BE32588",
        "contentType": "application/octet-stream",
        "contentLength": 128,
        "blobType": "BlockBlob",
        "blobVersion": "2022-02-17T16:11:52.5901564Z",
        "containerVersion": "0000000000000001",
        "blobTier": "Archive",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "previousInfo": {
            "SoftDeleteSnapshot": "2022-02-17T13:12:11.5726507Z",
            "WasBlobSoftDeleted": "true",
            "BlobVersion": "2024-02-17T16:11:52.0781797Z",
            "LastVersion" : "2022-02-17T16:11:52.0781797Z",
            "PreviousTier": "Hot"
        },
        "snapshot" : "2022-02-17T16:09:16.7261278Z",
        "blobPropertiesUpdated" : {
            "ContentLanguage" : {
                "current" : "pl-Pl",
                "previous" : "nl-NL"
            },
            "CacheControl" : {
                "current" : "max-age=100",
                "previous" : "max-age=99"
            },
            "ContentEncoding" : {
                "current" : "gzip, identity",
                "previous" : "gzip"
            },
            "ContentMD5" : {
                "current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
                "previous" : "Q2h1Y2sgSW="
            },
            "ContentDisposition" : {
                "current" : "attachment",
                "previous" : ""
            },
            "ContentType" : {
                "current" : "application/json",
                "previous" : "application/octet-stream"
            }
        },
        "asyncOperationInfo": {
            "DestinationTier": "Hot",
            "WasAsyncOperation": "true",
            "CopyId": "copyId"
        },
        "blobTagsUpdated": {
            "previous": {
                "Tag1": "Value1_3",
                "Tag2": "Value2_3"
            },
            "current": {
                "Tag1": "Value1_4",
                "Tag2": "Value2_4"
            }
        },
        "restorePointMarker": {
            "rpi": "cbd73e3d-f650-4700-b90c-2f067bce639c",
            "rpp": "cbd73e3d-f650-4700-b90c-2f067bce639c",
            "rpl": "test-restore-label",
            "rpt": "2022-02-17T13:56:09.3559772Z"
        },
        "storageDiagnostics": {
            "bid": "9d726db1-8006-0000-00ff-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Schéma verze 6

V záznamech kanálu změn s schématem verze 6 mohou být zaznamenány následující typy událostí:

  • Objekt blobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • Objekt blobAsyncOperationInitiated

Verze schématu 6 přidává podporu pro studenou úroveň.

Následující příklad ukazuje záznam události změny ve formátu JSON, který používá schéma událostí verze 6:

{
    "schemaVersion": 6,
    "topic": "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>",
    "subject": "/blobServices/default/containers/<container>/blobs/<blob>",
    "eventType": "BlobCreated",
    "eventTime": "2023-10-11T13:12:11.5746587Z",
    "id": "62616073-8020-0000-00ff-233467060cc0",
    "data": {
        "api": "PutBlob",
        "clientRequestId": "b3f9b39a-ae5a-45ac-afad-95ac9e9f2791",
        "requestId": "62616073-8020-0000-00ff-233467000000",
        "etag": "0x8D9F2171BE32588",
        "contentType": "application/octet-stream",
        "contentLength": 128,
        "blobType": "BlockBlob",
        "blobVersion": "2023-10-11T16:11:52.5901564Z",
        "containerVersion": "0000000000000001",
        "blobTier": "Archive",
        "url": "https://www.myurl.com",
        "sequencer": "00000000000000010000000000000002000000000000001d",
        "previousInfo": {
            "SoftDeleteSnapshot": "2023-10-11T13:12:11.5726507Z",
            "WasBlobSoftDeleted": "true",
            "BlobVersion": "2024-02-17T16:11:52.0781797Z",
            "LastVersion" : "2023-10-11T16:11:52.0781797Z",
            "PreviousTier": "Hot"
        },
        "snapshot" : "2023-10-11T16:09:16.7261278Z",
        "blobPropertiesUpdated" : {
            "ContentLanguage" : {
                "current" : "pl-Pl",
                "previous" : "nl-NL"
            },
            "CacheControl" : {
                "current" : "max-age=100",
                "previous" : "max-age=99"
            },
            "ContentEncoding" : {
                "current" : "gzip, identity",
                "previous" : "gzip"
            },
            "ContentMD5" : {
                "current" : "Q2h1Y2sgSW51ZwDIAXR5IQ==",
                "previous" : "Q2h1Y2sgSW="
            },
            "ContentDisposition" : {
                "current" : "attachment",
                "previous" : ""
            },
            "ContentType" : {
                "current" : "application/json",
                "previous" : "application/octet-stream"
            }
        },
        "asyncOperationInfo": {
            "DestinationTier": "Hot",
            "WasAsyncOperation": "true",
            "CopyId": "copyId"
        },
        "blobTagsUpdated": {
            "previous": {
                "Tag1": "Value1_3",
                "Tag2": "Value2_3"
            },
            "current": {
                "Tag1": "Value1_4",
                "Tag2": "Value2_4"
            }
        },
        "restorePointMarker": {
            "rpi": "cbd73e3d-f650-4700-b90c-2f067bce639c",
            "rpp": "cbd73e3d-f650-4700-b90c-2f067bce639c",
            "rpl": "test-restore-label",
            "rpt": "2023-10-11T13:56:09.3559772Z"
        },
        "storageDiagnostics": {
            "bid": "9d726db1-8006-0000-00ff-233467000000",
            "seq": "(2,18446744073709551615,29,29)",
            "sid": "4cc94e71-f6be-75bf-e7b2-f9ac41458e5a"
        }
    }
}

Specifikace

  • Záznamy událostí změn se připojují pouze do kanálu změn. Po připojení těchto záznamů jsou neměnné a pozice záznamu je stabilní. Klientské aplikace můžou udržovat svůj vlastní kontrolní bod na pozici čtení kanálu změn.

  • Záznamy událostí změn se připojují v řádu několika minut změny. Klientské aplikace se můžou rozhodnout, že budou využívat záznamy, protože jsou připojené pro přístup ke streamování nebo hromadně kdykoliv jindy.

  • Záznamy událostí změn jsou seřazené podle pořadí úprav na objekt blob. Pořadí změn napříč objekty blob není v Azure Blob Storage definováno. Všechny změny v předchozím segmentu jsou před všemi změnami v následných segmentech.

  • Záznamy událostí změn jsou serializovány do souboru protokolu pomocí specifikace formátu Apache Avro 1.8.2 .

  • Změňte záznamy událostí, ve eventType kterých má hodnotu Control interní systémové záznamy, a neodráží změnu objektů ve vašem účtu. Tyto záznamy můžete bezpečně ignorovat.

  • Hodnoty v kontejneru storageDiagnostics vlastností jsou určené pouze pro interní použití a nejsou určené pro použití vaší aplikací. Vaše aplikace by neměly mít smluvní závislost na datech. Tyto vlastnosti můžete bezpečně ignorovat.

  • Čas reprezentovaný segmentem je přibližný s hranicemi 15 minut. Pokud tedy chcete zajistit spotřebu všech záznamů v zadaném čase, spotřebujte po sobě jdoucí předchozí a další hodinový segment.

  • Každý segment může mít jiný počet chunkFilePaths z důvodu interního dělení datového proudu protokolu za účelem správy propustnosti publikování. Soubory protokolů v každé z nich chunkFilePath mají zaručené, že obsahují vzájemně se vylučující objekty blob a je možné je využívat a zpracovávat paralelně bez porušení pořadí úprav v jednotlivých objektech blob během iterace.

  • Segmenty začínají ve Publishing stavu. Po připojení záznamů k segmentu bude Finalizeddokončeno . Soubory protokolu v libovolném segmentu, který je datován po datu LastConsumable vlastnosti v $blobchangefeed/meta/Segments.json souboru, by vaše aplikace neměla využívat. Tady je příklad LastConsumablevlastnosti v $blobchangefeed/meta/Segments.json souboru:

{
    "version": 0,
    "lastConsumable": "2019-02-23T01:10:00.000Z",
    "storageDiagnostics": {
        "version": 0,
        "lastModifiedTime": "2019-02-23T02:24:00.556Z",
        "data": {
            "aid": "55e551e3-8006-0000-00da-ca346706bfe4",
            "lfz": "2019-02-22T19:10:00.000Z"
        }
    }
}

Podmínky a známé problémy

Tato část popisuje známé problémy a podmínky v aktuální verzi kanálu změn.

  • Pokud pro účet úložiště povolíte pravidla brány firewall, můžou být zablokované požadavky na správu životního cyklu pro odstranění objektů blob v rámci $blobchangefeed kontejneru. Tyto požadavky můžete odblokovat přidáním výjimek pro důvěryhodné služby Microsoftu. Další informace najdete v části Výjimky v tématu Konfigurace bran firewall a virtuálních sítí.
  • Vlastnost LastConsumable souboru segments.json nevypisuje úplně první segment, který kanál změn finalizuje. K tomuto problému dochází až po dokončení prvního segmentu. Všechny následující segmenty po první hodině jsou přesně zachyceny ve LastConsumable vlastnosti.
  • Při volání rozhraní LISTContainers API se v současné době nezobrazuje kontejner $blobchangefeed . Obsah můžete zobrazit voláním rozhraní ListBlobs API přímo v kontejneru $blobchangefeed.
  • Převzetí služeb účtu úložiště při selhání geograficky redundantních účtů úložiště s povoleným kanálem změn může vést k nekonzistence mezi protokoly kanálu změn a daty objektů blob nebo metadaty. Další informace o takových nekonzistencích najdete v tématu Nekonzistence kanálu změn a dat objektů blob.
  • V kontejnerech $blobchangefeed a $blobchangefeedsys se můžou zobrazit chyby 404 (Nenalezena) a 412 (předběžná podmínka selhala). Tyto chyby můžete bezpečně ignorovat.
  • Události BlobDeleted se negenerují při odstranění verzí objektů blob nebo snímků. Událost BlobDeleted se přidá pouze při odstranění základního (kořenového) objektu blob.
  • Záznamy událostí se přidávají jenom pro změny objektů blob, které jsou výsledkem požadavků na koncový bod služby Blob Service (blob.core.windows.net). Změny, které jsou výsledkem požadavků na koncový bod Data Lake Storage (dfs.core.windows.net), se nezaprotokolují a nezobrazí se v záznamech kanálu změn.

Nejčastější dotazy

Viz Nejčastější dotazy k podpoře kanálu změn.

Podpora funkcí

Podpora této funkce může mít vliv na povolení protokolu Data Lake Storage Gen2, systému souborů NFS (Network File System) 3.0 nebo protokolu SSH File Transfer Protocol (SFTP). Pokud jste některou z těchto funkcí povolili, podívejte se na podporu funkcí služby Blob Storage v účtech Azure Storage a vyhodnoťte podporu této funkce.