Skip to main content

المقدمة

توفّر هذه المكتبة امتدادات PostgreSQL لتنفيذ استعلامات chDB داخل Postgres، ولنسخ البيانات من وإلى مجموعة متنوعة من التنسيقات ومخازن الكائنات.

امتداد chdb

يُشغّل امتداد chdb استعلامات chDB. وتُنفّذ الدالة chdb_query() استعلامًا واحدًا. على سبيل المثال، هذا الاستعلام:
المخرجات:
راجع وثائق chdb لمزيد من التفاصيل.

وحدة chdb_hook

ترتبط وحدة chdb_hook بأمر COPY عبر خطاف لنسخ البيانات من أو إلى S3 أو GCS أو Azure Blob أو ملف أو عنوان URL عبر http. يحمّل هذا المثال السجلات من عدة ملفات CSV على S3 بأمر COPY واحد:
بعد ذلك، يحتوي جدول times على السجلات الواردة من كل ملف تم تحميله:
يمكن أيضًا لعبارة CREATE TABLE أن تستمد أعمدتها وتُحمّل صفوفها من عنوان URL كهذا:
راجع توثيق chdb_hook لمزيد من التفاصيل.

قياس أداء التنسيقات

يقارن benchmark أداء COPY في [chdb_hook] بأداء [aws_s3] و[pg_duckdb] و[pg_lake] لنحو مليون صف من NYC Taxi dataset بمجموعة متنوعة من التنسيقات. قياس أداء بيانات سيارات الأجرة في نيويورك من بين الامتدادات الأربعة، يقدّم chdb الأداء الأكثر ثباتًا. أما [pg_duckdb] و[pg_lake]، وكلاهما يعتمد على DuckDB، فيستغرقان ما يقارب ضعفين إلى ثلاثة أضعاف الوقت لاستيراد البيانات من CSV وJSON وParquet. ولا يقترب من أداء [chdb_hook] سوى [aws_s3]، لكنه يدعم مجموعة أضيق بكثير من تنسيقات البيانات: وتُظهر قياسات الأداء الإضافية ثباتًا نسبيًا في الأداء عند استيراد NYC Taxi dataset بمجموعة متنوعة من التنسيقات: قياس أداء الاستيراد يستخدم قياس الأداء تنسيق JSONCompact لضمان التوافق مع الامتدادات الأخرى؛ أما تنسيقات JSON الأخرى، مثل JSONCompactEachRow، فأداؤها أقرب إلى أداء التنسيقات الأخرى.

المعمارية

يعتمد امتدادا chdb و chdb_hook على عملية chdb_helper لتنفيذ استعلامات chDB. وتُبقي هذه العملية المساعدة استهلاك chDB للموارد منفصلًا عن عملية Postgres الرئيسية، وهي ميزة مفيدة في سير عمل لا يُستخدم إلا من حين لآخر مثل تحميل البيانات من data lake.
على خلاف worker الخلفي، لا يحتفظ المساعد بأي ذاكرة مشتركة خاصة بـ Postgres ولا تديره عملية postmaster. وهذا يعزل حالات الـ crash فلا تؤثر على Postgres. فالمساعد الذي يتوقف يؤدي إلى ظهور error في الـ backend الذي شغّله فقط، بينما تبقى بقية الـ sessions دون تأثر.

التبعيات

يتطلب امتداد chdb إصدار PostgreSQL 15 أو أحدث، ومكتبة chDB بالإصدار v26.7.0 أو أحدث (المتوفرة حاليًا لنظامي Linux وmacOS فقط). وأبسط طريقة لتثبيتها هي باستخدام البرنامج النصي لـ shell من lib.chdb.io:
لتضمين chDB عبر التجميع الساكن (static) في التطبيق المساعد، عيّن المتغيرات التالية قبل تشغيل أوامر make الخاصة بـالتثبيت.
سيقوم Makefile بتنزيل مكتبة libchdb الثابتة (static) وترجمتها داخل التطبيق. على Linux، يمكنك أيضاً جعل عملية التثبيت تنزّل مكتبة libchdb الديناميكية وتثبّتها، وذلك بتعيين export BUNDLE_LIBCHDB=1 قبل تشغيل أوامر make الخاصة بـ التثبيت.

البناء من المصدر

لبناء chdb، نفّذ ما يلي فقط:
إذا واجهت خطأً مثل:
تحتاج إلى استخدام GNU make، والذي قد يكون مثبتًا بالفعل على نظامك باسم gmake:
إذا واجهت خطأً مثل:
تأكد من أن pg_config مثبَّت ومتاح في مسار البحث (PATH) لديك. وإذا استخدمت نظام إدارة حزم مثل RPM لتثبيت PostgreSQL، فتأكد من تثبيت حزمة -devel أيضًا. وإذا لزم الأمر، حدِّد لعملية البناء مكان العثور عليه:
إذا واجهت خطأً مثل:
عليك إما تثبيت chDB أو إخبار المصرّف بمكان العثور عليه. فعلى سبيل المثال، إذا ثبّتته عبر البرنامج النصي لـ shell من lib.chdb.io، فأشِر إلى /usr/local:
إذا واجهت خطأً مثل:
يجب تشغيل مجموعة الاختبارات باستخدام مستخدم فائق الصلاحيات، مثل المستخدم الافتراضي فائق الصلاحيات “postgres”:
لتثبيت الامتداد في custom prefix على PostgreSQL 18 أو أحدث، مرّر الـ argument المسمى prefix إلى install (وليس إلى أي أهداف make أخرى):
ثم تأكد من تضمين الـ prefix في postgresql.conf parameters التالية:

المؤلفون

حقوق النشر (c) 2026، ClickHouse
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦