بالنسبة لأغلب التطبيقات الصغيرة، فإن PostgreSQL وMySQL (أو المشتق عنه MariaDB) قاعدتا بيانات علائقيتان موثوقتان وموثقتان جيداً، وكلتاهما تتحمل حمل تطبيق أعمال معتاد لفترة طويلة. ونادراً ما يكون الاختيار متعلقاً بالسرعة الخام، بل بما يتوقعه برنامجك، وبعدد من الفروق في الميزات التي تؤثر في العمل اليومي، وبمدة دعم كل إصدار، وبما توفره استضافتك. يمر هذا الدليل على هذه النقاط مستنداً إلى توثيق كل مشروع.
ابدأ بما يتوقعه برنامجك
إذا حدد التطبيق قاعدة البيانات فاتبعه. فمنصة WordPress توصي بـ MariaDB 10.11 أو أحدث أو MySQL 8.0 أو أحدث، ولا تعمل على PostgreSQL مباشرة. أما أطر العمل فأكثر مرونة: يدعم Django رسمياً PostgreSQL وMariaDB وMySQL وOracle وSQLite، ويذكر توثيق Laravel كلاً من MariaDB وMySQL وPostgreSQL وSQLite وSQL Server. ومع هذه الأطر يكون القرار لك، وتصبح النقاط التالية أهم.
وخبرة الفريق عامل مهم أيضاً؛ فقاعدة بيانات يعرف فريقك كيف ينسخها ويستعيدها ويرقّيها أكثر أماناً من خيار أنسب قليلاً لم يشغّله أحد من قبل.
فروق تظهر في العمل اليومي
| الموضوع | PostgreSQL | MySQL / MariaDB |
|---|---|---|
| تغييرات البنية داخل المعاملات | أغلب أوامر DDL مثل CREATE TABLE وALTER TABLE تعمل داخل معاملة وتُلغى معها، وقليل من الأوامر مثل CREATE DATABASE لا يُنفَّذ داخل كتلة معاملة | أوامر DDL تُحدث تثبيتاً ضمنياً (implicit commit). وميزة الـ DDL الذري في MySQL 8.4 تجعل كل أمر يُنفَّذ كاملاً أو لا يُنفَّذ، لكن الدليل يؤكد أنها ليست DDL ضمن معاملات |
| JSON | النوعان json وjsonb، وjsonb مخزّن بصيغة ثنائية مفككة ويدعم الفهرسة، ومنها فهارس GIN للبحث عن المفاتيح والاحتواء | لدى MySQL نوع JSON أصلي مع تحقق من الصحة وصيغة تخزين ثنائية محسّنة، أما في MariaDB فالنوع JSON اسم بديل لـ LONGTEXT مع قيد JSON_VALID |
الصف الأول هو أكثر ما تشعر به الفرق الصغيرة. ففي PostgreSQL يمكن تغليف ترحيل يضيف عموداً وينشئ فهرساً ويملأ البيانات في معاملة واحدة، فإن فشلت أي خطوة بقيت قاعدة البيانات كما كانت تماماً. أما في MySQL وMariaDB فكل أمر DDL يُثبَّت وحده، فقد يترك ترحيل فشل في منتصفه بعض التغييرات مطبقة وبعضها لا. وأطر العمل تتعامل مع ذلك، لكنه يحدد مدى العناية المطلوبة في كتابة الترحيلات واختبارها.
ويهمك صف JSON إن كنت تخزن بيانات شبه منظمة، كالإعدادات أو النماذج المرسلة أو استجابات الواجهات البرمجية، وتريد الاستعلام داخلها بكفاءة؛ فـ jsonb مع فهرس GIN سبب شائع لاختيار PostgreSQL. أما إن كنت تخزن JSON وتقرؤه كاملاً فحسب، فأي الثلاثة يفي بالغرض.
وهناك نقطتان خاصتان بـ PostgreSQL تستحقان المعرفة أيضاً: الأمر CREATE EXTENSION يحمّل إضافات إلى قاعدة البيانات، وبه تضيف مشاريع كثيرة أنواع بيانات وفهارس ودوال متخصصة. كما يعتمد PostgreSQL نموذج «عملية لكل مستخدم»، أي أن لكل اتصال عميل عملية خلفية خاصة به. وهذه ملاحظة تخطيطية لا نقطة ضعف؛ فلأن كل اتصال عملية مستقلة، فإن التطبيقات التي تُبقي اتصالات خاملة كثيرة، أو الدوال عديمة الخادم التي تفتح اتصالات قصيرة كثيرة، تضع عادة مجمّع اتصالات (connection pooler) أمام PostgreSQL.
دورات الدعم والترقيات
- PostgreSQL يدعم كل إصدار رئيسي خمس سنوات. والإصدارات الرئيسية تغيّر صيغة التخزين على القرص، فالانتقال بينها يتطلب تصديراً وإعادة تحميل أو أداة
pg_upgrade. فالإصدار 16 مثلاً مدعوم حتى نوفمبر 2028. - MySQL صار لديه إصدارات دعم طويل (LTS)، وخط 8.4 هو خط LTS الحالي، إلى جانب إصدارات «الابتكار» الأسرع تغيراً. ووفق سياسة الدعم مدى الحياة لدى Oracle يحصل خط LTS على خمس سنوات من الدعم الرئيسي وثلاث سنوات من الدعم الممتد.
- MariaDB تعلن إصداراً طويل الدعم كل عام، وتصدر ملفاته التنفيذية المجتمعية ثلاث سنوات بعد الإتاحة العامة (وخمس سنوات للإصدارات حتى 11.4)، مع إصلاحات حرجة وأمنية في صورة شيفرة مصدرية لسنتين إضافيتين.
ولتطبيق صغير على Debian يكون إصدار التوزيعة غالباً أبسط خيار: تحتوي Debian 13 (trixie) على PostgreSQL 17 وMariaDB 11.8، وDebian 12 (bookworm) على PostgreSQL 15 وMariaDB 10.11. وأياً كان اختيارك، ضع تاريخ انتهاء الدعم في تقويمك.
دليل قرار مختصر
- اختر MySQL أو MariaDB حين يتطلبه تطبيقك (WordPress وكثير من تطبيقات PHP)، أو حين يتقن فريقك تشغيله، أو حين تريد أوسع خيارات الاستضافة المشتركة.
- اختر PostgreSQL حين تريد ترحيلات تُلغى بالكامل عند الفشل، أو استعلامات غنية على بيانات JSON، أو إضافات لبيانات متخصصة، وكان إطار عملك يدعمه.
- كلاهما مناسب لتطبيق CRUD معتاد على Django أو Laravel أو Node.js؛ اختر أحدهما، وتعلّم إجراءات نسخه وترقيته، وامضِ قدماً.
إن كانت استضافتك لدى Skyline
توفر خطط استضافة المواقع لدى Skyline قاعدة PostgreSQL 16 إلى جانب MySQL/MariaDB، وتُدار من S Panel عبر Adminer، بحد أقصى خمس قواعد PostgreSQL لكل حساب استضافة. ولا تقبل قواعد بيانات الاستضافة الاتصال إلا من خادم الاستضافة نفسه (127.0.0.1:5432)، فهي تناسب التطبيقات التي تعمل على حساب الاستضافة ذاته؛ أما إن احتجت قاعدة بيانات تصل إليها من مكان آخر، فالخادم الافتراضي الذي تديره بنفسك هو الأداة المناسبة.
ما الذي ينبغي فعله
- تحقق قبل كل شيء مما يتطلبه تطبيقك أو نظام إدارة المحتوى لديك.
- إن كان الخيار لك، فقرّر هل تهمك تغييرات البنية داخل المعاملات أو استعلامات JSON أو الإضافات؛ وإن لم تكن تهمك، فاختر القاعدة التي يعرفها فريقك.
- استخدم إصداراً مدعوماً ودوّن تاريخ انتهاء دعمه.
- قبل الإطلاق، تدرّب على نسخ قاعدة البيانات المختارة واستعادتها، وعلى تحديث إصدار فرعي.
المصادر
- wordpress.org/about/requirements
- docs.djangoproject.com/en/stable/ref/databases
- laravel.com/docs/12.x/database
- wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis
- postgresql.org/docs/current/sql-createdatabase.html
- dev.mysql.com/doc/refman/8.4/en/implicit-commit.html
- dev.mysql.com/doc/refman/8.4/en/atomic-ddl.html
- mariadb.com/docs/server/reference/sql-statements/transactions/sql-statements-that-cause...
- postgresql.org/docs/current/datatype-json.html
- dev.mysql.com/doc/refman/8.4/en/json.html
- mariadb.com/docs/server/reference/data-types/string-data-types/json
- postgresql.org/docs/current/sql-createextension.html
- postgresql.org/docs/current/connect-estab.html
- postgresql.org/support/versioning
- dev.mysql.com/doc/refman/8.4/en/mysql-releases.html
- mariadb.org/about/#maintenance-policy
- qa.debian.org/madison.php?package=postgresql-17
- qa.debian.org/madison.php?package=mariadb
- cloud.alskyline.com/postgresql-hosting-saudi-arabia
- cloud.alskyline.com/hosting
Comments
0 total · 0 threads