الانتقال إلى المحتوى الرئيسي

المقدمة

يُشغِّل [pg_clickhouse]، وهو إضافة open-source لـ PostgreSQL، استعلامات تحليلية على ClickHouse مباشرةً من PostgreSQL من دون إعادة كتابة أي SQL. وهو يدعم PostgreSQL 13 والإصدارات الأحدث وClickHouse v23 والإصدارات الأحدث. بمجرد أن يبدأ ClickPipes في مزامنة البيانات إلى ClickHouse، استخدم pg_clickhouse لاستيراد import foreign tables بسرعة وسهولة إلى مخطط في PostgreSQL. ثم شغّل استعلامات PostgreSQL الحالية لديك على تلك الجداول، مع الحفاظ على قاعدة الشيفرة الحالية لديك مع تمرير التنفيذ إلى ClickHouse.

بدء الاستخدام

أسهل طريقة لتجربة pg_clickhouse هي استخدام [صورة Docker]، المبنية على صورة PostgreSQL القياسية لـ Docker والمرفقة بامتدادي pg_clickhouse وre2:
راجع [الدليل التعليمي] لبدء استيراد جداول ClickHouse وتمرير الاستعلامات إلى المصدر.

حالة الاختبار: TPC-H

يقارن هذا الجدول أداء استعلامات TPC-H بين جداول PostgreSQL العادية وpg_clickhouse المتصل بـ ClickHouse، بعد تحميل كليهما بعامل تحجيم 1؛ وتشير ✔︎ إلى pushdown كامل، بينما تشير الشرطة إلى إلغاء الاستعلام بعد 1m. أُجريت جميع الاختبارات على جهاز MacBook Pro M4 Max مزود بذاكرة 36 GB.

التجميع من الشيفرة المصدرية

Unix بشكل عام

تتضمن حزم التطوير الخاصة بـ PostgreSQL و curl كلاً من pg_config و curl-config ضمن المسار، لذا يُفترض أن تتمكن ببساطة من تشغيل make (أو gmake)، ثم make install، ثم تنفيذ CREATE EXTENSION pg_clickhouse في قاعدة البيانات.

Debian / Ubuntu / APT

راجع PostgreSQL Apt للاطّلاع على تفاصيل جلب الحزم من مستودع PostgreSQL Apt.

RedHat / CentOS / Yum

راجع PostgreSQL Yum للاطلاع على تفاصيل الجلب من مستودع PostgreSQL Yum.

التثبيت من PGXN

بعد استيفاء التبعيات المذكورة أعلاه، استخدم [عميل PGXN] (المتوفّر عبر Homebrew وApt وحزم Yum باسم pgxnclient) لتنزيل pg_clickhouse وتجميعه وتثبيته:

التجميع والتثبيت

لتجميع مكتبة ClickHouse وتثبيتها وإضافة pg_clickhouse، شغّل:
إذا كانت على مضيفك عدة عمليات تثبيت لـ PostgreSQL، فقد تحتاج إلى تحديد الإصدار المناسب من pg_config:
إذا لم يكن curl-config موجودًا في المسار على الجهاز المضيف، يمكنك تحديد المسار بشكل صريح:
إذا واجهت خطأً مثل:
تحتاج إلى استخدام GNU make، وقد يكون مثبّتًا على نظامك باسم gmake:
إذا صادفت خطأً مثل:
تأكد من أن pg_config مثبّت وموجود في متغير PATH. إذا كنت قد استخدمت نظام إدارة حزم مثل RPM لتثبيت PostgreSQL، فتأكد أيضًا من تثبيت حزمة -devel. وإذا لزم الأمر، فأخبر عملية البناء بمكان العثور عليه:
لتثبيت الإضافة ضمن بادئة مخصّصة على PostgreSQL 18 أو الإصدارات الأحدث، مرّر الوسيطة prefix إلى install (ولكن ليس إلى أي أهداف make أخرى):
ثم تأكد من تضمين البادئة في [معلمات postgresql.conf ] التالية:

الاختبار

لتشغيل مجموعة الاختبارات، بعد تثبيت الإضافة، نفِّذ
إذا صادفت خطأً مثل:
عليك تشغيل مجموعة الاختبارات باستخدام مستخدم فائق الصلاحيات، مثل المستخدم فائق الصلاحيات الافتراضي “postgres”:

التحميل

بمجرد تثبيت pg_clickhouse، يمكنك إضافته إلى إحدى قواعد البيانات عبر الاتصال كمستخدم فائق الصلاحيات ثم تنفيذ:
إذا كنت تريد تثبيت pg_clickhouse وجميع الكائنات الداعمة له ضمن مخطط محدد، فاستخدم عبارة SCHEMA لتحديد المخطط، كما يلي:

التبعيات

تتطلب إضافة pg_clickhouse PostgreSQL 13 أو إصدارًا أحدث، وlibcurl، وlibuuid. كما يتطلب بناء الإضافة مُصرّفًا للغتَي C وC++، وlibSSL، وGNU make، وCMake.

خريطة الطريق

ينصبّ تركيزنا الأول حاليًا على استكمال تغطية pushdown لأعباء العمل التحليلية قبل إضافة ميزات DML. خريطة الطريق لدينا:
  • الوصول إلى تخطيط أمثل للاستعلامات العشرة المتبقية من TPC-H التي لم يُطبَّق عليها pushdown
  • اختبار pushdown لاستعلامات ClickBench وإصلاح مشكلاته
  • دعم pushdown الشفاف لجميع الدوال التجميعية في PostgreSQL
  • دعم pushdown الشفاف لجميع دوال PostgreSQL
  • إتاحة إعدادات ClickHouse على مستوى الخادم وعلى مستوى الجلسة عبر CREATE SERVER وGUCs
  • دعم جميع أنواع بيانات ClickHouse
  • دعم عمليات DELETE وUPDATE خفيفة الوزن
  • دعم الإدراج على دفعات عبر COPY
  • إضافة دالة لتنفيذ أي استعلام ClickHouse وإرجاع نتائجه على شكل جداول
  • إضافة دعم pushdown لاستعلامات UNION عندما تستعلم جميعها من قاعدة البيانات البعيدة

المؤلفون

  • حقوق النشر (c) 2025-2026، ClickHouse
  • أجزاء من حقوق النشر (c) 2023-2025، Ildus Kurbangaliev
  • أجزاء من حقوق النشر (c) 2019-2023، Adjust GmbH
  • أجزاء من حقوق النشر (c) 2012-2019، PostgreSQL Global Development Group
[الاستعلام 1] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/1.sql [الاستعلام 2] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/2.sql [الاستعلام 3] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/3.sql [الاستعلام 4] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/4.sql [الاستعلام 5] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/5.sql [الاستعلام 6] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/6.sql [الاستعلام 7] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/7.sql [الاستعلام 8] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/8.sql [الاستعلام 9] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/9.sql [الاستعلام 10] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/10.sql [الاستعلام 11] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/11.sql [الاستعلام 12] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/12.sql [الاستعلام 13] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/13.sql [الاستعلام 14] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/14.sql [الاستعلام 15] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/15.sql [الاستعلام 16] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/16.sql [الاستعلام 17] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/17.sql [الاستعلام 18] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/18.sql [الاستعلام 19] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/19.sql [الاستعلام 20] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/20.sql [الاستعلام 21] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/21.sql [الاستعلام 22] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/22.sql
آخر تعديل في ٣ يوليو ٢٠٢٦