Skip to main content
يمكنك اتباع هذا المسار بنفسك، أو أتمتته ببرنامج نصي، أو تسليمه إلى وكيل ذكاء اصطناعي. انتقل إلى عرض Cloud UI لنسخة Console.تتناول هذه الصفحة تهيئة ClickHouse Managed Postgres، وتحميل البيانات، ونسخها إلى ClickHouse، والاستعلام عنها، وكل ذلك من خلال سطر الأوامر باستخدام ClickHouse CLI (clickhousectl) وpsql. الأوامر غير تفاعلية؛ ويُخرج clickhousectl مخرجات JSON مع --json.

المتطلبات الأساسية

ثبّت ClickHouse CLI:
ستحتاج أيضًا إلى psql (أدوات عميل PostgreSQL؛ على MacOS، brew install libpq) وjq.تتطلب عمليات الكتابة (الإنشاء، الحذف) المصادقة بمفتاح API؛ أما تسجيل الدخول عبر OAuth فهو للقراءة فقط:
بدلًا من ذلك، عيّن متغيرَي البيئة CLICKHOUSE_CLOUD_API_KEY وCLICKHOUSE_CLOUD_API_SECRET. تحقّق باستخدام clickhousectl cloud auth status؛ ومن المفترض أن يظهر إدخال بنطاق read/write.

الجزء 1: إنشاء Postgres وتحميل البيانات

أنشئ خدمة Postgres

أنشئ الخدمة واحفظ الاستجابة، إذ لا تُعرض كلمة المرور إلا مرة واحدة:
تتضمن الاستجابة معرّف الخدمة، واسم المضيف، وسلسلة اتصال جاهزة للاستخدام:
استخرج ما تحتاج إليه بقية هذا الدليل:
إذا فُقدت كلمة المرور، فأنشئ كلمة مرور جديدة باستخدام الأمر clickhousectl cloud postgres reset-password $PG_ID --generate.

انتظر حتى يكتمل تجهيز الخدمة

تستغرق عملية التجهيز بضع دقائق. تحقّق دوريًا حتى تصبح الحالة running:

تحميل بيانات نموذجية

أنشئ جدولين ونفّذ insert لمليون حدث عبر psql:
يكتمل إدراج مليون صف خلال نحو 7 ثوانٍ على c6gd.large (أصغر فئة) بفضل تخزين NVMe. تحقّق من ذلك بإجراء استعلام؛ إذ تختلف أعداد الصفوف بين مرات التشغيل لأن البيانات تُولَّد باستخدام random():

الجزء 2: النسخ إلى ClickHouse

أنشئ خدمة ClickHouse

أنشئ خدمة في المنطقة نفسها واحفظ الاستجابة؛ إذ لا تظهر كلمة المرور إلا في استجابة الإنشاء:
انتظر حتى يصبح قيد التشغيل؛ إذ يتطلب ClickPipe وجهةً قيد التشغيل:
لاستخدام خدمة موجودة بدلًا من ذلك، عيّن CH_ID من clickhousectl cloud service list وعيّن CH_PASSWORD إلى كلمة مرور المستخدم default الخاصة بها، والتي تحتاجها خطوة pg_clickhouse.

انسخ الجداول إلى ClickHouse

أنشئ ClickPipe لـ Postgres CDC على خدمة ClickHouse، مع توجيهه إلى اسم مضيف الخاص بـ Managed Postgres. ينسخ هذا الـ pipe الصفوف الحالية، ثم يُبقي ClickHouse متزامنًا مع التغييرات اللاحقة:
ملاحظات:
  • تُنشأ الجداول المُكرَّرة في قاعدة البيانات default على خدمة ClickHouse، وتُسمّى بحسب أهداف --table-mapping
  • يُنشأ كلٌّ من الـ publication وreplication slot تلقائيًا، ويقتصر نطاق الـ publication على الجداول المعيّنة؛ مرّر --publication-name لاستخدام اسم تديره بنفسك
  • استخدم اسم مضيف المباشر لـ Postgres؛ replication غير مدعومة عبر PgBouncer

انتظر حتى تصل القناة إلى Running

تنتقل القناة عبر Provisioning وSetup و(بالنسبة إلى الجداول الأكبر) Snapshot قبل أن تصل إلى Running، ويستغرق ذلك نحو 4 دقائق لأول قناة في خدمة. وتُعد حالتا Failed وInternalError نهائيتين:

استعلِم عن البيانات المُكرَّرة في ClickHouse

نفّذ استعلامات SQL على خدمة ClickHouse مباشرةً من خلال CLI. تنشئ أول عملية استدعاء تلقائيًا نقطة نهاية لواجهة برمجة تطبيقات الاستعلام ومفتاح API مقيّدًا بنطاق الخدمة:
تُنسَخ عمليات الكتابة الجديدة في Postgres باستمرار. أدرِج صفًا وأجرِ poll حتى يصل العدد إلى 1,000,001 (عادةً خلال أقل من دقيقة):

الاستعلام عن ClickHouse من Postgres

يتيح الامتداد pg_clickhouse لـ Postgres العمل كطبقة استعلام موحّدة لكلٍّ من البيانات المعاملاتية والتحليلية. احصل على اسم مضيف ClickHouse عبر HTTPS، ثم أعدّ الامتداد باستخدام psql:
تم ترك Heredoc بدون علامات اقتباس عمدًا، لكي يستبدل مفسّر الأوامر $CH_HOST و$CH_PASSWORD قبل أن يصل SQL إلى Postgres. أصبحت الجداول المُكرَّرة الآن مرئية كجداول خارجية في مخطط organization؛ وتُنفَّذ الاستعلامات عليها في ClickHouse.عند القياس على c6gd.large باستخدام مجموعة البيانات هذه، تعمل الاستعلامات التحليلية أسرع بمقدار 6–9 مرات عبر الجداول الخارجية (على سبيل المثال، GROUP BY مع 5 عمليات تجميع: ‏176 مللي ثانية عبر ClickHouse مقابل 1,133 مللي ثانية محليًا؛ وJOIN مع عمليات تجميع: ‏298 مللي ثانية مقابل 2,764 مللي ثانية).

التنظيف

احذف ClickPipe أولًا، ثم خدمة Postgres. يؤدي حذف الخدمة إلى إزالة جميع بياناتها نهائيًا:
لا يمكن حذف خدمة ClickHouse وهي قيد التشغيل مباشرةً. أوقفها، وانتظر حتى تصبح stopped، ثم احذفها:
آخر تعديل في ٢٤ يوليو ٢٠٢٦