إدارة البيانات باستخدام تقسيم PostgreSQL و pg_partman

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

يتناول هذا المقال بعمق إنشاء وإدارة تقسيم الجدول في PostgreSQL، مركزًا على امتداد pg_partman لتقسيم الجدول استنادًا إلى الوقت والتسلسل. يتم مناقشة أنواع التقسيمات المدعومة في PostgreSQL بتفصيل، جنبًا إلى جنب مع حالات الاستخدام العملية وأمثلة عملية لتوضيح تنفيذها.

مقدمة

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

لماذا التقسيم؟

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

التقسيم الأصلي مقابل التقسيم القائم على الإضافات

يبسط التقسيم التصريحي الأصلي في PostgreSQL العديد من جوانب التقسيم، بينما توفر الإضافات مثل pg_partman قدرات إضافية من الأتمتة والإدارة، لا سيما لحالات الاستخدام الديناميكية.

التقسيم الأصلي مقابل pg_partman

Feature Native Partitioning pg_partman
الأتمتة محدودة شاملة
أنواع التقسيم النطاق، القائمة، التجزئة الوقت، التسلسل (المتقدم)
الصيانة تتطلب نصوص يدوية أوتوماتيكية
سهولة الاستخدام تتطلب خبرة في SQL مبسطة

أنواع تقسيم الجداول في PostgreSQL

يدعم PostgreSQL ثلاث استراتيجيات تقسيم أساسية: النطاق، القائمة، والتجزئة. لكل منها خصائص فريدة تناسب حالات استخدام مختلفة.

تقسيم النطاق

يقسم تقسيم النطاق الجدول إلى أقسام بناءً على نطاق من القيم في عمود محدد، غالبًا ما يكون عمود تاريخ أو عمود رقمي.

مثال: بيانات المبيعات الشهرية

SQL

 

المزايا

  • فعال لبيانات السلاسل الزمنية مثل السجلات أو المعاملات
  • يدعم الاستعلامات المتسلسلة، مثل استرجاع البيانات لشهور محددة

العيوب

  • يتطلب نطاقات محددة مسبقًا، مما قد يؤدي إلى تحديثات متكررة في النموذج

تقسيم القوائم

يقسم تقسيم البيانات استنادًا إلى مجموعة متفرقة من القيم، مثل المناطق أو الفئات.

مثال: طلبات إقليمية

SQL

 

المزايا

  • مثالي للمجموعات ذات عدد محدد من الفئات (مثل المناطق، الإدارات)
  • سهل الإدارة لمجموعة ثابتة من الأقسام

العيوب

  • غير مناسب للفئات الديناميكية أو المتنامية

تقسيم الهاش

يوزع تقسيم الهاش الصفوف عبر مجموعة من الأقسام باستخدام وظيفة هاش. وهذا يضمن توزيعًا متساويًا للبيانات.

مثال: حسابات المستخدمين

SQL

 

المزايا

  • يضمن توزيعًا متوازنًا عبر الأقسام، مما يمنع النقاط الساخنة
  • مناسب لأعباء عمل منتشرة بالتساوي

العيوب

  • غير قابل للقراءة بواسطة الإنسان؛ لا يمكن تحديد الأقسام بشكل بديهي

دليل شامل على pg_partman

pg_partman هو تمديد PostgreSQL يبسط إدارة التقسيم، خاصة للبيانات المعتمدة على الوقت والسريال.

التثبيت والإعداد

pg_partman يتطلب التثبيت كتمديد في PostgreSQL. يوفر مجموعة من الوظائف لإنشاء وإدارة الجداول المقسمة ديناميكيًا.

  1. قم بالتثبيت باستخدام مدير الحزم الخاص بك:
    Shell

  2. قم بإنشاء الامتداد في قاعدة البيانات الخاصة بك:
    SQL

     

تكوين تقسيم القسمة

pg_partman يدعم التقسيم القائم على الوقت والتسلسل، وهما مفيدان بشكل خاص لمجموعات البيانات التي تحتوي على بيانات زمنية أو معرفات متسلسلة.

مثال على التقسيم القائم على الوقت

SQL

 

هذا التكوين:

  • ينشئ تقسيمات يومية تلقائيًا
  • يبسط استعلامات وصيانة بيانات السجلات

مثال على التقسيم القائم على التسلسل

SQL

 

ينشئ تقسيمات كل 100,000 صف، مضمنًا أن تظل الجدول الأساسي قابلة للإدارة.

ميزات الأتمتة

صيانة تلقائية

استخدم run_maintenance() لضمان إنشاء تقسيمات مستقبلية مسبقًا:

SQL

 

سياسات الاحتفاظ

حدد فترات الاحتفاظ لإسقاط التقسيمات القديمة تلقائيًا:

SQL

 

مزايا pg_partman

  1. يبسط إنشاء التقسيم الديناميكي
  2. يأتمت عمليات التنظيف والصيانة
  3. يقلل من الحاجة إلى تحديثات مخطط يدوية

حالات استخدام عملية لتقسيم الجداول

  1. إدارة السجلات. تقسيم السجلات عالية التردد حسب اليوم لسهولة التأريش والاستعلام.
  2. بيانات متعددة المناطق. أنظمة التجارة الإلكترونية تقسم الطلبات حسب المنطقة لتعزيز قابلية التوسع.
  3. بيانات السلاسل الزمنية. تطبيقات الإنترنت من أشياء الإنترنت مع بيانات تليمتري مقسمة.

إدارة السجلات

قسم السجلات حسب اليوم أو الشهر لإدارة البيانات ذات التردد العالي بكفاءة.

SQL

 

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

قسم بيانات المبيعات أو المخزون حسب المنطقة لتحسين القدرة على التوسع.

SQL

 

المعاملات عالية الحجم

قسم المعاملات حسب ID التسلسلي لتجنب الفهارس الضخمة.

SQL

 

الخاتمة

يعد تقسيم الجداول تقنية لا غنى عنها لإدارة مجموعات البيانات الكبيرة. تجعل الميزات المدمجة في PostgreSQL، جنبًا إلى جنب مع امتداد pg_partman، تنفيذ استراتيجيات التقسيم الديناميكية والمُؤتمتة أسهل. تتيح هذه الأدوات لمشرفي قواعد البيانات تحسين الأداء، وتبسيط الصيانة، والتوسع بفعالية.

يعتبر التقسيم حجر الزاوية في إدارة قواعد البيانات الحديثة، خاصة في التطبيقات ذات الحجم الكبير. يضمن فهم وتطبيق هذه المفاهيم أنظمة قواعد بيانات قوية وقابلة للتوسع.

Source:
https://dzone.com/articles/postgresql-partitioning-pg-partman-data-management