SQL Academy · درس

التجميعات المستمرة

جمّع بيانات السلاسل الزمنية مسبقًا باستخدام العروض المادية CONTINUOUS AGGREGATE والتحديث التدريجي

الدرس 2 من 413 خطوة

التجميعات المستمرة درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

ما هو التجميع المستمر؟

هو تجميع محسوب مسبقاً ويُحدّث تدريجياً فوق جدول فائق الحجم — مثل طريقة عرض مادية تُحدّث بذكاء عند وصول بيانات جديدة.

إنشاء تجميع مستمر

متوسطات الأجهزة لكل ساعة:

CREATE MATERIALIZED VIEW metrics_hourly
WITH (timescaledb.continuous) AS
SELECT device_id,
       time_bucket('1 hour', ts) AS hour,
       AVG(value) AS avg_value,
       COUNT(*)   AS samples
FROM metrics
GROUP BY device_id, hour;

سياسة التحديث

ينفّذ TimescaleDB التحديث التلقائي:

SELECT add_continuous_aggregate_policy('metrics_hourly',
  start_offset => INTERVAL '1 day',
  end_offset   => INTERVAL '1 hour',
  schedule_interval => INTERVAL '15 minutes');
-- Every 15 minutes, refresh the window from 1 day ago to 1 hour ago.

الاستعلام

استخدم SELECT فحسب — يدمج TimescaleDB البيانات المادية مع البيانات الخام للفترة الأحدث التي لم تُحوّل إلى بيانات مادية:

SELECT * FROM metrics_hourly
WHERE device_id = 42
  AND hour >= NOW() - INTERVAL '7 days'
ORDER BY hour;

التجميع الفوري

تُظهر التجميعات المستمرة افتراضياً البيانات المحسوبة مسبقاً بالإضافة إلى البيانات الخام للجزء غير المحوّل إلى بيانات مادية. وسترى دائماً أحدث القيم، لكن مع تكلفة حساب الجزء الأخير أثناء التنفيذ.

وضع البيانات المادية فقط

للوحات المعلومات المحسوبة مسبقاً بالكامل (من دون حساب أثناء التنفيذ)، عطّل التجميع الفوري:

ALTER MATERIALIZED VIEW metrics_hourly
  SET (timescaledb.materialized_only = true);

التجميع متعدد المستويات

أنشئ تجميعاً لكل ساعة ← لكل يوم ← لكل شهر:

-- daily aggregate from the hourly cagg
CREATE MATERIALIZED VIEW metrics_daily
WITH (timescaledb.continuous) AS
SELECT device_id, time_bucket('1 day', hour) AS day,
       AVG(avg_value) AS avg_value
FROM metrics_hourly
GROUP BY device_id, day;

ضغط الجدول فائق الحجم لا يمنع التجميع

يمكنك ضغط الجدول فائق الحجم الأساسي؛ وستواصل التجميعات المستمرة عملها.

متى تتفوق التجميعات المستمرة على طرق العرض المادية

  • بيانات السلاسل الزمنية: دلالات زمنية مدمجة
  • التحديث التدريجي — لا تعِد أبداً فحص السجل الكامل
  • دمج الجزء الأخير في الوقت الفعلي
  • التجميعات متعددة المستويات

التوافق

تعمل التجميعات المستمرة على الجداول فائقة الحجم في TimescaleDB. أما في Postgres غير المدعوم من TS، فعليك إنشاء طريقة العرض المادية ومنطق تحديثها بنفسك.

ملء البيانات التاريخية

حدّث البيانات التاريخية يدوياً إذا غيّرت تعريف التجميع:

CALL refresh_continuous_aggregate('metrics_hourly',
  NULL, NOW());
-- Recompute from the beginning of time.

مراجعة

التجميعات المستمرة هي طرق عرض مادية للسلاسل الزمنية.

  • تُعرّف باستخدام WITH (timescaledb.continuous)
  • سياسة تحديث تلقائي
  • مزيج من البيانات الفورية والمادية
  • أنشئ تجميعات يومية وأسبوعية فوق التجميعات الساعية

تحقق سريع

ما الذي يجعل تحديث التجميع المستمر في TimescaleDB فعالاً مقارنةً بـ REFRESH MATERIALIZED VIEW؟

البدء مجانًا

تعلم SQL مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
46
الدروس
183

الأسئلة الشائعة

هل درس «التجميعات المستمرة» مجاني؟

نعم — نص درس «التجميعات المستمرة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «التجميعات المستمرة»؟

جمّع بيانات السلاسل الزمنية مسبقًا باستخدام العروض المادية CONTINUOUS AGGREGATE والتحديث التدريجي تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «التجميعات المستمرة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. جداول TimescaleDB فائقة التقسيم
  2. التجميعات المستمرة
  3. سياسات الضغط والاحتفاظ
  4. اختيار فهارس السلاسل الزمنية
← العودة إلى SQL Academy