Ondersteuning voor wijzigingenfeeds in Azure Blob Storage

Het doel van de wijzigingenfeed is om transactielogboeken op te geven van alle wijzigingen die optreden in de blobs en de blobmetagegevens in uw opslagaccount. De wijzigingenfeed biedt geordende, gegarandeerde, duurzame, onveranderbare, alleen-lezen logboeken van deze wijzigingen. Clienttoepassingen kunnen deze logboeken op elk gewenst moment lezen, in streaming of in batchmodus. Met de wijzigingenfeed kunt u efficiënte en schaalbare oplossingen bouwen die wijzigingsevenementen verwerken die plaatsvinden in uw Blob Storage-account tegen lage kosten.

Hoe de wijzigingenfeed werkt

Wijzigingenfeedrecords worden opgeslagen als blobs in een speciale container in uw opslagaccount tegen standaardprijzen voor blob . U kunt de bewaarperiode van deze bestanden bepalen op basis van uw vereisten (zie de voorwaarden van de huidige release). Wijzigingsgebeurtenissen worden toegevoegd aan de wijzigingenfeed als records in de apache Avro-indelingsspecificatie : een compacte, snelle, binaire indeling die uitgebreide gegevensstructuren met 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. Een willekeurig aantal clienttoepassingen kan de wijzigingenfeed onafhankelijk lezen, parallel en in hun eigen tempo. Analysetoepassingen zoals Apache Drill of Apache Spark kunnen logboeken rechtstreeks als Avro-bestanden gebruiken, waarmee u ze tegen lage kosten, 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:

Diagram waarin wordt getoond hoe de wijzigingenfeed werkt om een geordende logboek met wijzigingen in blobs te bieden

Ondersteuning voor wijzigingenfeeds is geschikt voor scenario's waarin gegevens worden verwerkt 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 beheer na noodgevallen of naleving.
  • Bouw verbonden toepassingspijplijnen die reageren op wijzigingsevenementen of uitvoeringen plannen op basis van een gemaakt of gewijzigd 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 in een blob optreden. Wijzigingen worden binnen enkele minuten na de wijziging geschreven en beschikbaar gemaakt in het logboek van de wijzigingenfeed. Als uw toepassing veel sneller op gebeurtenissen moet reageren, kunt u in plaats daarvan blobopslaggebeurtenissen gebruiken. Blob Storage-gebeurtenissen biedt eenmalige gebeurtenissen in realtime waarmee uw Azure Functions of toepassingen snel kunnen reageren op wijzigingen in een blob.

De wijzigingenfeed in- en uitschakelen

U moet de wijzigingenfeed voor uw opslagaccount inschakelen om te beginnen met het vastleggen en vastleggen van wijzigingen. Schakel de wijzigingenfeed uit om het vastleggen van wijzigingen te stoppen. U kunt wijzigingen in- en uitschakelen met behulp van Azure Resource Manager-sjablonen in de portal of PowerShell.

Hier volgen enkele zaken waarmee u rekening moet houden wanneer u de wijzigingenfeed inschakelt.

  • Er is slechts één wijzigingenfeed voor de blob-service in elk opslagaccount. Wijzigingenfeedrecords worden opgeslagen in de $blobchangefeed container.

  • Wijzigingen maken, bijwerken en verwijderen worden alleen vastgelegd op blobserviceniveau.

  • De wijzigingenfeed legt alle wijzigingen vast voor alle beschikbare gebeurtenissen die in het account plaatsvinden. Clienttoepassingen kunnen gebeurtenistypen naar behoefte filteren. (Zie de voorwaarden van de huidige release).

  • Alleen standard v2- en Premium-blok-blob- en Blob Storage-accounts kunnen de wijzigingenfeed inschakelen. Accounts waarvoor een hiërarchische naamruimte is ingeschakeld, worden momenteel niet ondersteund. Opslagaccounts voor algemeen gebruik v1 worden niet ondersteund, maar kunnen zonder downtime worden bijgewerkt naar algemeen gebruik v2. Zie Upgraden naar een GPv2-opslagaccount voor meer informatie.

Schakel wijzigingenfeed in voor uw opslagaccount met behulp van Azure Portal:

  1. Selecteer uw opslagaccount in de Azure Portal.

  2. Ga naar de optie Gegevensbeveiliging onder Gegevensbeheer.

  3. Selecteer onder Bijhouden de optie Wijzigingenfeed voor blob inschakelen.

  4. Kies de knop Opslaan om uw instellingen voor gegevensbeveiliging te bevestigen.

    Schermopname van het inschakelen van wijzigingenfeed in Azure Portal

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 bekeken via de Azure Portal of via Azure Storage Explorer.

Uw clienttoepassingen kunnen de wijzigingenfeed gebruiken met behulp van de processorbibliotheek van de blob-wijzigingenfeed die wordt geleverd met de SDK voor de wijzigingenfeedprocessor.

Zie Logboeken voor wijzigingenfeeds verwerken in Azure Blob Storage.

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 binnen specifieke tijdsbereiken plaatsvinden zonder dat u het hele logboek hoeft te doorzoeken. Zie specificaties voor meer informatie.

Een beschikbaar uursegment van de wijzigingenfeed wordt beschreven in een manifestbestand waarin de paden naar de wijzigingenfeedbestanden voor dat segment worden opgegeven. In de lijst met de $blobchangefeed/idx/segments/ virtuele map worden deze segmenten op tijd gerangschikt. Het pad van het segment beschrijft het begin van het uurlijkse tijdsbereik dat het segment vertegenwoordigt. U kunt deze 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.

In het manifestbestand van het segment (meta.json) wordt het pad van de wijzigingenfeedbestanden voor dat segment in de chunkFilePaths eigenschap weergegeven. 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 voor uw account hebt ingeschakeld. Nadat u de wijzigingenfeed hebt ingeschakeld, moet u enkele minuten wachten voordat u de blobs in de container kunt weergeven.

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-bestandsindelingsspecificatie. Er zijn verschillende bibliotheken beschikbaar om bestanden in die indeling te verwerken.

Wijzigingenfeedbestanden worden opgeslagen in de $blobchangefeed/log/ virtuele map als toevoeg-blobs. Het eerste wijzigingenfeedbestand onder elk pad bevat 00000 de bestandsnaam (bijvoorbeeld 00000.avro). De naam van elk volgend logboekbestand dat aan dat pad wordt toegevoegd, wordt verhoogd met 1 (bijvoorbeeld: 00001.avro).

Schema's voor gebeurtenisrecords

Zie 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 onmiddellijk weergegeven nadat een segment is gemaakt. De vertragingsduur valt binnen het normale interval van de publicatielatentie van de wijzigingenfeed, dat binnen enkele minuten na de wijziging ligt.

Schemaversie 1

De volgende gebeurtenistypen kunnen worden vastgelegd in de wijzigingenfeedrecords met schemaversie 1:

  • BlobCreated
  • BlobDeleted
  • BlobEigenschappenBijgewerkt
  • BlobSnapshotCreated

In het volgende voorbeeld ziet u een wijzigings-gebeurtenisrecord 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
  • BlobEigenschappenBijgewerkt
  • 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
  • BlobEigenschappenBijgewerkt
  • 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
  • BlobEigenschappenBijgewerkt
  • 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"
        }
    }
}

Specificaties

  • Wijzigingsgebeurtenissenrecords worden alleen toegevoegd aan de wijzigingenfeed. Zodra deze records zijn toegevoegd, zijn ze onveranderbaar en is de recordpositie stabiel. Clienttoepassingen kunnen hun eigen controlepunt behouden op de leespositie van de wijzigingenfeed.

  • Wijzigingsgebeurtenisrecords worden binnen enkele minuten na de wijziging toegevoegd. Clienttoepassingen kunnen ervoor kiezen om records te gebruiken wanneer ze worden toegevoegd voor streamingtoegang of bulksgewijs op elk ander moment.

  • Wijzigings-gebeurtenisrecords worden per blob gesorteerd op wijzigingsvolgorde. De volgorde van wijzigingen tussen blobs is niet gedefinieerd in Azure Blob Storage. Alle wijzigingen in een eerder segment vallen vóór wijzigingen in volgende segmenten.

  • Wijzigingsgebeurtenisrecords worden geserialiseerd in het logboekbestand met behulp van de apache Avro 1.8.2-indelingsspecificatie .

  • Gebeurtenisrecords wijzigen waarvan de eventType de waarde Control heeft, interne systeemrecords zijn en geen wijziging in objecten in uw account weergeven. U kunt deze records veilig negeren.

  • Waarden in de storageDiagnostics eigenschappenverzameling zijn alleen 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 door het segment wordt vertegenwoordigd , is bij benadering met een grens van 15 minuten. Gebruik dus het opeenvolgende segment vorige en volgende uur om ervoor te zorgen dat alle records binnen een opgegeven tijd worden verbruikt.

  • Elk segment kan een ander aantal hebben vanwege interne partitionering van de logboekstroom voor het beheren van chunkFilePaths de publicatiedoorvoer. De logboekbestanden in elk chunkFilePath bestand bevatten gegarandeerd wederzijds uitsluitende 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, is Finalizeddit . Logboekbestanden in een segment dat is gedateerd na de datum van de LastConsumable eigenschap in het $blobchangefeed/meta/Segments.json bestand, mogen niet worden gebruikt door uw toepassing. Hier volgt een voorbeeld van de LastConsumableeigenschap 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.

  • De url eigenschap van het logboekbestand is momenteel altijd leeg.
  • De LastConsumable eigenschap van het bestand segments.json bevat 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 de LastConsumable 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 wordt niet ondersteund voor accounts waarvoor de wijzigingenfeed is ingeschakeld. Schakel de wijzigingenfeed uit voordat u een failover start.
  • Opslagaccounts die eerder een accountfailover hebben gestart, kunnen problemen hebben met het niet weergeven van het logboekbestand. Eventuele toekomstige accountfailovers kunnen ook van invloed zijn op het logboekbestand.

Functieondersteuning

Ondersteuning voor deze functie kan worden beïnvloed door het inschakelen van Data Lake Storage Gen2, het NFS 3.0-protocol (Network File System) of het SSH File Transfer Protocol (SFTP).

Als u een van deze mogelijkheden hebt ingeschakeld, raadpleegt u Ondersteuning van Blob Storage-functies in Azure Storage-accounts om de ondersteuning voor deze functie te evalueren.

Veelgestelde vragen

Wat is het verschil tussen de wijzigingenfeed en Opslaganalyse logboekregistratie?

Analyselogboeken bevatten records van alle lees-, schrijf-, lijst- en verwijderbewerkingen met geslaagde en mislukte aanvragen voor alle bewerkingen. Analyselogboeken zijn naar beste vermogen en er wordt geen volgorde gegarandeerd.

De wijzigingenfeed is een oplossing die een transactioneel logboek biedt van geslaagde mutaties of wijzigingen in uw account, zoals het maken, wijzigen en verwijderen van blobs. De wijzigingenfeed garandeert dat alle gebeurtenissen worden vastgelegd en weergegeven in de volgorde van geslaagde wijzigingen per blob, zodat u geen ruis van een groot aantal leesbewerkingen of mislukte aanvragen hoeft te filteren. De wijzigingenfeed is fundamenteel ontworpen en geoptimaliseerd voor toepassingsontwikkeling waarvoor bepaalde garanties nodig zijn.

Moet ik de wijzigingenfeed of Opslag-gebeurtenissen gebruiken?

U kunt beide functies gebruiken omdat de wijzigingenfeed en blobopslaggebeurtenissen dezelfde informatie bieden met dezelfde betrouwbaarheidsgarantie voor levering, waarbij het belangrijkste verschil de latentie, volgorde en opslag van gebeurtenisrecords is. De wijzigingenfeed publiceert records binnen enkele minuten na de wijziging naar het logboek en garandeert ook de volgorde van wijzigingsbewerkingen per blob. Opslaggebeurtenissen worden in realtime gepusht en worden mogelijk niet geordend. Wijzigingenfeedgebeurtenissen worden duurzaam opgeslagen in uw opslagaccount als alleen-lezen stabiele logboeken met uw eigen gedefinieerde retentie, terwijl opslaggebeurtenissen tijdelijk worden gebruikt door de gebeurtenis-handler, tenzij u ze expliciet opslaat. Met een wijzigingenfeed kan een willekeurig aantal van uw toepassingen de logboeken op hun eigen gemak gebruiken met behulp van blob-API's of SDK's.

Volgende stappen