الانتقال إلى المحتوى الرئيسي
يُنصح مستخدمو ClickHouse Cloud باستخدام ClickPipes لنسخ البيانات من PostgreSQL إلى ClickHouse. يوفّر هذا دعمًا أصيلاً وعالي الأداء لتقنية Change Data Capture (CDC) في PostgreSQL.
ينشئ جدولًا في ClickHouse من خلال تفريغٍ أولي لبيانات جدول PostgreSQL، ثم يبدأ عملية النسخ المتماثل. أي إنه ينفّذ مهمةً في الخلفية لتطبيق التغييرات الجديدة فور حدوثها على جدول PostgreSQL في قاعدة بيانات PostgreSQL البعيدة.
محرك الجدول هذا تجريبي. لاستخدامه، اضبط allow_experimental_materialized_postgresql_table على 1 في ملفات الإعدادات لديك أو باستخدام الأمر SET:
SET allow_experimental_materialized_postgresql_table=1
إذا كانت هناك حاجة إلى أكثر من جدول واحد، فمن المستحسن بشدة استخدام محرك قاعدة البيانات MaterializedPostgreSQL بدلًا من محرك الجدول، واستخدام الإعداد materialized_postgresql_tables_list الذي يحدّد الجداول المطلوب نسخها متماثلًا (وسيصبح من الممكن أيضًا إضافة schema قاعدة البيانات). وسيكون ذلك أفضل بكثير من حيث استهلاك CPU، وتقليل عدد الاتصالات، وتقليل عدد replication slots داخل قاعدة بيانات PostgreSQL البعيدة.

إنشاء جدول

CREATE TABLE postgresql_db.postgresql_replica (key UInt64, value UInt64)
ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgresql_table', 'postgres_user', 'postgres_password')
PRIMARY KEY key;
معلمات المحرّك
  • host:port — عنوان خادم PostgreSQL.
  • database — اسم قاعدة البيانات البعيدة.
  • table — اسم الجدول البعيد.
  • user — اسم مستخدم PostgreSQL.
  • password — كلمة مرور المستخدم.

المتطلبات

  1. يجب أن تكون قيمة الإعداد wal_level هي logical، كما يجب أن تكون قيمة المعامل max_replication_slots 2 على الأقل في ملف إعدادات PostgreSQL.
  2. يجب أن يحتوي الجدول ذو محرك MaterializedPostgreSQL على مفتاح أساسي يطابق فهرس هوية النسخة المتماثلة (replica identity) لجدول PostgreSQL (افتراضيًا: المفتاح الأساسي) (راجع التفاصيل حول فهرس هوية النسخة المتماثلة).
  3. يُسمح فقط بقاعدة بيانات Atomic.
  4. لا يعمل محرك الجدول MaterializedPostgreSQL إلا مع إصدارات PostgreSQL >= 11، لأن التنفيذ يتطلب دالة PostgreSQL ‏pg_replication_slot_advance.

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

  • _version — عدّاد المعاملات. النوع: UInt64.
  • _sign — علامة الحذف. النوع: Int8. القيم الممكنة:
    • 1 — الصف غير محذوف،
    • -1 — الصف محذوف.
لا حاجة إلى إضافة هذه الأعمدة عند إنشاء جدول. وهي متاحة دائمًا في استعلام SELECT. تعادل قيمة العمود _version موضع LSN في WAL، لذلك يمكن استخدامه للتحقق من مدى حداثة النسخ المتماثل.
CREATE TABLE postgresql_db.postgresql_replica (key UInt64, value UInt64)
ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgresql_replica', 'postgres_user', 'postgres_password')
PRIMARY KEY key;

SELECT key, value, _version FROM postgresql_db.postgresql_replica;
لا يدعم النسخ المتماثل لقيم TOAST. وستُستخدم القيمة الافتراضية لنوع البيانات.
آخر تعديل في ٢٥ يونيو ٢٠٢٦