Skip to main content
يمكن لـ ClickPipes for Postgres اكتشاف تغييرات المخطط في جداول المصدر، وفي بعض الحالات، تمرير هذه التغييرات تلقائيًا إلى جداول الوجهة. يوضّح ما يلي كيفية التعامل مع كل عملية DDL: لاحظ أن إضافة العمود تُمرَّر عند نهاية مزامنة الدفعة، وقد يحدث ذلك بعد بلوغ sync interval أو pull batch size. لمزيد من المعلومات حول التحكم في المزامنة، راجع هنا

القيم الافتراضية للأعمدة المضافة

بالنسبة إلى العمود المُضاف، يمرّر ClickPipes قيمة افتراضية فقط عندما يتمكن من تحويلها بأمان إلى ClickHouse. وعند تمرير قيمة افتراضية، يستخدمها ClickHouse عند قراءة أجزاء البيانات التي تسبق إضافة العمود الجديد. ونتيجةً لذلك، تعرض الصفوف الموجودة مسبقًا في ClickHouse القيمة نفسها التي يستخدمها PostgreSQL للصفوف التي تسبق ADD COLUMN؛ ولا يلزم إجراء تحديث كامل للجدول. بالنسبة إلى PostgreSQL، يقرأ ClickPipes القيمة التي خزّنها PostgreSQL للصفوف الموجودة مسبقًا، بدلًا من تعبير القيمة الافتراضية الحالي للعمود. ويكتسب ذلك أهمية عندما تكون القيمة الافتراضية تعبيرًا: إذ يقيّم PostgreSQL تعبيرًا غير متقلب مثل now() عند إضافة العمود، ويمرّر ClickPipes القيمة الناتجة، لا التعبير نفسه. ولا تؤثر عمليات SET DEFAULT أو DROP DEFAULT اللاحقة في القيمة الافتراضية المستخدمة للصفوف الموجودة، ولا تُمرَّر إلى ClickHouse. تُمرَّر القيم التالية:
  • القيم المنطقية والقيم الرقمية المنتهية.
  • القيم النصية، بما في ذلك varchar وchar والتعدادات وUUIDs وJSON/JSONB وhstore وعناوين الشبكة والتواريخ.
  • الطوابع الزمنية. وتُطبَّع الطوابع الزمنية ذات المناطق الزمنية إلى UTC.
تُهمَل القيم الافتراضية عندما لا يمكن نقل تمثيلها بأمان إلى ClickHouse، بما في ذلك NULL والقيم الرقمية غير المنتهية وbytea والمصفوفات والفواصل الزمنية وقيم الوقت من اليوم والأنواع الهندسية. يظل العمود مُضافًا، لكن ClickHouse يستخدم القيمة الافتراضية المعتادة لنوعه لأجزاء البيانات التي تسبق العمود. ويلزم إجراء تحديث كامل للجدول إذا كان يجب أن تحتوي تلك الصفوف الموجودة على القيمة الافتراضية من المصدر.
آخر تعديل في ١٤ أغسطس ٢٠٢٦