Azure Blob Depolama'de değişiklik akışı desteği

Değişiklik akışının amacı, depolama hesabınızdaki bloblarda ve blob meta verilerinde gerçekleşen tüm değişikliklerin işlem günlüklerini sağlamaktır. Değişiklik akışı, bu değişikliklerin sıralı, garantili, dayanıklı, sabit, salt okunur günlüğünü sağlar. İstemci uygulamaları bu günlükleri istedikleri zaman akış veya toplu iş modunda okuyabilir. Her değişiklik tam olarak bir işlem günlüğü girişi oluşturur, bu nedenle aynı değişiklik için birden çok günlük girdisini yönetmeniz gerekmez. Değişiklik akışı, Blob Depolama hesabınızda gerçekleşen değişiklik olaylarını düşük maliyetle işleyen verimli ve ölçeklenebilir çözümler oluşturmanıza olanak tanır.

Değişiklik akışındaki kayıtları işlemeyi öğrenmek için bkz. Azure Blob Depolama'da değişiklik akışını işleme.

Değişiklik akışı nasıl çalışır?

Değişiklik akışı kayıtları, standart blob fiyatlandırma maliyetiyle depolama hesabınızdaki özel bir kapsayıcıda blob olarak depolanır. Gereksinimlerinize göre bu dosyaların saklama süresini denetleyebilirsiniz (Geçerli sürümün koşullarına bakın). Değişiklik olayları, değişiklik akışına Apache Avro biçim belirtiminde kayıt olarak eklenir: satır içi şemaya sahip zengin veri yapıları sağlayan sıkıştırılmış, hızlı, ikili biçim. Bu biçim Hadoop ekosisteminde, Stream Analytics'te ve Azure Data Factory'de yaygın olarak kullanılır.

Bu günlükleri zaman uyumsuz, artımlı veya tam olarak işleyebilirsiniz. Herhangi bir sayıda istemci uygulaması değişiklik akışını paralel olarak ve kendi hızlarında bağımsız olarak okuyabilir. Apache Drill veya Apache Spark gibi analiz uygulamaları günlükleri doğrudan Avro dosyaları olarak kullanabilir ve bu da günlükleri düşük maliyetli, yüksek bant genişliğine sahip ve özel bir uygulama yazmak zorunda kalmadan işlemenize olanak tanır.

Aşağıdaki diyagramda kayıtların değişiklik akışına nasıl eklendiği gösterilmektedir:

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

Değişiklik akışı desteği, değişen nesnelere göre verileri işleyen senaryolar için uygundur. Örneğin, uygulamalar şunları yapabilir:

  • İkincil dizini güncelleştirme, önbellek ile eşitleme, arama motoru veya diğer içerik yönetim senaryoları.
  • Akış şeklinde veya toplu iş modunda nesnelerinize yapılan değişikliklere göre iş analizi içgörülerini ve ölçümlerini ayıklama.
  • Kurumsal veri yönetimi için güvenlik, uyumluluk veya iş zekası amacıyla nesnelerinizde zaman içinde gerçekleşen değişiklikleri depolama, denetleme ve analiz etme.
  • Olağanüstü durum yönetimi veya uyumluluk için hesabınızda nesne durumunu yedeklemek, yansıtmak veya çoğaltmak için çözümler oluşturun.
  • Oluşturulan veya değiştirilen nesneye göre değişiklik olaylarına tepki veren veya yürütmeleri zamanlayan bağlı uygulama işlem hatları oluşturun.

Değişiklik akışı, Blok blobları için Nesne Çoğaltma ve Belirli bir noktaya geri yükleme için önkoşul bir özelliktir.

Dekont

Değişiklik akışı, bir blobda gerçekleşen değişikliklerin dayanıklı, sıralı bir günlük modelini sağlar. Değişiklikler, değişiklikten birkaç dakika sonra değişiklik akışı günlüğünüzde yazılır ve kullanılabilir hale getirilir. Uygulamanızın olaylara bundan çok daha hızlı tepki vermesi gerekiyorsa, bunun yerine Blob Depolama olaylarını kullanmayı göz önünde bulundurun. Blob Depolama Olayları, Azure İşlevleri veya uygulamalarınızın blobda gerçekleşen değişikliklere hızla tepki vermelerini sağlayan gerçek zamanlı tek seferlik olaylar sağlar.

Değişiklik akışını etkinleştirme ve devre dışı bırakma

Değişiklikleri yakalamaya ve kaydetmeye başlamak için depolama hesabınızda değişiklik akışını etkinleştirmeniz gerekir. Değişiklikleri yakalamayı durdurmak için değişiklik akışını devre dışı bırakın. Portal veya PowerShell'de Azure Resource Manager şablonlarını kullanarak değişiklikleri etkinleştirebilir ve devre dışı bırakabilirsiniz.

Değişiklik akışını etkinleştirirken aklınızda bulundurmanız gereken birkaç şey aşağıdadır.

  • Her depolama hesabında blob hizmeti için yalnızca bir değişiklik akışı vardır. Değişiklik akışı kayıtları $blobchangefeed kapsayıcısında depolanır.

  • Oluşturma, Güncelleştirme ve Silme değişiklikleri yalnızca blob hizmeti düzeyinde yakalanır.

  • Değişiklik akışı, hesapta gerçekleşen tüm kullanılabilir olaylar için tüm değişiklikleri yakalar. İstemci uygulamaları olay türlerini gerektiği gibi filtreleyebilir. (Geçerli sürümün koşullarına bakın).

  • Değişiklik akışını yalnızca standart genel amaçlı v2, premium blok blobu ve Blob depolama hesapları etkinleştirebilir. Hiyerarşik ad alanı etkinleştirilmiş hesaplar şu anda desteklenmiyor. Genel amaçlı v1 depolama hesapları desteklenmez ancak kapalı kalma süresi olmadan genel amaçlı v2'ye yükseltilebilir. Daha fazla bilgi için bkz . GPv2 depolama hesabına yükseltme.

Azure portalını kullanarak depolama hesabınızda değişiklik akışını etkinleştirin:

  1. Azure portalında depolama hesabınızı seçin.

  2. Veri Yönetimi altında Veri koruma seçeneğine gidin.

  3. İzleme'nin altında Blob değişiklik akışını etkinleştir'i seçin.

  4. Veri koruma ayarlarınızı onaylamak için Kaydet düğmesini seçin.

    Screenshot showing how to enable change feed in Azure portal

Değişiklik akışını kullanma

Değişiklik akışı birkaç meta veri ve günlük dosyası oluşturur. Bu dosyalar depolama hesabının $blobchangefeed kapsayıcısında bulunur. $blobchangefeed kapsayıcısı Azure portalı veya Azure Depolama Gezgini aracılığıyla görüntülenebilir.

İstemci uygulamalarınız, değişiklik akışı işlemci SDK'sı ile birlikte sağlanan blob değişiklik akışı işlemci kitaplığını kullanarak değişiklik akışını kullanabilir. Değişiklik akışındaki kayıtları işlemeyi öğrenmek için bkz. Azure Blob Depolama değişiklik akışı günlüklerini işleme.

Akış kesimlerini değiştirme

Değişiklik akışı, saatliksegmentler halinde düzenlenmiş ancak her birkaç dakikada bir eklenen ve güncelleştirilen değişikliklerin günlüğüdür. Bu segmentler yalnızca o saat içinde gerçekleşen blob değişikliği olayları olduğunda oluşturulur. Bu, istemci uygulamanızın günlüğün tamamında arama yapmak zorunda kalmadan belirli aralıklarda gerçekleşen değişiklikleri kullanmasına olanak tanır. Daha fazla bilgi edinmek için Bkz . Belirtimler.

Değişiklik akışının kullanılabilir saatlik bir kesimi, söz konusu segment için değişiklik akışı dosyalarının yollarını belirten bir bildirim dosyasında açıklanmıştır. Sanal dizinin listesi $blobchangefeed/idx/segments/ , bu segmentleri zamana göre sıralanmış olarak gösterir. Segmentin yolu, segmentin temsil ettiği saatlik zaman aralığının başlangıcını açıklar. İlginizi çekebilecek günlük segmentlerini filtrelemek için bu listeyi kullanabilirsiniz.

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

Dekont

$blobchangefeed/idx/segments/1601/01/01/0000/meta.json, değişiklik akışını etkinleştirdiğinizde otomatik olarak oluşturulur. Bu dosyayı güvenle yoksayabilirsiniz. Her zaman boş bir başlatma dosyasıdır.

Segment bildirim dosyası (meta.json), özelliğindeki ilgili segment için değişiklik akışı dosyalarının chunkFilePaths yolunu gösterir. Aşağıda bir segment bildirim dosyası örneği verilmiştır.

{
    "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"
        }
    }
}

Dekont

Kapsayıcı $blobchangefeed yalnızca hesabınızda değişiklik akışı özelliğini etkinleştirdikten sonra görünür. Kapsayıcıdaki blobları listelemeden önce değişiklik akışını etkinleştirdikten sonra birkaç dakika beklemeniz gerekir.

Olay kayıtlarını değiştirme

Değişiklik akışı dosyaları bir dizi değişiklik olayı kaydı içerir. Her değişiklik olay kaydı, tek bir blobda yapılan bir değişikliğe karşılık gelir. Kayıtlar, Apache Avro biçim belirtimi kullanılarak serileştirilir ve dosyaya yazılır. Kayıtlar Avro dosya biçimi belirtimi kullanılarak okunabilir. Dosyaları bu biçimde işlemek için kullanılabilecek birkaç kitaplık vardır.

Değişiklik akışı dosyaları, ekleme blobları olarak sanal dizinde $blobchangefeed/log/ depolanır. Her yolun altındaki ilk değişiklik akışı dosyası dosya adında (örneğin00000.avro) yer 00000 alır. Bu yola eklenen sonraki her günlük dosyasının adı 1 artar (Örneğin: 00001.avro).

Olay kaydı şemaları

Her özelliğin açıklaması için bkz. Blob Depolama için Azure Event Grid olay şeması. BlobPropertiesUpdated ve BlobSnapshotCreated olayları şu anda değişiklik akışına özeldir ve Blob Depolama Olayları için henüz desteklenmemektedir.

Dekont

Bir segmentin değişiklik akışı dosyaları, bir segment oluşturulduktan hemen sonra görünmez. Gecikme süresi, değişiklik akışının yayımlanma gecikmesinin normal aralığı içindedir ve değişiklik birkaç dakika içinde gerçekleşir.

Şema sürüm 1

Şema sürüm 1 ile değişiklik akışı kayıtlarında aşağıdaki olay türleri yakalanabilir:

  • BlobOluştur
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated

Aşağıdaki örnekte, olay şeması sürüm 1'i kullanan JSON biçiminde bir değişiklik olay kaydı gösterilmektedir:

{
    "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"
        }
    }
}

Şema sürüm 3

Şema sürüm 3 ile değişiklik akışı kayıtlarında aşağıdaki olay türleri yakalanabilir:

  • BlobOluştur
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated

Aşağıdaki örnekte, olay şeması sürüm 3 kullanan JSON biçiminde bir değişiklik olay kaydı gösterilmektedir:

{
    "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"
        }
    }
}

Şema sürüm 4

Şema sürüm 4 ile değişiklik akışı kayıtlarında aşağıdaki olay türleri yakalanabilir:

  • BlobOluştur
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • BlobAsyncOperationInitiated
  • RestorePointMarkerCreated

Aşağıdaki örnekte, olay şeması sürüm 4 kullanan JSON biçiminde bir değişiklik olay kaydı gösterilmektedir:

{
    "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"
        }
    }
}

Şema sürüm 5

Şema sürüm 5 ile değişiklik akışı kayıtlarında aşağıdaki olay türleri yakalanabilir:

  • BlobOluştur
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • BlobAsyncOperationInitiated

Aşağıdaki örnekte, olay şeması sürüm 5'i kullanan JSON biçiminde bir değişiklik olay kaydı gösterilmektedir:

{
    "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"
        }
    }
}

Şema sürüm 6

Şema sürüm 6 ile değişiklik akışı kayıtlarında aşağıdaki olay türleri yakalanabilir:

  • BlobOluştur
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • BlobAsyncOperationInitiated

Şema sürüm 6, soğuk katman için destek ekler.

Aşağıdaki örnekte, olay şeması sürüm 6'nın kullanıldığı JSON biçiminde bir değişiklik olay kaydı gösterilmektedir:

{
    "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"
        }
    }
}

Belirtimler

  • Değişiklik olayları kayıtları yalnızca değişiklik akışına eklenir. Bu kayıtlar eklendikten sonra sabittir ve kayıt konumu kararlıdır. İstemci uygulamaları, değişiklik akışının okuma konumunda kendi denetim noktalarını koruyabilir.

  • Değişiklik olay kayıtları, değişikliğin birkaç dakikası içinde eklenir. İstemci uygulamaları, akış erişimi için eklendiği veya başka bir zamanda toplu olarak kayıtları tüketmeyi seçebilir.

  • Değişiklik olay kayıtları blob başına değişiklik sırasına göre sıralanır. Bloblar arasındaki değişikliklerin sırası Azure Blob Depolama tanımlanmamıştır. Önceki segmentteki tüm değişiklikler, sonraki segmentlerde yapılan değişikliklerden öncedir.

  • Değişiklik olay kayıtları Apache Avro 1.8.2 biçim belirtimi kullanılarak günlük dosyasında serileştirilir.

  • değerinin eventTypeControl iç sistem kayıtları olduğu ve hesabınızdaki nesnelere yapılan bir değişikliği yansıtmadığı olay kayıtlarını değiştirin. Bu kayıtları güvenle yoksayabilirsiniz.

  • Özellik paketindeki storageDiagnostics değerler yalnızca dahili kullanım içindir ve uygulamanız tarafından kullanılmak üzere tasarlanmamıştır. Uygulamalarınızın bu verilere sözleşmeye dayalı bağımlılığı olmamalıdır. Bu özellikleri güvenle yoksayabilirsiniz.

  • Segment tarafından temsil edilen süre yaklaşık 15 dakikalık sınırlarla gösterilir. Bu nedenle, tüm kayıtların belirli bir süre içinde tüketilmesini sağlamak için ardışık önceki ve sonraki saat segmentini tüketin.

  • Yayımlama aktarım hızını yönetmek için günlük akışının chunkFilePaths iç bölümlenmesi nedeniyle her kesimin sayısı farklı olabilir. Her chunkFilePath birindeki günlük dosyalarının birbirini dışlayan bloblar içermesi garanti edilir ve yineleme sırasında blob başına değişiklik sırası ihlal edilmeden paralel olarak kullanılabilir ve işlenebilir.

  • Segmentler durum olarak Publishing başlar. Kayıtların segmente eklenmesi tamamlandıktan sonra olur Finalized. Dosyadaki özelliğin tarihinden LastConsumable sonra tarihli herhangi bir kesimdeki $blobchangefeed/meta/Segments.json günlük dosyaları uygulamanız tarafından kullanılmamalıdır. Bir dosyadaki özelliğin LastConsumablebir örneği aşağıda verilmiştir $blobchangefeed/meta/Segments.json :

{
    "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"
        }
    }
}

Koşullar ve bilinen sorunlar

Bu bölümde, değişiklik akışının geçerli sürümündeki bilinen sorunlar ve koşullar açıklanmaktadır.

  • Depolama hesabınız için güvenlik duvarı kurallarını etkinleştirirseniz, $blobchangefeed kapsayıcı içindeki blobları silmeye yönelik yaşam döngüsü yönetimi istekleri engellenebilir. Güvenilen Microsoft hizmetleri için özel durumlar sağlayarak bu isteklerin engellemesini kaldırabilirsiniz. Daha fazla bilgi için Güvenlik duvarlarını ve sanal ağları yapılandırma bölümündeki Özel Durumlar bölümüne bakın.
  • LastConsumable segments.json dosyasının özelliği, değişiklik akışının sonlandırdığı ilk kesimi listelemez. Bu sorun yalnızca ilk kesim sonlandırıldıktan sonra oluşur. İlk saatten sonraki sonraki tüm segmentler özelliğinde LastConsumable doğru şekilde yakalanır.
  • ListContainers API'sini çağırdığınızda şu anda $blobchangefeed kapsayıcısını göremiyorsunuz. doğrudan $blobchangefeed kapsayıcıda ListBlobs API'sini çağırarak içeriği görüntüleyebilirsiniz.
  • Değişiklik akışının etkinleştirildiği coğrafi olarak yedekli depolama hesaplarının Depolama hesap yük devretmesi, değişiklik akışı günlükleri ile blob verileri ve/veya meta verileri arasında tutarsızlıklara neden olabilir. Bu tür tutarsızlıklar hakkında daha fazla bilgi için bkz . Değişiklik akışı ve blob veri tutarsızlıkları.
  • $blobchangefeed ve $blobchangefeedsys kapsayıcılarında 404 (Bulunamadı) ve 412 (Önkoşul Başarısız) hataları bildirilmiş olabilir. Bu hataları güvenle yoksayabilirsiniz.
  • Blob sürümleri veya anlık görüntüler silindiğinde BlobDeleted olayları oluşturulmaz. BlobDeleted olayı yalnızca bir temel (kök) blob silindiğinde eklenir.
  • Olay kayıtları yalnızca Blob Hizmeti uç noktasına (blob.core.windows.net) yapılan isteklerden kaynaklanan bloblarda yapılan değişiklikler için eklenir. Data Lake Depolama uç noktasına (dfs.core.windows.net) yapılan isteklerden kaynaklanan değişiklikler günlüğe kaydedilmez ve değişiklik akışı kayıtlarında görünmez.

Sık sorulan sorular (SSS)

Bkz . Değişiklik akışı desteği hakkında SSS.

Özellik desteği

Bu özellik için destek, Data Lake Storage 2. Nesil, Ağ Dosya Sistemi (NFS) 3.0 protokolü veya SSH Dosya Aktarım Protokolü (SFTP) etkinleştirilerek etkilenebilir. Bu özelliklerden herhangi birini etkinleştirdiyseniz bu özelliğin desteğini değerlendirmek için bkz. Azure Depolama hesaplarında Blob Depolama özellik desteği.