Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

دليل إعداد Postgres مع TimescaleDB كمصدر

ميزة Beta

الخلفية

يُعد TimescaleDB امتدادًا مفتوح المصدر لـ Postgres طوّرته Timescale Inc، ويهدف إلى تحسين أداء استعلامات التحليلات دون الحاجة إلى مغادرة Postgres. ويتحقق ذلك من خلال إنشاء "الجداول الفائقة" التي يديرها الامتداد وتدعم التقسيم التلقائي إلى "chunks". كما تدعم "الجداول الفائقة" أيضًا الضغط الشفاف والتخزين الهجين الصفّي-العمودي (المعروف باسم "hypercore")، إلا أن هذه الميزات تتطلب إصدارًا من الامتداد بترخيص احتكاري.

وتقدّم Timescale Inc أيضًا خدمتين مُدارتين لـ TimescaleDB:

  • Managed Service for Timescale
  • Timescale Cloud.

كما توجد جهات خارجية تقدّم خدمات مُدارة تتيح لك استخدام امتداد TimescaleDB، ولكن بسبب قيود الترخيص، لا تدعم هذه الجهات سوى الإصدار مفتوح المصدر من الامتداد.

وتعمل "الجداول الفائقة" في Timescale بطريقة تختلف عن جداول Postgres العادية من عدة نواحٍ. وهذا يفرض بعض التعقيدات على عملية النسخ المتماثل لها، ولذلك ينبغي اعتبار القدرة على النسخ المتماثل لـ "الجداول الفائقة" في Timescale مبنية على أفضل جهد ممكن.

إصدارات Postgres المدعومة

تدعم ClickPipes الإصدار 12 من Postgres وما بعده.

تفعيل النسخ المتماثل المنطقي

تعتمد الخطوات التي ينبغي اتباعها على طريقة نشر مثيل Postgres لديك مع TimescaleDB.

  • إذا كنت تستخدم خدمة مُدارة وكان موفّر الخدمة مدرجًا في الشريط الجانبي، فيُرجى اتباع الدليل الخاص به.
  • إذا كنت تنشر TimescaleDB بنفسك، فاتبع الدليل العام.

بالنسبة إلى الخدمات المُدارة الأخرى، يُرجى فتح تذكرة دعم لدى موفّر الخدمة للمساعدة في تفعيل النسخ المتماثل المنطقي إذا لم يكن مفعّلًا بالفعل.

التهيئة

لا تخزّن الجداول الفائقة في Timescale أي بيانات تُدرَج فيها. وبدلًا من ذلك، تُخزَّن البيانات في عدة جداول "chunk" مقابلة ضمن المخطط _timescaledb_internal. لا يمثّل هذا مشكلة عند تشغيل الاستعلامات على الجداول الفائقة. لكن أثناء النسخ المتماثل المنطقي، نكتشف التغييرات في جداول "chunk" بدلًا من اكتشافها في الجدول الفائق نفسه. ويتضمن Postgres ClickPipe منطقًا يعيد تلقائيًا ربط التغييرات من جداول "chunk" بالجدول الفائق الأب، لكن ذلك يتطلب خطوات إضافية.

  1. أنشئ مستخدمًا مخصصًا لـ ClickPipes:

    CREATE USER clickpipes_user PASSWORD 'some-password';
  2. امنح المستخدم الذي أنشأته في الخطوة السابقة وصولًا للقراءة فقط على مستوى المخطط. يوضّح المثال التالي الأذونات الخاصة بالمخطط public. كرر هذه الأوامر لكل مخطط يحتوي على الجداول التي تريد تضمينها في النسخ المتماثل:

    GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
    GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
  3. امنح المستخدم امتيازات النسخ المتماثل:

    ALTER USER clickpipes_user WITH REPLICATION;
  4. بصفتك مستخدم Postgres فائق الصلاحيات/مسؤولًا، أنشئ منشورًا يتضمن الجداول الفائقة التي تريد نسخها متماثلًا. يجب أن يتضمن المنشور أيضًا المخطط _timescaledb_internal بالكامل حتى يتمكن المسار من تلقي التغييرات من جداول "chunk" الأساسية. ونوصي بشدة بقصر المنشور على الجداول التي تحتاج إليها فقط لتجنب العبء الإضافي على الأداء.

   -- When adding new tables to the ClickPipe, you'll need to add them to the publication manually as well.
   CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2, TABLES IN SCHEMA _timescaledb_internal;

يحدّد المنشور clickpipes مجموعة الجداول التي ستُبث أحداث التغيير الخاصة بها إلى ClickPipes. ولا نوصي باستخدام FOR ALL TABLES ما لم تكن تنوي نسخ كل الجداول نسخًا متماثلًا، لأن تضمين جداول غير ضرورية يزيد من حركة مرور WAL من Postgres إلى ClickPipes ويقلل من الكفاءة الإجمالية للنسخ المتماثل.

بعد إكمال هذه الخطوات، ينبغي أن تتمكن من المتابعة إلى إنشاء ClickPipe.

تكوين الوصول إلى الشبكة

إذا كنت تريد تقييد حركة المرور إلى مثيل Timescale الخاص بك، فيُرجى إضافة عناوين IP الثابتة لـ NAT الموثّقة إلى قائمة السماح. تختلف التعليمات اللازمة لذلك باختلاف مزوّدي الخدمة، لذا يُرجى الرجوع إلى الشريط الجانبي إذا كان مزوّدك مدرجًا، أو فتح تذكرة دعم لديهم.

Navigation