تحديث تزايدي لطرق العرض المجسدة
توضح هذه المقالة دلالات ومتطلبات التحديثات التزايدية على طرق العرض المجسدة، وتحدد عمليات SQL والكلمات الأساسية والعبارات التي تدعم التحديث التزايدي. ويتضمن مناقشة الاختلافات بين التحديثات التزايدية والكاملة، ويتضمن توصيات للاختيار بين طرق العرض المجسدة وجداول الدفق.
عند تشغيل التحديثات على طرق العرض المجسدة باستخدام مسارات بلا خادم، يمكن تحديث العديد من الاستعلامات بشكل متزايد. توفر التحديثات التزايدية تكاليف الحوسبة عن طريق الكشف عن التغييرات في مصادر البيانات المستخدمة لتحديد طريقة العرض المجسدة واحوسبة النتيجة بشكل متزايد.
البنية الأساسية لبرنامج ربط العمليات التجارية بلا خادم مطلوبة للتحديث التزايدي
يتطلب التحديث التزايدي لطرق العرض المجسدة مسارات بلا خادم.
يتم تشغيل عمليات التحديث لطرق العرض المجسدة المحددة في Databricks SQL دائما باستخدام البنية الأساسية لبرنامج ربط العمليات التجارية بلا خادم.
بالنسبة إلى طرق العرض المجسدة المعرفة باستخدام خطوط أنابيب Delta Live Tables، يجب تكوين البنية الأساسية لبرنامج ربط العمليات التجارية لاستخدام بلا خادم. راجع تكوين مسار Delta Live Tables بلا خادم.
ما دلالات التحديث لطرق العرض المجسدة؟
تضمن طرق العرض المجسدة نتائج مكافئة لاستعلامات الدفعات. على سبيل المثال، ضع في اعتبارك الاستعلام التجميعي التالي:
SELECT account_id,
COUNT(txn_id) txn_count,
SUM(txn_amount) account_revenue
FROM transactions_table
GROUP BY account_id
عند تشغيل هذا الاستعلام باستخدام أي منتج Azure Databricks، يتم حساب النتيجة باستخدام دلالات الدفعة لتجميع جميع السجلات في المصدر transactions_table
، ما يعني أن جميع بيانات المصدر يتم مسحها ضوئيا وتجميعها في عملية واحدة.
إشعار
تؤدي بعض منتجات Azure Databricks إلى التخزين المؤقت تلقائيا داخل جلسات العمل أو عبرها إذا لم تتغير مصادر البيانات بعد تشغيل الاستعلام الأخير. تختلف سلوكيات التخزين المؤقت التلقائي عن طرق العرض المجسدة.
يحول المثال التالي استعلام الدفعة هذا إلى طريقة عرض مجسدة:
CREATE OR REFRESH MATERIALIZED VIEW transation_summary AS
SELECT account_id,
COUNT(txn_id) txn_count,
SUM(txn_amount) account_revenue
FROM transactions_table
GROUP BY account_id
عند تحديث طريقة عرض مجسدة، تكون النتيجة المحسوبة متطابقة مع دلالات الاستعلام الدفعي. هذا الاستعلام هو مثال على طريقة عرض مجسدة يمكن تحديثها بشكل متزايد، ما يعني أن عملية التحديث تبذل أفضل محاولة لمعالجة البيانات الجديدة أو المتغيرة فقط في المصدر transactions_table
لحساب النتائج.
اعتبارات مصدر البيانات لطرق العرض المجسدة
بينما يمكنك تحديد طريقة عرض مجسدة مقابل أي مصدر بيانات، فإن مصادر البيانات ليست جميعها مناسبة تماما لطرق العرض المجسدة. ضع في اعتبارك المحاذير والتوصيات التالية:
هام
تبذل طرق العرض المجسدة أفضل محاولة لتحديث النتائج بشكل متزايد للعمليات المدعومة. تتطلب بعض التغييرات في مصادر البيانات تحديثا كاملا.
يجب أن تكون جميع مصادر البيانات لطرق العرض المجسدة قوية لدلالات التحديث الكامل، حتى إذا كان الاستعلام الذي يحدد طريقة العرض المجسدة يدعم التحديث التزايدي.
- بالنسبة للاستعلامات التي يكون فيها التحديث الكامل باهظ التكلفة، استخدم جداول الدفق لضمان المعالجة مرة واحدة بالضبط. تتضمن الأمثلة جداول كبيرة جدا.
- لا تقم بتعريف طريقة عرض مجسدة مقابل مصدر بيانات إذا كان يجب معالجة السجلات مرة واحدة فقط. بدلا من ذلك، استخدم جداول الدفق. تتضمن الأمثلة ما يلي:
- مصادر البيانات التي لا تحتفظ بمحفوظات البيانات، مثل Kafka.
- استيعاب العمليات، مثل الاستعلامات التي تستخدم "المحمل التلقائي" لاستيعاب البيانات من تخزين الكائنات السحابية.
- أي مصدر بيانات تخطط فيه لحذف البيانات أو أرشفتها بعد المعالجة ولكن تحتاج إلى الاحتفاظ بالمعلومات في جداول انتقال البيانات من الخادم. على سبيل المثال، جدول مقسم للتاريخ حيث تخطط لحذف سجلات أقدم من حد معين.
- لا تدعم كافة مصادر البيانات التحديثات المتزايدة. تدعم مصادر البيانات التالية التحديث التزايدي:
- جداول Delta، بما في ذلك الجداول المدارة في كتالوج Unity والجداول الخارجية المدعومة من Delta Lake.
- طرق العرض المجسدة.
- جداول الدفق، بما في ذلك أهداف
APPLY CHANGES INTO
العمليات.
- تتطلب بعض عمليات التحديث التزايدية تمكين تعقب الصفوف على مصادر البيانات التي تم الاستعلام عنها. تتبع الصفوف هو ميزة Delta Lake مدعومة فقط من قبل جداول Delta، والتي تتضمن طرق العرض المجسدة وجداول الدفق والجداول المدارة في كتالوج Unity. راجع استخدام تتبع الصفوف لجداول دلتا.
تحسين طرق العرض المجسدة
للحصول على أفضل أداء، توصي Databricks بتمكين الميزات التالية على جميع جداول مصدر العرض المجسدة:
أنواع التحديث لطرق العرض المجسدة
التحديثات إلى طرق العرض المجسدة إما كاملة أو تزايدية. بالنسبة لجميع العمليات، تكون نتائج التحديث التزايدي والتحديث الكامل هي نفسها. يقوم Azure Databricks بتشغيل تحليل التكلفة لتحديد ما إذا كانت التغييرات في مصادر البيانات تتطلب تحديثا كاملا.
لتحديد نوع التحديث المستخدم، راجع تحديد نوع التحديث للتحديث.
التحديث الكامل
يقوم التحديث الكامل بالكتابة فوق النتائج في طريقة العرض المجسدة عن طريق إعادة معالجة جميع البيانات المتوفرة في المصدر. قد يتم تحديث جميع طرق العرض المجسدة بالكامل على أي تحديث معين، اعتمادا على كيفية تغيير مصادر البيانات.
يمكنك اختياريا فرض تحديث كامل. بالنسبة إلى طرق العرض المجسدة المحددة باستخدام Databricks SQL، استخدم بناء الجملة التالي:
REFRESH MATERIALIZED VIEW mv_name FULL
بالنسبة إلى طرق العرض المجسدة المحددة في مسار Delta Live Tables، يمكنك اختيار تشغيل تحديث كامل على مجموعات البيانات المحددة أو على جميع مجموعات البيانات في البنية الأساسية لبرنامج ربط العمليات التجارية. راجع كيفية تحديث جداول Delta Live للجداول وطرق العرض.
هام
عندما يتم تشغيل تحديث كامل مقابل مصدر بيانات حيث تمت إزالة السجلات بسبب حد استبقاء البيانات أو الحذف اليدوي، لا تنعكس السجلات التي تمت إزالتها في النتائج المحسوبة. قد لا تتمكن من استرداد البيانات القديمة إذا لم تعد البيانات متوفرة في المصدر.
إشعار
يمكنك اختياريا تعطيل التحديثات الكاملة على جدول عن طريق تعيين خاصية pipelines.reset.allowed
الجدول إلى false
.
تحديث تزايدي
يقوم التحديث التزايدي بمعالجة التغييرات في البيانات الأساسية بعد التحديث الأخير ثم إلحاق تلك البيانات بالجدول. اعتمادا على الجداول الأساسية والعمليات المضمنة، يمكن تحديث أنواع معينة فقط من طرق العرض المجسدة بشكل متزايد.
يمكن فقط لطرق العرض المجسدة التي تم تحديثها باستخدام البنية الأساسية لبرنامج ربط العمليات التجارية بلا خادم استخدام التحديث المتزايد. يتم دائما تحديث طرق العرض المجسدة التي لا تستخدم مسارات بلا خادم بشكل كامل.
عند إنشاء طرق العرض المجسدة باستخدام مستودع SQL أو مسار Delta Live Tables بلا خادم، يتم تحديثها تلقائيا بشكل متزايد إذا كانت استعلاماتها مدعومة. إذا تضمن استعلام تعبيرات غير مدعومة لتحديث تزايدي، يتم إجراء تحديث كامل، مما قد يؤدي إلى تكاليف إضافية.
دعم التحديث التزايدي للعرض المجسد
يسرد الجدول التالي دعم التحديث التزايدي بواسطة الكلمة الأساسية أو عبارة SQL.
هام
تتطلب بعض الكلمات الأساسية والعبارات تمكين تعقب الصفوف على مصادر البيانات التي تم الاستعلام عنها. راجع استخدام تتبع الصفوف لجداول دلتا.
يتم وضع علامة نجمة (*) على هذه الكلمات الأساسية والعبارات في الجدول التالي.
الكلمة الأساسية أو عبارة SQL | دعم التحديث التزايدي |
---|---|
SELECT التعابير* |
نعم، يتم دعم التعبيرات بما في ذلك الدالات المضمنة المحددة والدالات غير القابلة للتغيير المعرفة من قبل المستخدم (UDFs). |
GROUP BY |
نعم |
WITH |
نعم، يتم اعتماد تعبيرات الجدول الشائعة. |
UNION ALL * |
نعم |
FROM |
تتضمن الجداول الأساسية المدعومة جداول دلتا وطرق العرض المجسدة وجداول الدفق. |
WHERE , HAVING * |
عبارات التصفية مثل WHERE و HAVING مدعومة. |
INNER JOIN * |
نعم |
LEFT OUTER JOIN * |
نعم |
FULL OUTER JOIN * |
نعم |
RIGHT OUTER JOIN * |
نعم |
OVER |
نعم. PARTITION_BY يجب تحديد الأعمدة للتزايد على وظائف النافذة. |
QUALIFY |
نعم |
EXPECTATIONS |
لا. يتم دائما تحديث طرق العرض المجسدة التي تستخدم التوقعات بشكل كامل. |
إشعار
الدالات غير المحددة، على سبيل المثال، CURRENT_TIMESTAMP
، غير مدعومة.
تحديد نوع تحديث التحديث
لتحسين أداء تحديثات العرض المجسدة، يستخدم Azure Databricks نموذج تكلفة لتحديد التقنية المستخدمة للتحديث. يصف الجدول التالي هذه التقنيات:
الأسلوب | هل هو تحديث تزايدي؟ | الوصف |
---|---|---|
FULL_RECOMPUTE |
لا | تمت إعادة حساب طريقة العرض المجسدة بالكامل |
NO_OP |
غير قابل للتطبيق | لم يتم تحديث طريقة العرض المجسدة لأنه لم يتم الكشف عن أي تغييرات في الجدول الأساسي. |
ROW_BASED أو PARTITION_OVERWRITE |
نعم | تم تحديث طريقة العرض المجسدة بشكل متزايد باستخدام التقنية المحددة. |
لتحديد التقنية المستخدمة، استعلم عن سجل أحداث Delta Live Tables حيث event_type
يكون planning_information
:
SELECT
timestamp,
message
FROM
event_log(TABLE(<fully-qualified-table-name>))
WHERE
event_type = 'planning_information'
ORDER BY
timestamp desc;
استبدل <fully-qualified-table-name>
بالاسم المؤهل بالكامل للعرض المجسد، بما في ذلك الكتالوج والمخطط.