تغيير دعم الموجز في Azure Blob Storage

الغرض من موجز التغييرات هو تزويد سجلات معاملات لجميع التغييرات التي تحدث للكائنات الثنائية كبيرة الحجم وبيانات تعريف الكائنات الثنائية كبيرة الحجم في حساب التخزين خاصتك. يوفر موجز التغييرات سجلاً مرتباً و مضموناً و دائماً و غير قابل للتغيير و ومصمم للقراءة فقط لهذه التغييرات. يمكن لتطبيقات العميل قراءة هذه السجلات في أي وقت، إما في الدفق أو في وضع الدفعات. ينشئ كل تغيير إدخال سجل معاملات واحدا بالضبط، لذلك لن تضطر إلى إدارة إدخالات سجل متعددة لنفس التغيير. يمكِّنك موجز التغييرات من إنشاء حلول فعالة وقابلة للتطوير تعالج أحداث التغيير التي تحدث في حساب Blob Storage خاصتك بتكلفةٍ منخفضةٍ.

لمعرفة كيفية معالجة السجلات في موجز التغيير، راجع موجز تغيير العملية في Azure Blob Storage.

كيفية عمل موجز التغيير

سجلات موجز التغييرات مُخزنةً باعتبارها كائنات ثنائيةً كبيرة الحجم في حاوية خاصة في حساب التخزين خاصتك بتكلفة تسعير الكائن ثنائي كبير الحجم القياسية. يمكنك التحكم في فترة استبقاء هذه الملفات استناداً إلى متطلباتك (راجع شروط الإصدار الحالي). يتم إلحاق أحداث التغيير بموجز التغييرات كسجلات في مواصفات تنسيق Apache Avro: تنسيق ثنائي مضغوط وسريع يوفر بنيات غنيةً للبيانات بمخططٍ مُضمنٍ. يستخدم هذا التنسيق على نطاق واسع في النظام البيئي Hadoop Stream Analytics، وAzure Data Factory.

يمكنك معالجة هذه السجلات على نحوٍ غير متزامن أو تزايدي أو كامل. يمكن لأي عدد من تطبيقات العملاء قراءة موجز التغييرات على نحوٍ مستقلٍ وبالتوازي وبالسرعة التي تناسبها. يمكن أن تستهلك تطبيقات التحليلات مثل Apache Drill أو Apache Spark السجلات مباشرةً كملفات Avro، مما يتيح لك معالجتها بتكلفةٍ منخفضةٍ وبنطاقٍ ترددي مرتفع ودون الحاجة إلى كتابة تطبيق مخصص.

يوضح الرسم التخطيطي التالي كيفية إضافة السجلات إلى موجز التغييرات:

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

يعد دعم موجز التغييرات مناسباً تماماً للسيناريوهات التي تعالج البيانات استناداً إلى الكائنات التي تم تغييرها. على سبيل المثال، يمكن للتطبيقات:

  • تحديث فهرس ثانوي، أو مزامنة مع ذاكرة التخزين المؤقت، أو مشغّل البحث، أو أي سيناريوهات أخرى لإدارة المحتوى.
  • استخراج رؤى وتحليلات الأعمال والمقاييس، استنادًا إلى التغييرات التي تحدث على الكائنات الخاصة بك، إما بطريقة تدفق أو وضع المجموعة.
  • قم بتخزين التغييرات التي تطرأ على الكائنات الخاصة بك والتدقيق فيها وتحليلها، على مدار أي فترة من الوقت، لأغراض الأمان أو التوافق أو المعلومات الاستخباراتية لإدارة بيانات المؤسسة.
  • إنشاء حلول لإجراء النسخ احتياطي أو النسخ المتطابق أو النسخ المتماثل لحالة الكائن في حسابك لإدارة الكوارث أو التوافق.
  • إنشاء مسارات التطبيقات المتصلة التي تتفاعل مع أحداث التغيير أو جدولة عمليات التنفيذ استناداً إلى الكائنات التي تم إنشاؤها أو تغييرها.

يُعد موجز التغييرات ميزةً أساسيةً لـ النسخ المتماثل للكائنات و استرداد الكائنات الثنائية كبيرة الحجم للكتل في نقطةٍ زمنيةٍ معينةٍ.

إشعار

يوفر موجز التغييرات نموذج سجلات دائم ومُرتَّب للتغييرات التي تحدث للكائن الثنائي كبير الحجم. تتم كتابة التغييرات وإتاحتها في سجل موجز التغييرات في غضون بضع دقائق من التغيير. إذا كان على تطبيقك أن يتفاعل مع الأحداث على نحوٍ أسرع بكثير من ذلك، ففكر في استخدام أحداث Blob Storage بدلاً من ذلك. أحداث Blob Storage توفر أحداثاً لمرةٍ واحدةٍ في الوقت الحقيقي تمكِّن وظائف أو تطبيقات Azure لديك من التفاعل بسرعةٍ مع التغييرات التي تحدث للكائن الثنائي كبير الحجم.

تمكين موجز التغييرات وتعطيله

يجب تمكين موجز التغييرات على حساب التخزين خاصتك لبدء التقاط التغييرات وتسجيلها. بادر بتعطيل موجز التغييرات لإيقاف التقاط التغييرات. يمكنك تمكين التغييرات وتعطيلها باستخدام قوالب Azure Resource Manager في المدخل أو PowerShell.

إليك بعض الأشياء التي يجب وضعها في الاعتبار عند تمكين موجز التغييرات.

  • لا يوجد سوى موجز تغيير واحد لخدمة الكائن الثنائي كبير الحجم في كل حساب تخزين. يتم تخزين سجلات موجز التغييرات في حاوية $blobchangefeed.

  • يتم التقاط التغييرات التي تم إنشاؤها وتحديثها وحذفها فقط على مستوى خدمة الكائن الثنائي كبير الحجم.

  • موجز التغييرات يلتقط جميع التغييرات لجميع الأحداث المتاحة التي تحدث على الحساب. يمكن لتطبيقات العميل تصفية أنواع الأحداث كما هو مطلوب. (راجع شروط الإصدار الحالي).

  • حسابات التخزين القياسية للأغراض العامة v2، وحسابات التخزين الخاصة بالكائنات الثنائية كبيرة الحجم للكتل المتميزة، وحسابات تخزين الكائنات الثنائية كبيرة الحجم هي وحدها التي يمكنها تمكين موجز التغييرات. الحسابات التي تتميز بتمكين مساحة أسماء هرمية غير مدعومة حالياً. حسابات التخزين للأغراض العامة v1 غير مدعومة ولكن يمكن ترقيتها إلى حسابات التخزين للأغراض العامة v2 دون وقت تعطل، راجع الترقية إلى حساب تخزين GPv2 لمزيدٍ من المعلومات.

بادر بتمكين موجز التغييرات على حساب التخزين خاصتك باستخدام مدخل Azure:

  1. في مدخل Azure، حدد حساب التخزين الخاص بك.

  2. انتقل إلى خيار حماية البيانات ضمن إدارة البيانات.

  3. ضمن تعقب، حدد تمكين موجز تغيير الكائنات الثنائية كبيرة الحجم.

  4. اختر الزر حفظ لتأكيد إعدادات حماية البيانات لديك.

    Screenshot showing how to enable change feed in Azure portal

استهلك موجز التغيير

ينتج موجز التغييرات العديد من بيانات التعريف وملفات السجل. توجد هذه الملفات في حاوية $blobchangefeed لحساب التخزين. يمكن عرض حاوية $blobchangefeed إما عبر مدخل Microsoft Azure أو عبر مستكشف التخزين من Azure.

يمكن أن تستهلك تطبيقات العملاء موجز التغييرات باستخدام مكتبة معالج موجز تغيير الكائن الثنائي كبير الحجم المتوفرة مع عدة SDK لمعالج موجز التغييرات. لمعرفة كيفية معالجة السجلات في موجز التغيير، راجع معالجة سجلات موجز التغيير في Azure Blob Storage.

شرائح موجز التغييرات

موجز التغييرات عبارة عن سجل التغييرات التي يتم تنظيمها في شرائحعلى أساس الساعة الواحدة ولكن يتم إلحاقها وتحديثها كل بضع دقائق. يتم إنشاء هذه الشرائح فقط عند وجود أحداث تغيير في كائن ثنائي كبير الحجم تحدث في تلك الساعة. وهذا يمكِّن تطبيق العميل خاصتك من استهلاك التغييرات التي تحدث ضمن نطاقات زمنية محددة دون الحاجة إلى البحث في السجل بأكمله. لمعرفة المزيد، راجع المواصفات.

يتم وصف الشريحة المُنظمة على أساس الساعة الواحدة المتاحة من موجز التغييرات في ملف البيان الذي يحدد المسارات إلى ملفات موجز التغييرات لتلك الشريحة. تعرض قائمة الدليل الظاهري $blobchangefeed/idx/segments/ هذه الشرائح مرتبةً حسب الوقت. يصف مسار الشريحة بداية النطاق الزمني على أساس الساعة الذي تمثله الشريحة. يمكنك استخدام هذه القائمة لتصفية شرائح السجلات التي تهمك.

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

إشعار

يتم إنشاء $blobchangefeed/idx/segments/1601/01/01/0000/meta.json تلقائياً عندما تُمكِّن موجز التغييرات. بإمكانك تجاهل هذا الملف بأمانٍ. إنه ملف تهيئة فارغ دائماً.

يعرض ملف بيان الشريحة (meta.json) مسار ملفات موجز التغييرات لهذا الشريحة في الخاصية chunkFilePaths. في ما يلي مثال على ملف بيان الشريحة.

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

إشعار

لا تظهر الحاوية $blobchangefeed إلا بعد تمكين ميزة موجز التغييرات في حسابك. سيتعين عليك الانتظار بضع دقائق بعد تمكين موجز التغييرات قبل أن تتمكن من سرد الكائنات الثنائية كبيرة الحجم في الحاوية.

تغيير سجلات الأحداث

تحتوي ملفات موجز التغييرات على سلسلة من سجلات أحداث التغيير. يتوافق كل سجل خاص بحدث تغيير مع تغيير واحد إلى كائن ثنائي كبير الحجم وفردي. يتم إدراج السجلات وكتابتها بأرقامٍ متسلسلةٍ في الملف باستخدام مواصفات تنسيق Apache Avro. يمكن قراءة السجلات باستخدام مواصفات تنسيق ملف Avro. هناك العديد من المكتبات المتاحة لمعالجة الملفات بهذا التنسيق.

يتم تخزين ملفات موجز التغييرات في $blobchangefeed/log/ الدليل الظاهري باعتبارها كائنات ثنائية كبيرة الحجم ملحقة. سيكون لدى ملف موجز التغييرات الأول أسفل كل مسار 00000 في اسم الملف (على سبيل المثال 00000.avro). سيزداد اسم كل ملف سجل لاحق تمت إضافته إلى هذا المسار بمقدار 1 (على سبيل المثال: 00001.avro).

مخططات سجل الأحداث

للحصول على وصف لكل خاصية، راجع مخطط أحداث Azure Event Grid لـ Blob Storage. أحداث BlobPropertiesUpdated وBlobSnapshotCreate حصرية حالياً لموجز التغييرات وغير مدعومة بعد لأحداث Blob Storage.

إشعار

لا تظهر ملفات موجز التغييرات لإحدى الشرائح على الفور بعد إنشاء شريحة. تقع مدة التأخير ضمن الفاصل الزمني الطبيعي لزمن انتقال النشر الخاص بموجز التغييرات والذي يقع في غضون بضع دقائق من التغيير.

إصدار المخطط 1

يمكن التقاط أنواع الأحداث التالية في سجلات موجز التغييرات بإصدار المخطط 1:

  • BlobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated

يوضح المثال التالي سجل حدث تغيير بتنسيق JSON يستخدم الإصدار 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"
        }
    }
}

إصدار المخطط 3

يمكن التقاط أنواع الأحداث التالية في سجلات موجز التغييرات بإصدار المخطط 3:

  • BlobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated

يوضح المثال التالي سجل حدث تغيير بتنسيق JSON يستخدم الإصدار 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"
        }
    }
}

إصدار المخطط 4

يمكن التقاط أنواع الأحداث التالية في سجلات موجز التغييرات بإصدار المخطط 4:

  • BlobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • BlobAsyncOperationInitiated
  • RestorePointMarkerCreated

يوضح المثال التالي سجل حدث تغيير بتنسيق JSON يستخدم الإصدار 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"
        }
    }
}

إصدار المخطط 5

يمكن التقاط أنواع الأحداث التالية في سجلات موجز التغييرات بإصدار المخطط 5:

  • BlobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • BlobAsyncOperationInitiated

يوضح المثال التالي سجل حدث تغيير بتنسيق JSON يستخدم الإصدار 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"
        }
    }
}

الإصدار 6 من المخطط

قد يتم التقاط أنواع الأحداث التالية في سجلات موجز التغيير مع الإصدار 6 من المخطط:

  • BlobCreated
  • BlobDeleted
  • BlobPropertiesUpdated
  • BlobSnapshotCreated
  • BlobTierChanged
  • BlobAsyncOperationInitiated

يضيف الإصدار 6 من المخطط دعما للطبقة الباردة.

يوضح المثال التالي سجل حدث تغيير بتنسيق JSON يستخدم الإصدار 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"
        }
    }
}

المواصفات

  • يتم إلحاق سجلات أحداث التغيير فقط بموجز التغييرات. بمجرد إلحاق هذه السجلات، تكون غير قابلة للتغيير ويكون موضع السجل ثابتاً. يمكن لتطبيقات العملاء الحفاظ على نقطة التحقق خاصتها على موضع القراءة في موجز التغييرات.

  • يتم إلحاق سجلات أحداث التغيير في غضون بضع دقائق من حدوث التغيير. يمكن لتطبيقات العملاء اختيار استهلاك السجلات عند إلحاقها بالدفق للوصول إليها أو بكميات كبيرة في أي وقتٍ آخر.

  • يتم ترتيب سجلات أحداث التغيير حسب ترتيب التعديل لكل كائن ثنائي كبير الحجم. ترتيب التغييرات عبر الكائنات الثنائية كبيرة الحجم غير محدد في Azure Blob Storage. جميع التغييرات في شريحة سابقة تحدث قبل أي تغييرات في الشرائح اللاحقة.

  • يتم إدراج سجلات أحداث التغيير بأرقامٍ متسلسلةٍ في ملف السجل باستخدام مواصفات تنسيق Apache Avro 1.8.2.

  • سجلات أحداث التغيير حيث eventType يكون له قيمة Control هي سجلات نظام داخلية ولا تعكس تغييراً في الكائنات في حسابك. يمكنك تجاهل تلك السجلات بأمان.

  • القيم الموجودة في حقيبة الخصائص storageDiagnostics مخصصة للاستخدام الداخلي فقط وليست مصممة للاستخدام بواسطة تطبيقك. يجب ألا يكون لتطبيقاتك تبعية تعاقدية على تلك البيانات. يمكنك تجاهل تلك الخصائص بأمانٍ.

  • الوقت الذي تمثله الشريحة تقريبي بحدود 15 دقيقة. لذلك لضمان استهلاك جميع السجلات خلال وقتٍ محددٍ، استهلك شريحة الساعة السابقة والتالية المتتالية.

  • يمكن أن يكون لكل شريحة عدد مختلف من chunkFilePaths بسبب التقسيم الداخلي لدفق السجل لإدارة نشر معدل النقل. يتم ضمان احتواء ملفات السجل في كل chunkFilePath منها على كائنات ثنائية كبيرة الحجم حصرية بصفةٍ متبادلةٍ، ويمكن استهلاكها ومعالجتها بالتوازي دون انتهاك ترتيب التعديلات لكل كائن ثنائي كبير الحجم أثناء التكرار.

  • تبدأ الشرائح في الحالة Publishing. بمجرد اكتمال إلحاق السجلات بالشريحة، سيكون Finalized. يجب ألا يستهلك تطبيقك ملفات السجل في أي شريحة مُؤرخة بعد تاريخ الخاصية LastConsumable في الملف $blobchangefeed/meta/Segments.json. فيما يلي مثال عن الخاصية LastConsumable في ملف $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"
        }
    }
}

الشروط والمشكلات المعروفة

يصف هذا القسم المشكلات والشروط المعروفة في الإصدار الحالي من موجز التغييرات.

  • إذا قمت بتمكين قواعد جدار الحماية لحساب التخزين الخاص بك، فقد يتم حظر طلبات إدارة دورة الحياة لحذف الكائنات الثنائية كبيرة الحجم داخل حاوية $blobchangefeed. يمكنك إلغاء حظر هذه الطلبات من خلال توفير استثناءات لخدمات Microsoft الموثوقة. لمزيد من المعلومات، راجع قسم الاستثناءات في تكوين جدران الحماية والشبكات الظاهرية.
  • لا تسرد خاصية LastConsumable الخاصة بملف segments.json الشريحة الأول الذي ينتهي به موجز التغييرات. تحدث هذه المشكلة فقط بعد الانتهاء من الشريحة الأولى. يتم التقاط جميع الشرائح اللاحقة بعد الساعة الأولى بدقةٍ في الخاصية LastConsumable.
  • لا يمكنك حاليًا رؤية حاوية $blobchangefeed عند استدعاء ListContainers API. يمكنك عرض المحتويات عن طريق استدعاء واجهة برمجة تطبيقات ListBlobs على حاوية $blobchangefeed مباشرةً.
  • قد يؤدي تجاوز فشل حساب التخزين لحسابات التخزين المتكررة جغرافيا مع تمكين موجز التغيير إلى عدم تناسق بين سجلات موجز التغيير وبيانات الكائن الثنائي كبير الحجم و/أو بيانات التعريف. لمزيد من المعلومات حول حالات عدم التناسق هذه، راجع تغيير موجز البيانات وتناقضات بيانات الكائن الثنائي كبير الحجم.
  • قد ترى 404 (غير موجود) و412 خطأ (فشل الشرط المسبق) تم الإبلاغ عنها في $blobchangefeed وحاويات $blobchangefeedsys . يمكنك تجاهل هذه الأخطاء بأمان.
  • لا يتم إنشاء الأحداث BlobDeleted عند حذف إصدارات blob أو اللقطات. تتم إضافة حدث BlobDeleted فقط عند حذف كائن ثنائي كبير الحجم أساسي (جذر).
  • تتم إضافة سجلات الأحداث فقط للتغييرات التي يتم إجراؤها على الكائنات الثنائية كبيرة الحجم التي تنتج من الطلبات إلى نقطة نهاية خدمة Blob (blob.core.windows.net). لا يتم تسجيل التغييرات الناتجة عن الطلبات إلى نقطة نهاية Data Lake Storage (dfs.core.windows.net) ولن تظهر في سجلات موجز التغيير.

الأسئلة الشائعة (FAQ)

راجع الأسئلة المتداولة حول تغيير دعم الموجز.

دعم الميزة

قد يتأثر دعم هذه الميزة بتمكين Data Lake Storage Gen2 أو بروتوكول نظام ملفات الشبكة (NFS) 3.0 أو بروتوكول نقل ملفات SSH (SFTP). إذا قمت بتمكين أي من هذه الإمكانات، فراجع دعم ميزة Blob Storage في حسابات Azure Storage لتقييم الدعم لهذه الميزة.