| تخزين البيانات وموقعها | تخزّن نتائجها في جدول هدف منفصل ومُعرَّف صراحةً، وتعمل كمشغّلات insert عند INSERT في جدول المصدر. | تُنشئ الإسقاطات تخطيطات بيانات محسّنة تُخزَّن فعليًا إلى جانب بيانات الجدول الرئيسي وتكون غير مرئية للمستخدم. |
| آلية التحديث | تعمل بشكل متزامن عند INSERT في جدول المصدر (بالنسبة إلى العروض المادية التزايدية). ملاحظة: يمكن أيضًا جدولتها باستخدام العروض المادية القابلة للتحديث. | تحديثات غير متزامنة في الخلفية عند INSERT في الجدول الرئيسي. |
| التفاعل مع الاستعلامات | يتطلّب العمل مع Materialized Views الاستعلام من جدول الهدف مباشرةً، ما يعني أنك تحتاج إلى معرفة بوجود العروض المادية عند كتابة الاستعلامات. | يختار ClickHouse الإسقاطات تلقائيًا عبر مُحسِّن الاستعلامات، وهي شفافة بمعنى أن المستخدم لا يحتاج إلى تعديل استعلاماته على الجدول الذي يحتوي على الإسقاط للاستفادة منه. وابتداءً من الإصدار 25.6، أصبح من الممكن أيضًا التصفية باستخدام أكثر من إسقاط واحد. |
التعامل مع UPDATE / DELETE | لا تتفاعل تلقائيًا مع عمليات UPDATE أو DELETE على جدول المصدر، لأن العروض المادية لا تكون على دراية بجدول المصدر، بل تعمل فقط كمشغّلات insert إلى جدول مصدر. وقد يؤدي ذلك إلى تقادم محتمل للبيانات بين جدولي المصدر والهدف، ويستلزم حلولًا بديلة أو إعادة تحديث كاملة بشكل دوري. (عبر عرض مادي قابل للتحديث). | تكون غير متوافقة افتراضيًا مع الصفوف DELETED (وخاصة lightweight deletes). ويمكن تفعيل هذا التوافق عبر lightweight_mutation_projection_mode (الإصدار v24.7+). |
دعم JOIN | نعم. يمكن استخدام العروض المادية القابلة للتحديث لإزالة التطبيع المعقّدة. أما العروض المادية التزايدية فلا تُفعَّل إلا عند insert في الجدول الواقع أقصى اليسار. | لا. عمليات JOIN غير مدعومة داخل تعريفات الإسقاط لتصفية البيانات المتجسدة. لكن الاستعلامات التي تربط جداول تحتوي على إسقاطات تعمل بشكل طبيعي، إذ تحسّن الإسقاطات الوصول إلى كل جدول على حدة. |
عبارة WHERE في التعريف | نعم. يمكن تضمين عبارات WHERE لتصفية البيانات قبل التجسيد. | لا. عبارات WHERE غير مدعومة داخل تعريفات الإسقاط لتصفية البيانات المتجسدة. |
| إمكانات التسلسل | نعم، يمكن أن يكون جدول الهدف لأحد العروض المادية مصدرًا لعرض مادي آخر، مما يتيح خطوط معالجة متعددة المراحل. | لا. لا يمكن تسلسل الإسقاطات. |
| محركات الجداول القابلة للتطبيق | يمكن استخدامها مع محركات جداول مصدر متنوعة، لكن جداول الهدف تكون عادةً من عائلة MergeTree. | متاحة فقط لمحركات الجداول من عائلة MergeTree. |
| التعامل مع حالات الفشل | يعني الفشل أثناء إدراج البيانات فقدانها في جدول الهدف، مما قد يؤدي إلى عدم اتساق محتمل. | تُعالَج الإخفاقات بصمت في الخلفية. ويمكن للاستعلامات المزج بسلاسة بين الأجزاء المتجسدة وغير المتجسدة. |
| العبء التشغيلي | يتطلّب إنشاء جدول هدف بشكل صريح، وغالبًا ما يتطلّب backfilling يدويًا. كما أن إدارة الاتساق مع UPDATE/DELETE تزيد من التعقيد. | تُدار الإسقاطات وتُحفَظ متزامنة تلقائيًا، ويكون عبؤها التشغيلي عمومًا أقل. |
التوافق مع استعلامات FINAL | متوافق عمومًا، لكنه يتطلّب غالبًا GROUP BY على جدول الهدف. | لا يعمل مع استعلامات FINAL. |
| التجسيد الكسول | نعم. | راقب مشكلات توافق الإسقاطات عند استخدام ميزات التجسيد. وقد تحتاج إلى ضبط query_plan_optimize_lazy_materialization = false |
| النسخ المتماثلة المتوازية | نعم. | لا. |
optimize_read_in_order | نعم. | نعم. |
| التحديثات وعمليات الحذف الخفيفة | نعم. | لا. |