تخطَّ إلى المحتوى
ARAB CODEمجتمع المطورين العرب

PostgreSQL

PostgreSQL نظام قواعد بيانات علائقي مفتوح المصدر، يلتزم بمعيار SQL ويضيف أنواعاً متقدمة مثل JSONB والمصفوفات والبحث النصي.

أنواع مفيدة

النوعالاستخدام
TEXTنصوص بأي طول
TIMESTAMPTZوقت مع منطقة زمنية (يُخزن بتوقيت UTC)
NUMERIC(10,2)مبالغ مالية بدقة تامة
JSONBبيانات JSON قابلة للفهرسة والاستعلام
UUIDمعرفات فريدة عالمياً

الفهارس

الفهرس يسرّع البحث على حساب مساحة إضافية وكتابة أبطأ قليلاً:

CREATE INDEX posts_user_id_idx ON posts (user_id);
CREATE INDEX users_email_lower_idx ON users (lower(email));   -- فهرس على تعبير

المعاملات

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;      -- أو ROLLBACK للتراجع عن الكل

المعاملة تضمن أن تنجح كل العمليات معاً أو لا ينجح شيء منها. مستوى العزل الافتراضي READ COMMITTED.

فهم الأداء

EXPLAIN ANALYZE
SELECT * FROM posts WHERE user_id = 7;

يعرض خطة التنفيذ الفعلية والزمن. Seq Scan على جدول كبير مع شرط انتقائي يعني غالباً أن فهرساً مفقود.

النسخ الاحتياطي

pg_dump --format=custom --file=backup.dump mydb
pg_restore --dbname=mydb_restore backup.dump

اختبر الاستعادة دورياً؛ النسخة التي لم تُجرَّب استعادتها ليست نسخة موثوقة.

أخطاء شائعة

  • تخزين الوقت بنوع TIMESTAMP بلا منطقة زمنية ثم الخلط بين التوقيتات.
  • استخدام FLOAT للمبالغ المالية.
  • فتح اتصال جديد لكل طلب بدل استخدام مجمّع اتصالات (pool).

المصادر

  1. PostgreSQL documentation
  2. Indexes
  3. Transaction isolation