Database File
ملف DB حاوية قاعدة بيانات، وفي الغالب الأعم هو قاعدة بيانات SQLite — محرّك قواعد البيانات الأكثر انتشاراً في العالم. كل هاتف ذكي وكل متصفح وكل نظام تشغيل حديث يحتوي مئات ملفات .db. هذه صفحة مرجعية فقط.
ملفات قواعد البيانات تحتاج محرّك قاعدة البيانات الأصلي للوصول الفعّال. ملفات SQLite .db يمكن الاستعلام عنها بأداة sqlite3 أو DB Browser for SQLite. راجع أوامر CLI في المرجع التقني أدناه لتصدير البيانات إلى CSV أو SQL.
أسئلة شائعة
ما هو ملف DB؟
ملف DB حاوية قاعدة بيانات، والأغلب هو قاعدة بيانات SQLite. SQLite يخزّن الجداول والفهارس والمشغّلات والبيانات في ملف ثنائي محمول واحد. أكثر من تريليون قاعدة بيانات SQLite نشطة عبر الهواتف الذكية والمتصفحات وأنظمة التشغيل حول العالم.
كيف أفتح ملف DB؟
استخدم DB Browser for SQLite للحصول على واجهة مرئية مجانية، أو DBeaver كأداة قواعد بيانات عالمية. كلاهما متاح على Windows و macOS و Linux. لملفات .db غير SQLite، حدّد التطبيق المُنشئ أولاً بفحص البايتات السحرية في بداية الملف.
هل كل ملف DB هو قاعدة بيانات SQLite؟
لا. بينما أغلب ملفات .db هي SQLite، يُستخدم الامتداد أيضاً من Berkeley DB ومخبأ الصور المصغّرة Thumbs.db في Windows ومحركات قواعد بيانات أخرى. افحص أول بايتات الملف: قواعد بيانات SQLite تبدأ دائماً بالنص ASCII "SQLite format 3" عند البايت صفر.
هل يمكنني استعادة بيانات من ملف DB تالف؟
لملفات SQLite، أمر PRAGMA integrity_check يحدد الضرر البنيوي. أمر .recover يصدّر جميع الصفوف القابلة للاستعادة كتعليمات SQL. للتلف الشديد، أدوات طرف ثالث تبحث عن أنماط خلايا صالحة خارج بنية B-tree.
لماذا يحتوي مجلد Windows على ملف Thumbs.db؟
Windows يُنشئ Thumbs.db لتخبئة الصور المصغّرة لمحتويات المجلد لعرض أسرع في مستكشف الملفات. هو مستند OLE مركّب وليس قاعدة بيانات معيارية. حذفه آمن لكن Windows قد يُعيد إنشاءه عند تصفح المجلد مجدداً.
ما الحجم الأقصى لقاعدة بيانات SQLite؟
الحد النظري الأقصى حوالي 281 تيرابايت: أكثر من أربعة مليارات صفحة بحجم 65536 بايت لكل صفحة. عملياً، قواعد بيانات بحجم عشرات الغيغابايتات تعمل بشكل جيد. الأداء يعتمد على حجم الصفحة واستراتيجية الفهرسة وتفعيل وضع WAL.
هل يُحوّل FileDex ملفات DB؟
لا. ملفات قواعد البيانات تحتاج محرّك قاعدة البيانات الأصلي للوصول الفعّال. لقواعد بيانات SQLite، استخدم DB Browser for SQLite أو أداة سطر الأوامر sqlite3 لتصدير الجداول إلى CSV أو تفريغ المخطط والبيانات كاملة كنص SQL.
ما يميز .DB
ملف DB امتداد عام تستخدمه عدة محركات قواعد بيانات لتخزين بيانات مُهيكلة. الغالبية العظمى من ملفات .db اليوم هي قواعد بيانات SQLite. صمّم D. Richard Hipp محرّك SQLite ربيع عام 2000 أثناء عمله في عقد للبحرية الأمريكية لدى General Dynamics. المشكلة الأصلية كانت نظام مراقبة أضرار على متن مدمّرات صاروخية موجّهة يعتمد على خادم Informix — عندما ينهار الخادم يتوقف التطبيق بالكامل. حلّ Hipp كان محرّك قاعدة بيانات لا يحتاج خادماً ولا إعداداً ولا مدير نظام، يخزّن كل شيء في ملف واحد عادي.
اكتشف التفاصيل التقنية
الإصدار 1.0 صدر في 17 أغسطس 2000 واستخدم gdbm كمحرّك تخزين. الإصدار 2.0 تبعه في سبتمبر 2001 مستبدلاً gdbm بتطبيق B-tree مخصص مع دعم المعاملات (Transactions). الإصدار 3.0 وصل في يونيو 2004 بتمويل من America Online مُقدّماً كتابة الأنواع الضمنية (Manifest Typing) ودعم الترميزات الدولية وبنية الترويسة من 100 بايت التي تُعرّف كل ملف SQLite .db يُكتب منذ ذلك الحين.
تريليون قاعدة بيانات
SQLite هو محرّك قواعد البيانات الأكثر نشراً في العالم. المشروع يُقدّر وجود أكثر من تريليون (1e12) قاعدة بيانات SQLite نشطة. كل هاتف Android وكل iPhone وكل Mac وكل جهاز Windows 10 وأحدث وكل متصفح Firefox و Chrome و Safari يحتوي SQLite. مطوّرو SQLite يصفونه بأنه "على الأرجح ثاني أكثر مكتبة برمجية انتشاراً بعد libz".
تطبيق واحد على هاتف واحد قد يحتوي عشرات ملفات .db. Chrome يخزّن سجل التصفح والكوكيز والأيقونات وبيانات الملء التلقائي في قواعد بيانات SQLite منفصلة. WhatsApp يخزّن سجل الرسائل في msgstore.db. Signal يخزّن قاعدة رسائله المشفّرة في signal.db. عندما يفحص محقق رقمي جهازاً محمولاً، الخطوة الأولى عادةً هي فهرسة ملفات .db وفتحها — فهي تحتوي الحياة الرقمية للمستخدم.
بنية ملف SQLite
كل قاعدة بيانات SQLite تبدأ بترويسة من 100 بايت. أول 16 بايت هي السلسلة النصية ASCII "SQLite format 3" متبوعة ببايت فارغ (hex: 53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00). هذه البصمة السحرية تجعل التعريف قاطعاً — لا يستخدمها أي محرّك قواعد بيانات آخر.
البايتات 16-17 تخزّن حجم الصفحة كعدد صحيح 16 بت big-endian. القيم الصالحة هي أس 2 من 512 إلى 32768، مع القيمة الخاصة 1 التي تعني 65536. الحجم الافتراضي منذ SQLite 3.12.0 (2016) هو 4096 بايت. قاعدة البيانات بالكامل مقسّمة إلى صفحات ثابتة الحجم.
البايت 18 هو إصدار صيغة الكتابة: 1 لسجل التراجع التقليدي (Rollback Journal)، و 2 لوضع WAL (Write-Ahead Logging). وضع WAL أُضيف في SQLite 3.7.0 (2010) ويسمح بقراءات متزامنة بينما كاتب واحد يُلحق التغييرات بملف -wal منفصل.
البايتات 56-59 تخزّن ترميز النص: 1 لـ UTF-8، و 2 لـ UTF-16LE، و 3 لـ UTF-16BE. الترميز يُحدد عند إنشاء قاعدة البيانات ولا يمكن تغييره. البايتات 96-99 تسجّل رقم إصدار مكتبة SQLite التي عدّلت الملف أخيراً.
غموض الامتداد
امتداد .db ليس حكراً على جهة واحدة. بينما يهيمن SQLite، الحروف الثلاث نفسها تظهر على ملفات من أنظمة مختلفة تماماً.
Berkeley DB أُنشئ في جامعة UC Berkeley بواسطة Margo Seltzer و Keith Bostic، وصدر أولاً عام 1991 ضمن 4.4BSD. هو مخزن مفتاح-قيمة مدمج وليس قاعدة بيانات علائقية. Sleepycat Software تولّت تطويره تجارياً عام 1996 بعد طلب من Netscape. Oracle استحوذت على Sleepycat في فبراير 2006 وغيّرت الرخصة إلى AGPL v3 عام 2013 مما قلّص الاعتماد عليه بشكل حاد.
Windows Thumbs.db هو مستند OLE مركّب يحفظ صوراً مصغّرة لمحتويات المجلد. ظهر مع Internet Explorer 4 لنظام Windows 95-98 واستمر حتى Windows XP. بدءاً من Windows Vista، نقلت Microsoft التخزين المؤقت للصور المصغّرة إلى موقع مركزي (thumbcache_xxx.db). ملفات Thumbs.db لها أهمية جنائية: مكتب التحقيقات الفيدرالي استخدمها كدليل في قضية عام 2008 لأن المخبأ يكشف عن الصور التي شوهدت سابقاً حتى بعد حذف الأصول.
كيف تحدد نوع ملف .db مجهول
أول بايتات الملف تكشف المصدر:
- بايتات تبدأ بـ 53 51 4C 69 74 65 ("SQLite") في الموضع 0 = قاعدة بيانات SQLite
- بايتات تبدأ بـ D0 CF 11 E0 في الموضع 0 = مستند OLE مركّب (Thumbs.db أو مشابه)
- توقيعات أخرى = Berkeley DB أو صيغ خاصة بتطبيقات
السياق يساعد أيضاً. ملف .db على جهاز Android أو iOS هو بشبه يقين SQLite. ملف Thumbs.db في مجلد Windows هو مخبأ صور مصغّرة.
التلف والاستعادة
قواعد بيانات SQLite قد تتلف بسبب: انقطاع الكتابة أثناء معاملة، حذف ملف WAL أو Journal أثناء فتح قاعدة البيانات، نسخ الملف أثناء عملية كتابة جارية، امتلاء القرص أثناء الكتابة، أو استضافة الملف على أقراص شبكية حيث يفشل القفل بصمت.
أمر PRAGMA integrity_check يفحص كل صفحة B-tree ويتحقق من سلامة البنية والمجاميع الاختبارية ومحاذاة الفهارس. يعيد "ok" إذا لم يجد تلفاً. للملفات التالفة، أمر .recover (أُضيف في SQLite 3.29.0) يصدّر جميع البيانات القابلة للاستعادة كتعليمات SQL.
ACID والتزامن
SQLite يوفر توافقاً كاملاً مع معايير ACID — الذرية والاتساق والعزل والمتانة — عبر آلية السجل. في وضع Rollback Journal، محتويات الصفحة الأصلية تُكتب في ملف -journal منفصل قبل التعديل. في وضع WAL، الصفحات الجديدة تُلحق بملف -wal ويستمر القرّاء في رؤية الحالة السابقة حتى يُنهي الكاتب المعاملة.
قيد الكاتب الواحد هو القيد المعماري الأبرز في SQLite. اتصال واحد فقط يستطيع الكتابة في كل لحظة. هذا يجعل SQLite غير مناسب لأحمال الخوادم ذات التزامن العالي لكنه مثالي للتخزين المحلي للتطبيقات.
ملكية عامة والتزام طويل الأمد
شفرة SQLite المصدرية ملكية عامة (Public Domain) — ليست مجرد مفتوحة المصدر بل مُهداة صراحةً بلا أي قيود حقوق نشر. المساهمون يوقّعون إقراراً بإهداء عملهم للملكية العامة. مكتبة الكونغرس تعترف بـ SQLite كأحد أربع صيغ موصى بها للتخزين طويل الأمد لمجموعات البيانات. مطوّرو SQLite أعلنوا نيتهم صيانة البرنامج وصيغة الملف حتى عام 2050.
مقارنة .DB مع البدائل
| المقارنة | المعيار | الفائز |
|---|---|---|
| .DB (SQLITE) vs .MDB | متطلبات الخادم SQLite بلا خادم — المحرّك يعمل كمكتبة مرتبطة بالتطبيق. MDB (Microsoft Access) يحتاج محرّك Access Database أو تثبيت Access الكامل على Windows. SQLite يعمل على كل المنصات. | DB (SQLITE) أفضل |
| .DB (SQLITE) vs .MDB | دعم المنصات المتعددة SQLite يعمل على Windows و macOS و Linux و iOS و Android وكل منصة مدمجة. MDB مقتصر على Windows ويحتاج برامج تشغيل Microsoft حتى للقراءة فقط. | DB (SQLITE) أفضل |
| .DB (SQLITE) vs .CSV | قدرات الاستعلام SQLite يدعم SQL الكامل: JOIN و استعلامات فرعية و تجميع و فهارس و معاملات. CSV نص مسطّح بلا محرّك استعلام — يجب تحميله بالكامل في الذاكرة ومعالجته برمجياً. | DB (SQLITE) أفضل |
| .DB (SQLITE) vs .CSV | سهولة القراءة البشرية CSV نص عادي يُقرأ في أي محرر نصوص أو جدول بيانات. ملفات SQLite .db ثنائية وتحتاج أداة تفهم SQLite للفحص. لتبادل البيانات الجدولية البسيطة، CSV أسهل وصولاً. | CSV أفضل |
| .DB (SQLITE) vs .تفريغ SQL | قابلية النقل بين محركات قواعد البيانات تفريغ SQL يحتوي تعليمات SQL معيارية تستوردها أغلب محركات قواعد البيانات مع تعديلات بسيطة في البنية. ملف .db مقيّد بـ SQLite — PostgreSQL و MySQL لا يستطيعان قراءته مباشرة. | تفريغ SQL أفضل |
| .DB (SQLITE) vs .تفريغ SQL | أداء الاستعلام ملف SQLite .db قاعدة بيانات حيّة مع فهارس وأشجار B-tree وتخطيط صفحات محسّن. تفريغ SQL يحتاج إعادة استيراد وبناء فهارس قبل أن تعمل الاستعلامات بكفاءة. | DB (SQLITE) أفضل |
المرجع التقني
- نوع MIME
application/octet-stream- المطوّر
- Various
- سنة التقديم
- 1970
- معيار مفتوح
- لا
البنية الثنائية
ملفات SQLite .db تبدأ بترويسة من 100 بايت تحتوي السلسلة السحرية "SQLite format 3\000" (16 بايت) وحجم الصفحة (2 بايت big-endian) وإصدارات صيغة الملف وعدد الصفحات وكعكة المخطط وترميز النص ورقم إصدار SQLite الذي كتب الملف أخيراً. قاعدة البيانات مقسّمة إلى صفحات ثابتة الحجم (افتراضي 4096 بايت). الصفحة 1 تحمل الترويسة وجذر جدول sqlite_master (المخطط). صفحات داخلية وورقية تشكّل أشجار B-tree للجداول (rowid B-trees) والفهارس (index B-trees). صفحات الفيض تخزّن القيم التي تتجاوز المساحة المتاحة في الصفحة.
| Offset | Length | Field | Example | Description |
|---|---|---|---|---|
0x00 | 16 بايت | السلسلة السحرية | 53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 | ASCII "SQLite format 3" متبوعة ببايت فارغ. تُعرّف الملف كقاعدة بيانات SQLite. |
0x10 | 2 بايت | حجم الصفحة | 10 00 | حجم صفحة قاعدة البيانات بالبايت (big-endian). الافتراضي 4096. أس 2 بين 512 و 65536 (القيمة 1 تعني 65536). |
0x12 | 1 بايت | إصدار صيغة الكتابة | 01 | 1 = وضع سجل التراجع التقليدي (Rollback Journal)، 2 = وضع WAL (Write-Ahead Logging). |
0x13 | 1 بايت | إصدار صيغة القراءة | 01 | 1 = تقليدي، 2 = WAL. القارئ يجب أن يدعم هذا الإصدار لفتح الملف. |
0x18 | 4 بايت | عدّاد تغيير الملف | 00 00 00 02 | يزداد مع كل تأكيد معاملة (Commit). يُستخدم لاكتشاف التغييرات وإبطال المخابئ. |
0x1C | 4 بايت | حجم قاعدة البيانات بالصفحات | 00 00 00 02 | إجمالي عدد الصفحات في ملف قاعدة البيانات (big-endian uint32). |
0x38 | 4 بايت | ترميز النص | 00 00 00 01 | 1 = UTF-8، 2 = UTF-16LE، 3 = UTF-16BE. يُحدد مرة واحدة عند الإنشاء ولا يمكن تغييره. |
0x60 | 4 بايت | SQLITE_VERSION_NUMBER | 00 2E 8A 14 | إصدار المكتبة مُشفّر كعدد صحيح (مثلاً 3050004 = SQLite 3.50.4). يُحدد أي إصدار SQLite عدّل الملف أخيراً. |
نقاط الضعف
- حقن SQL عندما تبني التطبيقات استعلامات بدمج مدخلات المستخدم مباشرة في سلاسل SQL بدون تعليمات مُحدّدة المعاملات
- بيانات حساسة مخزّنة بلا تشفير — أي شخص يملك وصولاً لنظام الملفات يستطيع قراءة الرسائل وجهات الاتصال وسجلات المكالمات وسجل التصفح من ملفات .db على الأجهزة المحمولة
- الصفوف المحذوفة تبقى في صفحات القائمة الحرة حتى تنفيذ VACUUM مما يسمح بالاستعادة الجنائية لبيانات يُفترض أنها أُزيلت
- ملفات WAL و Journal قد تحتوي كتابات حديثة حتى بعد مسح قاعدة البيانات الرئيسية
- ملفات Thumbs.db على محركات الأقراص الشبكية المشتركة تكشف أي صور شوهدت في المجلد حتى بعد حذف الصور
الحماية: FileDex لا يفتح أو يُنفّذ أو يُحلّل ملفات قواعد البيانات. هذه صفحة مرجعية فقط.