ما هي قاعدة البيانات (Database)؟
قاعدة البيانات (database) مجموعة منظمة من البيانات مخزنة على حاسوب بحيث تستطيع البرامج العثور عليها وإضافتها وتعديلها وحذفها بسرعة وأمان. يديرها برنامج يسمى نظام إدارة قواعد البيانات (DBMS)، مثل PostgreSQL أو MySQL أو SQLite أو MongoDB.
آخر تحديث 24 سبتمبر 2026
عندما تسجّل الدخول إلى موقع ما، يجب على الموقع أن يجد حسابك بين ملايين الحسابات الأخرى، ويتحقق من كلمة المرور، ويحمّل إعداداتك، وكل ذلك في أجزاء قليلة من الثانية. إنه لا يفتح ملفًا نصيًا ويقرؤه سطرًا سطرًا. بل يرسل طلبًا مثل SELECT * FROM users WHERE email = 'ana@example.com' إلى قاعدة بيانات، فتقفز قاعدة البيانات مباشرة إلى الصف الصحيح باستخدام فهرس، يشبه كثيرًا الفهرس في آخر الكتاب.
كيف تعمل قاعدة البيانات
جزءان يعملان معًا. قاعدة البيانات هي البيانات، منظمة في بنية ثابتة. ونظام إدارة قواعد البيانات (DBMS) هو البرنامج الذي يخزّن تلك البيانات في ملفات، ويحافظ على اتساقها، ويجيب عن الطلبات. PostgreSQL و MySQL و SQLite أنظمة إدارة قواعد بيانات، وقائمة عملائك هي قاعدة البيانات.
في قاعدة البيانات العلائقية تعيش البيانات في جداول. لكل جدول أعمدة (الاسم، والبلد، والنقاط) وصفوف (صف لكل مستخدم). يمر الطلب بهذه الخطوات:
- يرسل برنامجك استعلامًا، مكتوبًا عادةً بلغة SQL (Structured Query Language).
- يحلل DBMS الاستعلام ويخطط لطريقة الإجابة عنه: أي الجداول يقرأ، وهل يمكن لفهرس أن يتخطى معظم الصفوف.
- يقرأ البيانات من القرص في صفحات ثابتة الحجم (4,096 بايت افتراضيًا في SQLite، و8 KB في PostgreSQL)، ويُبقي الصفحات كثيرة الاستخدام في الذاكرة.
- يرشّح الصفوف ويرتّبها ويدمجها، ثم يُرجع النتيجة.
تأتي بايثون مع SQLite، فيمكنك تشغيل قاعدة بيانات حقيقية هنا مباشرة:
Kenji 340
Omar 340
Ana 120
users: 4 average points: 222.5
لا يقول البرنامج أبدًا كيف يبحث. بل يصف النتيجة التي يريدها، ويقرر DBMS كيف يصل إليها. وهذا هو الفرق الأساسي بين سؤال قاعدة بيانات وكتابة حلقة تمر على قائمة.
أنواع قواعد البيانات
| النوع | يخزّن البيانات على شكل | أمثلة | الاستخدام المعتاد |
|---|---|---|---|
| علائقية (SQL) | جداول من الصفوف والأعمدة، مرتبطة بمفاتيح | PostgreSQL و MySQL و SQLite و Oracle و SQL Server | المستخدمون والطلبات والمدفوعات: معظم التطبيقات |
| المستندات | مستندات شبيهة بـ JSON | MongoDB و Firestore و CouchDB | سجلات تختلف حقولها من سجل لآخر |
| المفتاح والقيمة | قيمة يُبحث عنها بمفتاح واحد | Redis و DynamoDB | الذاكرة المؤقتة (cache)، والجلسات، والعدادات |
| الأعمدة العريضة | صفوف بأعمدة مرنة موزعة على خوادم كثيرة | Cassandra و HBase | أحجام كتابة مرتفعة جدًا |
| الرسوم البيانية | عُقد والعلاقات بينها | Neo4j | الشبكات الاجتماعية، والتوصيات |
| السلاسل الزمنية | قياسات مفهرسة بالزمن | InfluxDB و TimescaleDB | المقاييس، وقراءات الحساسات |
| المتجهات | قوائم من الأرقام (embeddings) | pgvector و Pinecone و Milvus | البحث بالتشابه لميزات الذكاء الاصطناعي |
كل ما ليس علائقيًا يُجمع غالبًا تحت اسم NoSQL. تبقى قواعد البيانات العلائقية الخيار الافتراضي لمعظم التطبيقات، لأن الجداول والقيود و SQL تغطي مجموعة واسعة من المشاكل بشكل جيد. وكثير من المنتجات تجمع بين الأنواع أيضًا: فـ PostgreSQL تخزّن مستندات JSON، و pgvector تضيف إليها البحث بالمتجهات.
المعاملات: الكل أو لا شيء
تحويل المال من Ana إلى Ben يحتاج إلى تغييرين: إضافة إلى Ben، وخصم من Ana. إن تعطل البرنامج بينهما، يظهر مال من العدم. المعاملة (transaction) تجمع التغييرات بحيث تُحفظ كلها أو لا يُحفظ أي منها. هنا يخالف التغيير الثاني قاعدة (لا يجوز أن ينزل الرصيد تحت الصفر)، فتتراجع قاعدة البيانات عن التغيير الأول أيضًا:
transfer 30 done
{'ana': 20, 'ben': 30}
transfer 40 failed: CHECK constraint failed: balance >= 0
{'ana': 20, 'ben': 30}
أُضيفت الـ 40 إلى Ben ثم سُحبت منه، فبقيت المجاميع متوازنة. تعد قواعد البيانات العلائقية بأربع خصائص للمعاملات تُعرف باسم ACID: الذرية (atomic، الكل أو لا شيء)، والاتساق (consistent، القواعد مثل CHECK تتحقق دائمًا)، والعزل (isolated، مستخدمان يشغّلان معاملتين في الوقت نفسه لا يرى أحدهما عمل الآخر غير المكتمل)، والديمومة (durable، التغيير بعد حفظه يصمد أمام التعطل أو انقطاع الكهرباء).
قاعدة البيانات مقابل جدول البيانات مقابل الملف
| ملف نصي أو CSV | جدول بيانات | قاعدة بيانات | |
|---|---|---|---|
| الحجم | ما يستطيع برنامجك تحميله | 1,048,576 صفًا لكل ورقة في Excel | مليارات الصفوف |
| عدة كاتبين في الوقت نفسه | لا | محدود | نعم، بالأقفال والمعاملات |
| العثور على سجل واحد | قراءة الملف كاملًا | الترشيح أو البحث | البحث عبر الفهرس |
| قواعد على البيانات | لا توجد | تحقق اختياري | أنواع وقيود ومفاتيح أجنبية |
| طرح الأسئلة | كتابة كودك الخاص | الصيغ | SQL أو واجهة استعلام |
جدول البيانات أداة جيدة لشخص واحد ينظر إلى بضعة آلاف من الصفوف. لكن حين تكتب عدة برامج أو مستخدمين البيانات في الوقت نفسه، أو حين يجب أن تتبع البيانات قواعد، تكون قاعدة البيانات هي الأداة المناسبة.
كيف تحمي قواعد البيانات البيانات
يكتب DBMS كل تغيير في سجل قبل أن يلمس ملفات البيانات (سجل الكتابة المسبقة، write-ahead log)، فيستطيع بعد التعطل إعادة تنفيذ العمل غير المكتمل أو التراجع عنه. ويمكن لـ PostgreSQL تخزين مجموع اختباري لكل صفحة من 8 KB، والإبلاغ عن فشل المجموع الاختباري حين يُرجع قرص متعطل بيانات تالفة. ويحدد المستخدمون والصلاحيات من يستطيع قراءة أي الجداول أو تغييرها، ويحتفظ النسخ المتماثل (replication) بنسخ على خوادم أخرى. كما يجب على البرامج تمرير مدخلات المستخدم على شكل معاملات (parameters)، مثل العلامات ? أعلاه، لا لصقها في نص SQL، فهكذا تحدث هجمات حقن SQL.
مفاهيم خاطئة شائعة
- "SQL قاعدة بيانات." SQL هي اللغة. أما PostgreSQL و MySQL و SQLite فقواعد بيانات تفهمها.
- "NoSQL تعني عدم وجود SQL إطلاقًا." يُقرأ المصطلح عادةً على أنه "not only SQL"، أي ليس SQL فقط، ولعدة قواعد بيانات NoSQL لغات استعلام تشبه SQL، مثل CQL في Cassandra.
- "قاعدة البيانات دائمًا خادم كبير." SQLite ملف واحد يفتحه البرنامج مباشرة، دون أي خادم. وهي تعمل داخل كل هاتف Android و iOS.
- "البيانات في قاعدة البيانات آمنة إلى الأبد." تحمي قاعدة البيانات من التعطل، لا من شخص يشغّل
DELETEعن طريق الخطأ. فالنسخ الاحتياطية تظل ضرورية.
إلى أين بعد ذلك
تعلّمك دورة SQL الاستعلامات بدءًا من أول SELECT. وتغطي توثيقات SQLite الخطوات التالية: ما هي SQLite، وإنشاء جدول، والفهارس، ومنع حقن SQL. ولترى كيف تُرتَّب البيانات على القرص، اقرأ ما هو البايت، وتشرح صفحة المجموع الاختباري كيف تُكتشف الصفحات التالفة.