تم نشر إصدار SQLite 3.45، وهو نظام إدارة قواعد بيانات خفيف الوزن مصمم كمكتبة إضافية. يتم توزيع كود SQLite كمجال عام، أي. ويمكن استخدامها دون قيود ومجانا لأي غرض من الأغراض. يتم توفير الدعم المالي لمطوري SQLite من خلال اتحاد تم إنشاؤه خصيصًا، والذي يضم شركات مثل Bentley وBloomberg وExpensify وNavigation Data Standard.
التغييرات الرئيسية:
- تمت إعادة كتابة جميع وظائف SQL للعمل بتنسيق JSON ونقلها إلى تنسيق شجرة التحليل الداخلي الجديد JSONB، والذي يتم تسلسله ويمكن تخزينه في قاعدة البيانات لتجنب التحليل المتكرر عند استخدام قيم JSON. تعمل الإصدارات الجديدة من وظائف إنشاء JSON الآن على إنشاء تنسيق ثنائي JSONB بدلاً من تنسيق النص. تمت إضافة وسيطة ثانية اختيارية إلى وظيفة json_valid()، والتي من خلالها يمكنك تحديد قناع البت الذي يحدد خصائص JSON الصالحة (على سبيل المثال، إذا حددت 0x04، فسيتم التعرف على JSONB blob على أنه صالح، إذا حددت 0x01، اكتب JSON بتنسيق RFC-8259، وإذا حددت 0x05، فكلا الخيارين).
- تمت إضافة خيار البيانات المميزة إلى الجدول الافتراضي FTS5 المستخدم للبحث عن النص الكامل، مما يسمح باستخدام الرموز المميزة المخصصة.
- افتراضيًا، يتم تمكين تحسين SQLITE_DIRECT_OVERFLOW_READ، حيث تتم قراءة الصفحات الفائضة الأكبر من حجم صفحة b-tree القياسي من الملف مباشرة، متجاوزة ذاكرة التخزين المؤقت. لتعطيله أثناء الإنشاء، يمكنك استخدام الخيار "-DSQLITE_DIRECT_OVERFLOW_READ=0".
- قام مخطط الاستعلام بتحسين كفاءة تحسين القيود العابرة وتحسين القدرة على تجاهل الفهارس التي تم اكتشاف أنها ذات جودة رديئة عند إجراء عملية تحليل.
- لقد حسّنت واجهة سطر الأوامر من عرض المحتوى المشفر بنظام UTF-8 على النظام الأساسي. Windowsتم الآن تنفيذ الكشف التلقائي عن استخدام واجهة سطر الأوامر عند تشغيل البرامج النصية .dump وإجراء التغييرات المناسبة على الإعدادات، مثل إيقاف الحماية الدفاعية لملف .dbconfig وتشغيل dqs_dll لملف .dbconfig.
- تمت إضافة خاصية SQLITE_RESULT_SUBTYPE إلى وظائف SQL المحددة من جانب التطبيق، والتي تسمح باستدعاء sqlite3_result_subtype() من الوظيفة لفحص أنواع الوسائط الفرعية.
بالإضافة إلى ذلك، يمكننا ملاحظة التطوير في الإصدارات التجريبية من SQLite لوضع تسجيل المعاملات الجديد - WAL2 ("PRAGMA Journal_mode = wal2")، والذي يستخدم ملفين wal ("database-wal" و"database-wal2") بدلاً من ملف واحد . عند كتابة البيانات إلى قاعدة البيانات، تتم إضافة بيانات جديدة إلى ملف wal الأول. إذا وصل ملف الو الأول إلى حجم كبير بما فيه الكفاية، فإنه يتحول إلى الكتابة إلى الملف الثاني. بعد التبديل إلى ملف wal الثاني، يصبح الملف الأول متاحًا لإجراء التغييرات (نقطة التفتيش) والكتابة فوقه. وعليه، عندما يصل ملف الوول الثاني إلى حجم كبير، فإنه يتحول إلى الملف الأول، وما إلى ذلك، مما يحل مشكلة النمو غير المنضبط لملف الوول في الحالات التي لا يتم فيها الالتزام بالمعاملة لفترة طويلة أو تكون عمليات القراءة طويلة إجراء.
المصدر: opennet.ru
