Citus وPostgres الموزع
استخدم Citus لتحويل Postgres إلى قاعدة بيانات موزعة، مع جداول موضوعة في العُقد نفسها وجداول مرجعية
Citus وPostgres الموزع درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
ما المقصود بـ Citus؟
Citus هو إضافة لـ PostgreSQL تحوّل مجموعة من خوادم PG إلى قاعدة بيانات موزّعة. تنفّذ SELECT وINSERT على المنسّق، ويوجّه Citus الطلبات إلى أجزاء العاملين المناسبة بشفافية.
البنية
هناك دورَان:
- المنسّق — يستقبل الاستعلامات، ويحتفظ بالبيانات الوصفية للمجموعة، ويوجّه النتائج ويجمعها
- العاملون — يحتفظون ببيانات الأجزاء وينفّذون الاستعلامات الفعلية
الإعداد
ثبّت الإضافة على المنسّق والعاملين، ثم سجّل العاملين:
CREATE EXTENSION citus;
-- On the coordinator, add worker nodes:
SELECT * FROM master_add_node('worker1', 5432);
SELECT * FROM master_add_node('worker2', 5432);الجداول الموزّعة
حدّد أن الجدول موزّع حسب عمود معيّن:
CREATE TABLE orders (
id BIGSERIAL,
user_id BIGINT NOT NULL,
total NUMERIC(10,2),
...
);
SELECT create_distributed_table('orders', 'user_id');
-- Citus splits orders into shards by hash(user_id).الجداول المرجعية
جداول صغيرة تُنسخ إلى كل عامل — لذلك تبقى عمليات JOIN محلية:
CREATE TABLE countries (id INT, name TEXT);
SELECT create_reference_table('countries');
-- Every worker has a full copy of countries.التوضع المشترك
تكون الجداول التي تستخدم عمود التوزيع نفسه متوضعة معًا: إذ توجد الصفوف الخاصة بـ user_id معيّن دائمًا على العامل نفسه. وتبقى عمليات JOIN على user_id محلية:
SELECT create_distributed_table('orders', 'user_id');
SELECT create_distributed_table('events', 'user_id', colocate_with => 'orders');استعلامات المستأجر الواحد
يوجّه Citus الاستعلامات التي تتضمن تصفية حسب user_id إلى العامل المناسب — بسرعة:
SELECT * FROM orders WHERE user_id = 42;
-- Goes to one worker shard, returns in milliseconds.التجميع الموزّع
ينفّذ Citus عمليات COUNT وSUM بالتوازي عبر العاملين:
SELECT user_id, SUM(total) FROM orders GROUP BY user_id;
-- Each worker computes locally; coordinator concatenates.إعادة التوازن
أضف عاملًا ثم أعد توازن الأجزاء:
SELECT * FROM citus_add_node('worker3', 5432);
SELECT * FROM rebalance_table_shards('orders');
-- Citus moves some shards onto the new worker.القيود
- المعاملات عبر الجداول غير المتوضعة معًا محدودة
- لا تنطبق بعض ميزات Postgres على الجداول الموزّعة
- تنتشر تغييرات المخطط، لكنها تتطلب التنسيق
Citus Cloud / Azure
استحوذت Microsoft على Citus — وهو الآن جزء من Azure Database for PostgreSQL — Hyperscale (Citus). وما يزال مفتوح المصدر أيضًا.
البدائل
- YugabyteDB — موزّع ومتوافق مع PG
- CockroachDB — موزّع ومتوافق مع بروتوكول Postgres
- Pgvector / TimescaleDB — تخصصات للعقدة الواحدة
متى يحقق Citus أفضل أداء
البرمجيات السحابية متعددة المستأجرين حيث تكون استعلامات كل مستأجر معزولة. والسلاسل الزمنية التي تُقسّم حسب المستأجر والوقت. والتحليلات التي تستخدم التجميع المتوازي.
مراجعة
يجعل Citus من Postgres قاعدة بيانات موزّعة.
- منسّق وعاملون
- التوزيع حسب عمود، مع التوضع المشترك لإجراء عمليات JOIN محلية
- جداول مرجعية للأبعاد المشتركة
- الأنسب: البرمجيات السحابية متعددة المستأجرين
تحقق سريع
ما فائدة «التوضع المشترك» لجدولين موزّعين حسب المفتاح نفسه في Citus؟
الأسئلة الشائعة
هل درس «Citus وPostgres الموزع» مجاني؟
نعم — نص درس «Citus وPostgres الموزع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «Citus وPostgres الموزع»؟
استخدم Citus لتحويل Postgres إلى قاعدة بيانات موزعة، مع جداول موضوعة في العُقد نفسها وجداول مرجعية تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «Citus وPostgres الموزع»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- استراتيجيات التقسيم: النطاق والتجزئة والدليل
- الاستعلامات بين الأقسام: المشكلة الصعبة
- Citus وPostgres الموزع
- متى لا تستخدم التقسيم