متاح ابتداءً من الإصدار 25.6محرك الجداول هذا متاح ابتداءً من الإصدار 25.6 فأحدث، وذلك في كلٍّ من OSS وCloud.
CoalescingMergeTree، يستبدل ClickHouse جميع الصفوف التي لها المفتاح الأساسي نفسه (أو بصورة أدق، مفتاح الفرز نفسه) بصف واحد يحتوي على أحدث القيم غير NULL لكل عمود.
يتيح ذلك تنفيذ عمليات upsert على مستوى الأعمدة، ما يعني أنه يمكنك تحديث أعمدة محددة فقط بدلًا من تحديث الصفوف بالكامل.
CoalescingMergeTree مخصص للاستخدام مع أنواع Nullable في الأعمدة غير المفتاحية. وإذا لم تكن الأعمدة Nullable، فسيكون السلوك مماثلًا لما هو عليه في ReplacingMergeTree.
إنشاء جدول
معاملات CoalescingMergeTree
الأعمدة
columns - اختياري. قيمة من نوع tuple تحتوي على أسماء الأعمدة التي ستُدمَج قيمها. يجب ألا تكون الأعمدة المحددة ضمن partition أو مفتاح الفرز. إذا لم يتم تحديد columns، فسيقوم ClickHouse بدمج القيم في جميع الأعمدة غير الموجودة في مفتاح الفرز.
بنود الاستعلام
CoalescingMergeTree، تكون البنود نفسها مطلوبة، كما هو الحال عند إنشاء جدول MergeTree.
مثال على الاستخدام
FINAL إلى إجبار ClickHouse على تطبيق منطق الدمج وقت الاستعلام، مما يضمن حصولك على قيمة “الأحدث” الصحيحة والموحَّدة لكل عمود. وهذه هي الطريقة الأكثر أمانًا ودقة عند الاستعلام من جدول CoalescingMergeTree.
قد يُرجع النهج الذي يستخدم
GROUP BY نتائج غير صحيحة إذا لم تكن الأجزاء الأساسية قد دُمجت بالكامل.تجميع عناصر Tuple
allow_tuple_element_aggregation، تُسطَّح أعمدة Tuple بشكل متكرر بحيث يشارك كل عنصر نهائي في الدمج بصورة مستقلة. يتيح لك ذلك تخزين عدة حقول في عمود Tuple واحد مع دمجها عنصرًا بعنصر أثناء عمليات الدمج، بحيث يحتفظ كل عمود فرعي Nullable بأحدث قيمة غير NULL بصورة مستقلة.
تنطبق القواعد نفسها على الأعمدة الفرعية المسطحة كما تنطبق على الأعمدة العادية:
- تُستبعد من الدمج الأعمدة الفرعية التي تنتمي إلى
Tupleموجود في مفتاح الفرز أو مفتاح التقسيم. - إذا تم تحديد
columns، فلن تُدمج إلا الأعمدة الفرعية التابعة لأعمدةTupleالمُدرجة.
هذا الإعداد غير قابل للتغيير ويجب تحديده عند إنشاء الجدول.