قاعدة بيانات عمرها ٥٠٠٠ عام: هل هي أكثر موثوقية من قواعد البيانات الحديثة؟

2025-09-06

أدت صورة لقاعدة بيانات سومرية عمرها ٥٠٠٠ عام إلى تفكير المؤلف في الحد الأعلى لتخزين التواريخ في قواعد البيانات. تُظهر الصورة قاعدة بيانات من عام ٣١٠٠ قبل الميلاد تسجل حسابات الشعير والشيلم، بموثوقية تتجاوز بكثير قواعد البيانات الحديثة. كشفت الاختبارات أن MySQL لا يمكنه تخزين التواريخ التي تسبق عام ٤٧١٣ قبل الميلاد، بينما يمكن لـ PostgreSQL و SQLite القيام بذلك. هذا دفع المؤلف إلى التساؤل عن كيفية تخزين تواريخ أقدم، مثل سجلات القطع الأثرية في المتاحف، واقترح حلولًا مثل استخدام طوابع زمنية للعصر أو أنظمة مخصصة.

اقرأ المزيد
(avi.im)
التطوير

هل يمكن للقواعد البيانات استبدال ذاكرة التخزين المؤقت بالكامل؟

2025-08-31

تتناول هذه المشاركة إمكانية استبدال قواعد البيانات لذاكرة التخزين المؤقت بالكامل. في حين أن قواعد البيانات توفر بعض إمكانيات التخزين المؤقت مثل مجموعات المخزن المؤقت ونسخ القراءة، إلا أن ذاكرة التخزين المؤقت تتفوق في الوصول إلى البيانات منخفضة الكمون، خاصةً بالنسبة لمجموعات البيانات الفرعية المحددة والبيانات المحسوبة مسبقًا. لاستبدال ذاكرة التخزين المؤقت، تحتاج قواعد البيانات إلى معالجة العديد من التحديات: معالجة العديد من نسخ القراءة بكفاءة، وتمكين نسخ القراءة الجزئية، وترتيب أولويات البيانات المحددة، وتنفيذ آلية فعالة لصيانة العرض المتزايدة (IVM). يقترح الكاتب أن الجمع بين IVM ونسخ القراءة الجزئية قد يسمح في النهاية لقواعد البيانات باستبدال ذاكرة التخزين المؤقت جزئيًا، ولكن لا تزال هناك فجوة.

اقرأ المزيد
(avi.im)
التطوير نسخ القراءة

وضع WAL في SQLite: التوازن بين المتانة والأداء

2025-08-24

يُستخدم وضع WAL (سجل الكتابة المسبقة) في SQLite غالبًا لتحقيق إنتاجية كتابة أعلى، لكنه يُحارب متانة البيانات مقارنةً بوضع السجل الافتراضي. تتحكم خاصية pragma `synchronous` في عدد مرات استدعاء fsync، والقيمة الافتراضية هي NORMAL. في الوضع NORMAL، يتم مزامنة ملفات WAL قبل كل نقطة تفتيش، وملف قاعدة البيانات بعدها، لكن معظم المعاملات تفتقر إلى عمليات المزامنة. بالنسبة للتطبيقات التي لا تعتبر فيها المتانة أمرًا بالغ الأهمية، يكون الوضع NORMAL كافيًا. لتحقيق متانة مضمونة في حالة انقطاع التيار الكهربائي، فإن `synchronous=FULL` يضيف مزامنة ملف WAL بعد كل عملية تأكيد معاملة، مما يزيد من المتانة على حساب سرعة الكتابة. هذا التفسير، الذي جاء نتيجةً لمخاوف بشأن احتمال تضحية SurrealDB بالمتانة من أجل أداء الاختبارات المعيارية، يُوضح نهج SQLite.

اقرأ المزيد
(avi.im)

مشكلة مجموع التحقق في وضع WAL في SQLite: فقدان البيانات الصامت

2025-07-25

تتناول هذه المشاركة عيبًا في آلية مجموع التحقق في SQLite في وضع تسجيل الكتابة المسبقة (WAL). عندما يحدث عدم تطابق في مجموع التحقق في إطار WAL، يقوم SQLite بإسقاط الإطار المعيب وجميع الأطر اللاحقة بصمت، حتى لو لم تكن تالفة. هذا التصميم، على الرغم من أنه متعمد، يؤدي إلى فقدان محتمل للبيانات. يحلل المؤلف الأسباب الكامنة و يقترح أن يقوم SQLite بإصدار خطأ عند اكتشاف التلف بدلاً من إسقاط البيانات بصمت، مما يحسن من سلامة البيانات. تناقش المناقشة أيضًا سياق استخدام SQLite في الأنظمة المضمنة والأجهزة المحمولة، حيث يكون التلف أكثر شيوعًا.

اقرأ المزيد
(avi.im)
التطوير

SQLite: أسطورة قاعدة البيانات المذهلة

2024-12-30

SQLite، قاعدة البيانات الأكثر انتشارًا في العالم، تُديرها مجموعة مكونة من ثلاثة أشخاص، وترفض المساهمات الخارجية، ومع ذلك، فقد غزت العالم بأدائها الاستثنائي واستقرارها. وُلدت على متن سفينة حربية أمريكية لحل مشاكل تعطل الخادم، وأصبحت الآن حجر الزاوية لمليارات قواعد البيانات. SQLite ليست مفتوحة المصدر، بل هي برنامج عام، مع قيود أقل من أي ترخيص مفتوح المصدر. وتضمن عملية الاختبار الصارمة، التي تحاكي حتى المواقف القصوى مثل تعطل نظام التشغيل، موثوقيتها العالية بشكل لا يصدق. ومع ذلك، فإن نموذج أعمالها الفريد - توليد الإيرادات من خلال الدعم المدفوع والعضويات - جدير بالملاحظة أيضًا. تكمن أسطورة SQLite ليس فقط في براعتها التقنية، ولكن أيضًا في المثابرة والابتكار وراءها.

اقرأ المزيد
(avi.im)
التطوير أسطورة

مرشحات بلوم: سر جعل SQLite أسرع بعشرة أضعاف

2024-12-22

استخدم الباحثون مرشحات بلوم بذكاء لجعل استعلامات SQLite التحليلية أسرع بعشرة أضعاف. اكتشفوا أن عمليات الانضمام حلقة متداخلة في SQLite غير فعالة، حيث تم إنفاق الكثير من الوقت في عمليات البحث عن شجرة B. باستخدام مرشح بلوم قبل عملية الانضمام لتصفية الصفوف التي من غير المحتمل أن تتطابق بسرعة، ثم إجراء عمليات البحث عن شجرة B فقط على التطابقات المحتملة، تم تقليل عدد عمليات البحث بشكل كبير. تتميز مرشحات بلوم بانخفاض تكلفة الذاكرة وكانت سهلة التكامل في محرك الاستعلامات الحالي لـ SQLite، مما أدى إلى تحسين كبير في الأداء. تم دمج هذا التحسين في SQLite الإصدار 3.38.0.

اقرأ المزيد
(avi.im)

إعادة كتابة SQLite بلغة Rust: يحقق Limbo انخفاضًا بنسبة 100 ضعف في زمن الوصول

2024-12-16

قام باحثون من جامعة هلسنكي وكامبريدج بإعادة كتابة SQLite بلغة Rust، وخلقوا مشروعًا يسمى Limbo، والذي يستخدم مدخلات/مخرجات غير متزامنة و io_uring لتحسين الأداء بشكل كبير. من خلال استخدام مدخلات/مخرجات غير متزامنة وتجزئة التخزين، حقق Limbo انخفاضًا يصل إلى 100 ضعف في زمن الوصول، وهو أمر مفيد بشكل خاص في بيئات الخوادم عديمة الخدمة متعددة المستأجرين. يأتي التحسين الرئيسي من استبدال تعليمات بايت كود متزامنة بنظائرها غير المتزامنة، مما يلغي عمليات الحظر ويعزز التزامن. تكون التحسينات أكثر وضوحًا في النسب المئوية العالية، مما يجعل Limbo مثاليًا للتطبيقات التي تتطلب موثوقية عالية.

اقرأ المزيد
(avi.im)