PostgreSQL
تعلم PostgreSQL من الألف إلى الياء. أساسيات SQL، والربط بين الجداول، والفهارس، والمعاملات، وJSONB، وEXPLAIN، وتصميم قواعد البيانات.
14 درسًا، بالترتيب
- 120 دقيقة
ما هو PostgreSQL
تخيّل أنك تتابع كل زبون وكل طلب وكل منتج في متجر صغير داخل جدول بيانات. الأمر يعمل، إلى أن يحاول شخصان تحريره في الوقت نفسه، أو يتجاوز الجدول بضع...
Relational databaseACIDMVCCPostgres vs MySQL vs SQLiteWhere Postgres shines - 225 دقيقة
psql والأوامر الأولى
صرت تعرف الآن ما فائدة Postgres. والمسألة التالية أكثر عملية: كيف تكلّمه فعلًا؟ خادم Postgres الشغّال يجلس منتظرًا على منفذ شبكي، لا نوافذ له ولا...
Psql command line clientConnecting as postgres userMeta commands like \l \c \dt \d \qSemicolons end statementsMultiline queriesSELECT version() - 330 دقيقة
إنشاء قواعد البيانات والجداول
حتى الآن لم تفعل أكثر من التجوّل داخل خادم أعدّه شخص آخر. هذا كافٍ لتتعرّف على الأدوات، لكنه لا يقدّمك خطوة واحدة في مشروع حقيقي: تحتاج إلى مكان خاص...
CREATE DATABASECREATE TABLEPRIMARY KEYNOT NULLDEFAULTDROP TABLE+1 - 425 دقيقة
أنواع البيانات
كل عمود أنشأته حتى الآن كان له نوع مرتبط به: TEXT أو SERIAL أو TIMESTAMPTZ، دون شرح واضح لسبب اختيار هذا النوع دون غيره. والمسألة أهم مما تبدو عليه....
Integer and bigintNumeric vs floatText and varcharBooleanTimestamptz vs timestampDate+3 - 530 دقيقة
SELECT و WHERE
عندك جدول فيه بضعة آلاف من الصفوف، وتحتاج سبعة منها. لا كلها، ولا أول مئة، بل السبعة التي تنطبق عليها قاعدة في ذهنك: نُشرت الشهر الماضي، وتقييمها فوق...
SELECT specific columnsWHERE with AND ORBETWEENINLIKE and ILIKEIS NULL+2 - 635 دقيقة
Joins
بياناتك ليست في جدول واحد، ولا ينبغي أن تكون كذلك. المستخدمون يسكنون في users، ومنشوراتهم في posts، والشيء الوحيد الذي يشدّ المنشور إلى كاتبه رقمٌ...
INNER JOINLEFT JOINRIGHT JOINFULL OUTER JOINSelf joinUSING vs ON - 730 دقيقة
التجميعات والتقسيم إلى مجموعات
يسألك أحدهم كيف كان أداء المتجر الشهر الماضي. هو لا يريد صفوف الطلبات الأربعة آلاف. يريد رقمًا واحدًا، أو ربما رقمًا واحدًا لكل زبون، وإذا سحبت...
COUNTSUMAVGMINMAXGROUP BY+3 - 835 دقيقة
الفهارس (indexes)
كان الاستعلام يعمل بلا مشاكل على حاسوبك المحمول مع مئتَي صف اختباري. وفي بيئة الإنتاج، أمام أربعة ملايين صف، يستغرق الاستعلام نفسه إحدى عشرة ثانية...
B-tree defaultCREATE INDEXMulti-column indexPartial index WHERE activeUnique indexWrite cost+1 - 935 دقيقة
Transactions و Isolation
جملتا UPDATE تنقلان مالًا من Alice إلى Bob. تُنفَّذ الأولى، ثم ينقطع الاتصال، فلا تقع الثانية أبدًا، وتكون ثلاثون جنيهًا قد زالت من الوجود ببساطة....
BEGIN COMMIT ROLLBACKSavepointsREAD COMMITTED defaultREPEATABLE READSERIALIZABLEDirty read non-repeatable read phantom read serialization anomaly - 1035 دقيقة
Functions و Triggers
كل جدول في مخططك فيه عمود updated_at، وكلها خاطئة. ليس دائمًا، بل في المسارات التي نسي فيها أحدهم ضبطه: سكربت الإدارة، والتصحيح اليدوي الذي أجريته...
CREATE FUNCTIONLANGUAGE plpgsqlRETURNSCREATE TRIGGERBEFORE UPDATENEW and OLD+1 - 1135 دقيقة
JSONB والمصفوفات
بعض البيانات ترفض أن تستقرّ داخل أعمدة. تخيّل جدول منتجات فيه حواسيب محمولة لها حجم ذاكرة، ولوحات مفاتيح لها نوع مفتاح، وشاشات لها قياس قطري، ثم يضيف...
JSONB column-> operator->> operator@> contains operatorGIN index on jsonbText[] and integer[] arrays+2 - 1235 دقيقة
EXPLAIN وضبط الاستعلامات
صفحة كانت تُحمَّل فورًا صارت تستغرق تسع ثوانٍ، والغريزة الأولى أن تبدأ التخمين. أضف فهرسًا هنا. أعد كتابة عملية الوصل. ربما السبب ORDER BY. التخمين...
EXPLAINEXPLAIN ANALYZESeq scan vs index scan vs index-only scanFixing a missing indexPg_stat_statements overview - 1325 دقيقة
النسخ الاحتياطي والاستعادة
المهمة الليلية تكتب ملفًا على القرص منذ ثمانية أشهر ولم يفتحه أحد قط. هذه ليست نسخة احتياطية، بل ملف تتمنى أن ينفع. لا تصير النسخة الاحتياطية نسخة...
Pg_dump custom formatPg_restorePlain SQL dumpsPoint-in-time recovery overview - 1460 دقيقة
الختام: تصميم مخطط قاعدة البيانات
كل درس حتى الآن ناولك جدولًا وطلب منك أن تستعلم عنه. والعمل الحقيقي يسير في الاتجاه المعاكس: يصف لك أحدهم منتجًا، وعليك أن تقرر ما الجداول، وأي...
Schema designPrimary and foreign keysIndexes on hot columnsUpdated_at triggerJSONB metadataJoins with aggregates+1
تعلّم PostgreSQL بلغتك
كل درس واختبار ورد من المدرس يظهر بلغتك. المدرس الذكي يرد بنفس اللغة التي تكتب بها.
Roles that use PostgreSQL
See how hiring teams interview engineers on PostgreSQL, in production-like environments.
Database Administrator (DBA)
Hire DBAs in real workspaces with PostgreSQL or MySQL, real replication lag, real slow queries and real backups to restore. Live or take-home.
See the interviewBackend Engineer (Go, Rust, Java)
Hire backend engineers in real services with real databases, real concurrency and real latency budgets. Live or take-home, fully recorded.
See the interviewData Engineer
Hire data engineers in workspaces with real Spark, dbt and Airflow pipelines. Schema drift, bad data and reruns included.
See the interview