إنشاء جدول
AzureQueue هي نفسها المعلمات التي يدعمها محرك الجدول AzureBlobStorage. راجع قسم المعلمات هنا.
وعلى غرار محرك الجدول AzureBlobStorage، يمكن للمستخدمين استخدام المحاكي Azurite لاستخدام Azure Storage محليًا أثناء التطوير. مزيد من التفاصيل هنا.
مثال
الإعدادات
مجموعة الإعدادات المدعومة هي إلى حدّ كبير نفسها الخاصة بمحرك الجدولS3Queue، ولكن من دون البادئة s3queue_. راجع القائمة الكاملة للإعدادات.
للحصول على قائمة بالإعدادات المهيأة للجدول، استخدم الجدول system.azure_queue_settings. هذا متاح بدءًا من 24.10.
فيما يلي الإعدادات المتوافقة فقط مع AzureQueue ولا تنطبق على S3Queue.
after_processing_move_connection_string
سلسلة الاتصال الخاصة بـ Azure Blob Storage لنقل الملفات التي تمت معالجتها بنجاح إليها، إذا كانت الوجهة حاوية Azure أخرى.
القيم الممكنة:
- String.
after_processing_move_container
اسم الحاوية التي تُنقل إليها الملفات التي تمت معالجتها بنجاح، إذا كانت الوجهة حاوية Azure أخرى.
القيم المحتملة:
- String.
SELECT من محرك الجدول AzureQueue
تكون استعلامات SELECT محظورة افتراضيًا على جداول AzureQueue. ويتبع ذلك نمط قائمة الانتظار الشائع، حيث تُقرأ البيانات مرة واحدة ثم تُزال من قائمة الانتظار. ويُحظر SELECT لمنع فقدان البيانات عن طريق الخطأ. ومع ذلك، قد يكون هذا مفيدًا أحيانًا. وللقيام بذلك، تحتاج إلى تعيين الإعدادstream_like_engine_allow_direct_select إلى True.
يحتوي محرك AzureQueue على إعداد خاص لاستعلامات SELECT: commit_on_select. عيّنه إلى False للاحتفاظ بالبيانات في قائمة الانتظار بعد قراءتها، أو إلى True لإزالتها. (ملاحظة: لا يكون لهذا الإعداد معنى في وضع exclusive ويتم تجاهله؛ إذ يتصرف وضع exclusive دائمًا كما لو أن commit_on_select هو True.)
الوصف
لا يُعدSELECT مفيدًا كثيرًا في استيراد البيانات المتدفقة (إلا لأغراض debugging)، لأن كل ملف لا يمكن استيراده إلا مرة واحدة. ومن العملي أكثر إنشاء مسارات معالجة آنية باستخدام العروض المادية. وللقيام بذلك:
- استخدم المحرّك لإنشاء جدول للاستهلاك من المسار المحدد في Azure Blob Storage واعتبره تدفق بيانات.
- أنشئ جدولًا بالبنية المطلوبة.
- أنشئ عرضًا ماديًا يحوّل البيانات من المحرّك ويضعها في جدول تم إنشاؤه مسبقًا.
MATERIALIZED VIEW بالمحرّك، يبدأ في جمع البيانات في الخلفية.
تكون وسيطات المحرّك بالصيغة AzureQueue(connection_string, container_name, blobpath, format[, compression]).
مثال:
الأعمدة الافتراضية
_path— مسار الملف._file— اسم الملف.
الاستقصاء الداخلي
فعِّل التسجيل للجدول عبر إعداد الجدولenable_logging_to_queue_log=1.
قدرات الاستقصاء الداخلي مماثلة لتلك الخاصة بـ محرك الجدول S3Queue، مع بعض الاختلافات الواضحة:
- استخدم
system.azure_queue_metadata_cacheللحالة الموجودة في الذاكرة الخاصة بقائمة الانتظار في إصدارات الخادم >= 25.1. أمّا في الإصدارات الأقدم، فاستخدمsystem.s3queue_metadata_cache(وسيحتوي أيضًا على معلومات عن جداولazure). - استخدم الجدول
system.azure_queue_metadataلفحص الحالة المخزنة في Keeper مباشرةً: عدد العُقدprocessedوprocessingوfailedلكل كائن بيانات وصفية، ومحتوياتها عند الطلب. هذا هو النظيرAzureQueueلـsystem.s3_queue_metadata. - فعِّل
system.azure_queue_logعبر إعداد ClickHouse الرئيسي، على سبيل المثال:
system.s3queue_metadata_cache، لكنها تخص الملفات التي تمت معالجتها والملفات الفاشلة.
يحتوي الجدول على البنية التالية:
القيود
يستخدمAzureQueue التنفيذ نفسه الذي يستخدمه S3Queue، وتَنطبق عليه القيود نفسها. وبوجه خاص، قد يؤدي انقطاع الطاقة عن جهاز عقدة ClickHouse إلى فقدان الصفوف المُستهلكة بصمت: إذ يُسجَّل الملف على أنه مُعالَج في Keeper (ومع after_processing = 'delete'، تُحذف blob المصدر الخاصة به) فور اكتمال عملية الإدراج، لكن الصفوف المُدرجة لا تصبح ثابتة على القرص إلا بعد تنفيذ fsync للـpart الهدف، وهذا لا يحدث افتراضيًا بشكل متزامن (fsync_after_insert = 0). بالنسبة إلى مسار الاستهلاك الموصى به عبر العرض المادي، يؤدي ضبط fsync_after_insert = 1 (وfsync_part_directory = 1) على جدول MergeTree الهدف إلى تقليص هذه الفترة بدرجة كبيرة.