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

الغرض من موجز التغييرات هو تزويد سجلات معاملات لجميع التغييرات التي تحدث للكائنات الثنائية كبيرة الحجم وبيانات تعريف الكائنات الثنائية كبيرة الحجم في حساب التخزين خاصتك. يوفر موجز التغييرات سجلاً مرتباً و مضموناً و دائماً و غير قابل للتغيير و ومصمم للقراءة فقط لهذه التغييرات. يمكن لتطبيقات العميل قراءة هذه السجلات في أي وقت، إما في الدفق أو في وضع الدفعات. يمكِّنك موجز التغييرات من إنشاء حلول فعالة وقابلة للتطوير تعالج أحداث التغيير التي تحدث في حساب 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 مرئيةً فقط في مدخل Azure ولكنها غير مرئية في Azure Storage Explorer. لا يمكنك حالياً رؤية حاوية $blobchangefeed عند استدعاء واجهة برمجة تطبيقات ListContainers ولكنك قادر على استدعاء واجهة برمجة تطبيقات ListBlobs مباشرةً على الحاوية لرؤية الكائنات الثنائية كبيرة الحجم

يمكن أن تستهلك تطبيقات العملاء موجز التغييرات باستخدام مكتبة معالج موجز تغيير الكائن الثنائي كبير الحجم المتوفرة مع عدة 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"
        }
    }
}

المواصفات

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

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

  • يتم ترتيب سجلات أحداث التغيير حسب ترتيب التعديل لكل كائن ثنائي كبير الحجم. ترتيب التغييرات عبر الكائنات الثنائية كبيرة الحجم غير محدد في 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"
        }
    }
}

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

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

  • قد تظهر سجلات أحداث التغييرات لأي تغيير فردي أكثر من مرة في موجز التغييرات خاصتك.
  • خاصية url الخاصة بملف السجل فارغة دائماً حالياً.
  • لا تسرد خاصية LastConsumable الخاصة بملف segments.json الشريحة الأول الذي ينتهي به موجز التغييرات. تحدث هذه المشكلة فقط بعد الانتهاء من الشريحة الأولى. يتم التقاط جميع الشرائح اللاحقة بعد الساعة الأولى بدقةٍ في الخاصية LastConsumable.
  • يتعذر عليك حالياً رؤية حاوية $blobchangefeed عند استدعاء واجهة برمجة تطبيقات ListContainers ولا تظهر الحاوية على مدخل Azure أو مستكشف التخزين. يمكنك عرض المحتويات عن طريق استدعاء واجهة برمجة تطبيقات ListBlobs على حاوية $blobchangefeed مباشرةً.
  • قد تواجه حسابات التخزين التي سبق لها بدء تجاوز فشل الحساب مشكلات في عدم ظهور ملف السجل. قد تؤثر أي عمليات تجاوز فشل حساب مستقبلية أيضاً على ملف السجل.

دعم الميزة

يوضح هذا الجدول كيفية دعم هذه الميزة في حسابك وتأثيرها على الدعم عند تمكين قدرات معينة.

نوع حساب التخزين Blob Storage (الدعم الافتراضي) Data Lake Storage Gen2 ⁧⁩1⁧ NFS 3.0 ⁧⁩1⁧ SFTP 1
معيار الأغراض العامة v2 Yes No No No
Premium كتلة blobs Yes No No No

1 يتطلب دعم Data Lake Storage Gen2 وNetwork File System (NFS) 3.0 وSSH File Transfer Protocol (SFTP) حساب تخزين مع تمكين مساحة أسماء هرمية

الأسئلة المتداولة

ما الفرق بين موجز التغييرات وتسجيل "إحصاءات التخزين"؟

تحتوي سجلات التحليلات على سجلات لجميع عمليات القراءة والكتابة والقائمة والحذف مع الطلبات الناجحة والفاشلة عبر جميع العمليات. تُعد سجلات التحليلات هي الأفضل ولا يتم ضمان أي طلب.

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

هل يجب عليَّ استخدام موجز التغييرات أو أحداث التخزين؟

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

الخطوات التالية