Ondersteuning voor wijzigingenfeeds in Azure Blob Storage
Het doel van de wijzigingenfeed is het verstrekken van transactielogboeken van alle wijzigingen die plaatsvinden in de blobs en de blobmetagegevens in uw opslagaccount. De wijzigingenfeed biedt geordende, gegarandeerde, duurzame, onveranderbare logboeken met het kenmerk Alleen-lezen van deze wijzigingen. Clienttoepassingen kunnen deze logboeken op elk gewenst moment lezen, in streaming of in batchmodus. Elke wijziging genereert precies één transactielogboekvermelding, dus u hoeft niet meerdere logboekvermeldingen voor dezelfde wijziging te beheren. Met de wijzigingenfeed kunt u efficiënte en schaalbare oplossingen bouwen waarmee wijzigingsevenementen in uw Blob Storage-account tegen lage kosten worden verwerkt.
Zie Proceswijzigingsfeed in Azure Blob Storage voor meer informatie over het verwerken van records in de wijzigingenfeed.
Hoe de wijzigingenfeed werkt
Wijzigingenfeedrecords worden opgeslagen als blobs in een speciale container in uw opslagaccount tegen standaardprijskosten voor blobs. U kunt de bewaarperiode van deze bestanden beheren op basis van uw vereisten (zie de voorwaarden van de huidige release). Wijzigingengebeurtenissen worden toegevoegd aan de wijzigingenfeed als records in de Apache Avro-indelingsspecificatie : een compacte, snelle, binaire indeling die uitgebreide gegevensstructuren met een inlineschema biedt. Deze indeling wordt veel gebruikt in het Hadoop-ecosysteem, Stream Analytics en Azure Data Factory.
U kunt deze logboeken asynchroon, incrementeel of volledig verwerken. Elk willekeurig aantal clienttoepassingen kan onafhankelijk van elkaar de wijzigingenfeed lezen, parallel en in hun eigen tempo. Analysetoepassingen zoals Apache Drill of Apache Spark kunnen logboeken rechtstreeks gebruiken als Avro-bestanden, waarmee u ze tegen lage kosten kunt verwerken, met hoge bandbreedte en zonder dat u een aangepaste toepassing hoeft te schrijven.
In het volgende diagram ziet u hoe records worden toegevoegd aan de wijzigingenfeed:
Ondersteuning voor wijzigingenfeeds is geschikt voor scenario's die gegevens verwerken op basis van objecten die zijn gewijzigd. Toepassingen kunnen bijvoorbeeld het volgende doen:
- Een secundaire index bijwerken, synchroniseren met een cache, zoekmachine of andere scenario's voor inhoudsbeheer.
- Inzichten en metrische gegevens van bedrijfsanalyses extraheren, op basis van wijzigingen die plaatsvinden in uw objecten, hetzij via streaming of in een batchmodus.
- Wijzigingen in uw objecten opslaan, controleren en analyseren, gedurende een bepaalde periode, voor beveiliging, naleving of informatie voor het beheer van ondernemingsgegevens.
- Bouw oplossingen voor het maken van back-ups, spiegelen of repliceren van objectstatussen in uw account voor noodbeheer of naleving.
- Bouw verbonden toepassingspijplijnen die reageren op wijzigingen of uitvoeringen plannen op basis van het gemaakte of gewijzigde object.
Wijzigingenfeed is een vereiste functie voor objectreplicatie en herstel naar een bepaald tijdstip voor blok-blobs.
Notitie
Wijzigingenfeed biedt een duurzaam, geordend logboekmodel van de wijzigingen die zich voordoen in een blob. Wijzigingen worden geschreven en beschikbaar gemaakt in uw wijzigingenfeedlogboek binnen een volgorde van een paar minuten na de wijziging. Als uw toepassing veel sneller moet reageren op gebeurtenissen, kunt u in plaats daarvan Blob Storage-gebeurtenissen gebruiken. Blob Storage-gebeurtenissen bieden realtime eenmalige gebeurtenissen waarmee uw Azure Functions of toepassingen snel kunnen reageren op wijzigingen die zich voordoen in een blob.
De wijzigingenfeed in- en uitschakelen
U moet de wijzigingenfeed voor uw opslagaccount inschakelen om wijzigingen vast te leggen en op te nemen. Schakel de wijzigingenfeed uit om te stoppen met het vastleggen van wijzigingen. U kunt wijzigingen in- en uitschakelen met behulp van Azure Resource Manager-sjablonen in de portal of PowerShell.
Houd rekening met een paar dingen wanneer u de wijzigingenfeed inschakelt.
Er is slechts één wijzigingenfeed voor de blobservice in elk opslagaccount. Wijzigingenfeedrecords worden opgeslagen in de $blobchangefeed container.
Wijzigingen maken, bijwerken en verwijderen worden alleen vastgelegd op het niveau van de blobservice.
De wijzigingenfeed legt alle wijzigingen vast voor alle beschikbare gebeurtenissen die op het account plaatsvinden. Clienttoepassingen kunnen naar behoefte gebeurtenistypen uitfilteren. (Zie de voorwaarden van de huidige release).
Alleen standaard accounts voor algemeen gebruik v2, premium blok-blob en Blob Storage kunnen de wijzigingenfeed inschakelen. Accounts waarvoor een hiërarchische naamruimte is ingeschakeld, worden momenteel niet ondersteund. V1-opslagaccounts voor algemeen gebruik worden niet ondersteund, maar kunnen zonder downtime worden geüpgraded naar algemeen gebruik v2. Zie Upgraden naar een GPv2-opslagaccount voor meer informatie.
Schakel de wijzigingenfeed in voor uw opslagaccount met behulp van Azure Portal:
Selecteer uw opslagaccount in Azure Portal.
Navigeer naar de optie Gegevensbeveiliging onder Gegevensbeheer.
Selecteer Onder Bijhouden de optie Blobwijzigingsfeed inschakelen.
Kies de knop Opslaan om uw instellingen voor gegevensbeveiliging te bevestigen.
De wijzigingenfeed gebruiken
De wijzigingenfeed produceert verschillende metagegevens en logboekbestanden. Deze bestanden bevinden zich in de $blobchangefeed container van het opslagaccount. De $blobchangefeed container kan worden weergegeven via De Azure-portal of via Azure Storage Explorer.
Uw clienttoepassingen kunnen de wijzigingenfeed gebruiken met behulp van de processorbibliotheek voor de blob-wijzigingenfeed die wordt geleverd met de processor-SDK voor wijzigingenfeeds. Zie Logboeken voor wijzigingenfeeds verwerken in Azure Blob Storage voor meer informatie over het verwerken van records in de wijzigingenfeed.
Feedsegmenten wijzigen
De wijzigingenfeed is een logboek met wijzigingen die zijn ingedeeld in segmenten per uur, maar die om de paar minuten worden toegevoegd en bijgewerkt. Deze segmenten worden alleen gemaakt wanneer er in dat uur blobwijzigingsevenementen plaatsvinden. Hierdoor kan uw clienttoepassing wijzigingen gebruiken die zich binnen bepaalde tijdsbereiken voordoen zonder het hele logboek te hoeven doorzoeken. Zie de specificaties voor meer informatie.
Een beschikbaar uursegment van de wijzigingenfeed wordt beschreven in een manifestbestand dat de paden naar de wijzigingenfeedbestanden voor dat segment aangeeft. In de lijst van de $blobchangefeed/idx/segments/
virtuele map worden deze segmenten weergegeven die op tijd zijn gerangschikt. Het pad van het segment beschrijft het begin van het uurlijkse tijdsbereik dat het segment vertegenwoordigt. U kunt die lijst gebruiken om de segmenten van logboeken te filteren die voor u interessant zijn.
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
Notitie
De $blobchangefeed/idx/segments/1601/01/01/0000/meta.json
wordt automatisch gemaakt wanneer u de wijzigingenfeed inschakelt. U kunt dit bestand veilig negeren. Het is een altijd leeg initialisatiebestand.
Het manifestbestand van het segment (meta.json
) toont het pad van de wijzigingenfeedbestanden voor dat segment in de chunkFilePaths
eigenschap. Hier volgt een voorbeeld van een segmentmanifestbestand.
{
"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"
}
}
}
Notitie
De $blobchangefeed
container wordt pas weergegeven nadat u de functie voor de wijzigingenfeed hebt ingeschakeld voor uw account. U moet enkele minuten wachten nadat u de wijzigingenfeed hebt ingeschakeld voordat u de blobs in de container kunt vermelden.
Gebeurtenisrecords wijzigen
De wijzigingenfeedbestanden bevatten een reeks wijzigings gebeurtenisrecords. Elke wijzigings gebeurtenisrecord komt overeen met één wijziging in een afzonderlijke blob. De records worden geserialiseerd en naar het bestand geschreven met behulp van de Apache Avro-indelingsspecificatie . De records kunnen worden gelezen met behulp van de Avro-bestandsindelingspecificatie. Er zijn verschillende bibliotheken beschikbaar voor het verwerken van bestanden in die indeling.
Wijzigingenfeedbestanden worden opgeslagen in de $blobchangefeed/log/
virtuele map als toevoeg-blobs. Het eerste wijzigingenfeedbestand onder elk pad heeft 00000
de bestandsnaam (bijvoorbeeld 00000.avro
). De naam van elk volgend logboekbestand dat aan dat pad is toegevoegd, wordt verhoogd met 1 (bijvoorbeeld: 00001.avro
).
Schema's voor gebeurtenisrecords
Zie het Azure Event Grid-gebeurtenisschema voor Blob Storage voor een beschrijving van elke eigenschap. De gebeurtenissen BlobPropertiesUpdated en BlobSnapshotCreated zijn momenteel exclusief voor wijzigingenfeeds en worden nog niet ondersteund voor Blob Storage-gebeurtenissen.
Notitie
De wijzigingenfeedbestanden voor een segment worden niet direct weergegeven nadat een segment is gemaakt. De vertragingsduur valt binnen het normale interval van de publicatielatentie van de wijzigingenfeed, die binnen een paar minuten na de wijziging valt.
Schemaversie 1
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 1:
- BlobCreated
- BlobDeleted
- BlobPropertiesUpdated
- BlobSnapshotCreated
In het volgende voorbeeld ziet u een gebeurtenisrecord wijzigen in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 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"
}
}
}
Schemaversie 3
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 3:
- BlobCreated
- BlobDeleted
- BlobPropertiesUpdated
- BlobSnapshotCreated
In het volgende voorbeeld ziet u een wijzigings gebeurtenisrecord in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 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"
}
}
}
Schemaversie 4
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 4:
- BlobCreated
- BlobDeleted
- BlobPropertiesUpdated
- BlobSnapshotCreated
- BlobTierChanged
- BlobAsyncOperationInitiated
- RestorePointMarkerCreated
In het volgende voorbeeld ziet u een wijzigings gebeurtenisrecord in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 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"
}
}
}
Schemaversie 5
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 5:
- BlobCreated
- BlobDeleted
- BlobPropertiesUpdated
- BlobSnapshotCreated
- BlobTierChanged
- BlobAsyncOperationInitiated
In het volgende voorbeeld ziet u een wijzigings gebeurtenisrecord in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 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"
}
}
}
Schemaversie 6
De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 6:
- BlobCreated
- BlobDeleted
- BlobPropertiesUpdated
- BlobSnapshotCreated
- BlobTierChanged
- BlobAsyncOperationInitiated
Schemaversie 6 voegt ondersteuning toe voor koude laag.
In het volgende voorbeeld ziet u een wijzigings gebeurtenisrecord in JSON-indeling die gebruikmaakt van gebeurtenisschemaversie 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"
}
}
}
Specificaties
Records voor wijzigingengebeurtenissen worden alleen toegevoegd aan de wijzigingenfeed. Zodra deze records zijn toegevoegd, zijn ze onveranderbaar en is recordpositie stabiel. Clienttoepassingen kunnen hun eigen controlepunt behouden op de leespositie van de wijzigingenfeed.
Wijzigingsgebeurtenissenrecords worden toegevoegd binnen een volgorde van enkele minuten van de wijziging. Clienttoepassingen kunnen ervoor kiezen om records te gebruiken wanneer ze worden toegevoegd voor streamingtoegang of in bulksgewijs op een ander moment.
Wijzigings gebeurtenisrecords worden gerangschikt op wijzigingsvolgorde per blob. Volgorde van wijzigingen in blobs is niet gedefinieerd in Azure Blob Storage. Alle wijzigingen in een eerder segment zijn vóór eventuele wijzigingen in volgende segmenten.
Wijzigingsgebeurtenisrecords worden geserialiseerd in het logboekbestand met behulp van de indelingsspecificatie van Apache Avro 1.8.2 .
Gebeurtenisrecords wijzigen waarvan de
eventType
waardeControl
interne systeemrecords zijn en geen wijziging in objecten in uw account weergeven. U kunt deze records veilig negeren.Waarden in de
storageDiagnostics
eigenschappentas zijn alleen bedoeld voor intern gebruik en niet ontworpen voor gebruik door uw toepassing. Uw toepassingen mogen geen contractuele afhankelijkheid van die gegevens hebben. U kunt deze eigenschappen veilig negeren.De tijd die wordt vertegenwoordigd door het segment is bij benadering met de grenzen van 15 minuten. Om ervoor te zorgen dat alle records binnen een opgegeven tijd worden gebruikt, verbruikt u het opeenvolgende vorige en volgende uursegment.
Elk segment kan een ander aantal
chunkFilePaths
hebben vanwege interne partitionering van de logboekstroom voor het beheren van de publicatiedoorvoer. De logboekbestanden in elkchunkFilePath
logboek bevatten gegarandeerd wederzijds exclusieve blobs en kunnen parallel worden gebruikt en verwerkt zonder de volgorde van wijzigingen per blob tijdens de iteratie te schenden.De segmenten beginnen in
Publishing
de status. Zodra het toevoegen van de records aan het segment is voltooid, isFinalized
dit . Logboekbestanden in een segment dat is gedateerd na de datum van deLastConsumable
eigenschap in het$blobchangefeed/meta/Segments.json
bestand, mogen niet worden gebruikt door uw toepassing. Hier volgt een voorbeeld van deLastConsumable
eigenschap in een$blobchangefeed/meta/Segments.json
bestand:
{
"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"
}
}
}
Voorwaarden en bekende problemen
In deze sectie worden bekende problemen en voorwaarden in de huidige release van de wijzigingenfeed beschreven.
- Als u firewallregels voor uw opslagaccount inschakelt, worden aanvragen voor levenscyclusbeheer om blobs binnen $blobchangefeed container te verwijderen mogelijk geblokkeerd. U kunt deze aanvragen deblokkeren door uitzonderingen op te geven voor vertrouwde Microsoft-services. Zie de sectie Uitzonderingen in Firewalls en virtuele netwerken configureren voor meer informatie.
- De
LastConsumable
eigenschap van het segments.json-bestand vermeldt niet het eerste segment dat de wijzigingenfeed voltooit. Dit probleem treedt pas op nadat het eerste segment is voltooid. Alle volgende segmenten na het eerste uur worden nauwkeurig vastgelegd in deLastConsumable
eigenschap. - U kunt de $blobchangefeed container momenteel niet zien wanneer u de ListContainers-API aanroept. U kunt de inhoud bekijken door de ListBlobs-API rechtstreeks op de $blobchangefeed container aan te roepen.
- Failover van opslagaccounts van geografisch redundante opslagaccounts waarvoor de wijzigingenfeed is ingeschakeld, kan leiden tot inconsistenties tussen de wijzigingenfeedlogboeken en de blobgegevens en/of metagegevens. Zie Wijzigingenfeed- en blobgegevensconsistentie voor meer informatie over dergelijke inconsistenties.
- Mogelijk ziet u 404-fouten (niet gevonden) en 412 (voorwaarde mislukt) die zijn gerapporteerd op de $blobchangefeed- en $blobchangefeedsys-containers. U kunt deze fouten negeren.
- BlobDeleted-gebeurtenissen worden niet gegenereerd wanneer blobversies of momentopnamen worden verwijderd. Een BlobDeleted-gebeurtenis wordt alleen toegevoegd wanneer een basis-blob (hoofdblob) wordt verwijderd.
- Gebeurtenisrecords worden alleen toegevoegd voor wijzigingen in blobs die het gevolg zijn van aanvragen naar het Blob Service-eindpunt (
blob.core.windows.net
). Wijzigingen die het gevolg zijn van aanvragen naar het Data Lake Storage-eindpunt (dfs.core.windows.net
) worden niet geregistreerd en worden niet weergegeven in wijzigingenfeedrecords.
Veelgestelde vragen
Zie Veelgestelde vragen over ondersteuning voor wijzigingenfeeds.
Functieondersteuning
Ondersteuning voor deze functie kan worden beïnvloed door het inschakelen van Data Lake Storage Gen2, het NFS-protocol (Network File System) 3.0 of het SSH File Transfer Protocol (SFTP). Als u een van deze mogelijkheden hebt ingeschakeld, raadpleegt u de ondersteuning voor Blob Storage-functies in Azure Storage-accounts om ondersteuning voor deze functie te beoordelen.