تم نشر إصدار SQLite 3.42 ، وهو نظام DBMS خفيف الوزن مصمم كمكتبة إضافية. يتم توزيع كود سكليتي في المجال العام ، أي يمكن استخدامها دون قيود ومجانية لأي غرض. يتم توفير الدعم المالي لمطوري SQLite من خلال اتحاد تم إنشاؤه خصيصًا ، والذي يتضمن شركات مثل Adobe و Oracle و Mozilla و Bentley و Bloomberg.
التغييرات الرئيسية:
- بالنسبة إلى فهارس النص الكامل لـ FTS5 ، يتم تنفيذ أمر الحذف الآمن ، والذي ينظف تمامًا جميع البيانات المتبقية بعد الحذف.
- تدعم وظائف معالجة البيانات بتنسيق JSON الآن امتدادات JSON5.
- مخطط استعلام محسّن. يتم تمكين تحسين عدد مرات المشاهدة بشكل افتراضي. تم التخلص من معالجة الأعمدة غير المستخدمة في الاستعلامات الفرعية. تحسين تنفيذ الضغط لأسفل.
- تمت إضافة خيار "- اختبار غير آمن" إلى CLI للسماح باستخدام بعض الأوامر الخطيرة مثل ".testctrl" في الاختبار. في الوضع الآمن ("--safe") ، يُسمح باستخدام الأمرين ".log on" و ".log off". تمت إضافة دعم للفاصل "-" للوسيطات التي يتم بعدها تعطيل معالجة الخيار. تمت إضافة معلمات ": inf" و ": nan" المرتبطة بقيم اللانهاية و NaN.
- يُسمح لأسماء وظائف SQL المعرفة بالتطبيق بالتقاطع مع الكلمات الأساسية CROSS و FULL و INNER و LEFT و NATURAL و OUTER و RIGHT.
- توسيع قدرات PRAGMA Integration_check. التحقق الإضافي لتحديد قيمة NaN في الأعمدة ذات الشرط NOT NULL. محتوى معلومات محسن لرسائل الخطأ.
- تسمح إضافة الجلسة باعتراض التغييرات من الجداول بدون ROWIDs.
- تمت إضافة معدِّل "subec" إلى الوظائف للعمل مع الوقت والتواريخ لاستخدام كسور الثواني.
- تم تقليل عمق التكرار الافتراضي للمصفوفات وكائنات JSON من 2000 إلى 1000.
بالإضافة إلى ذلك ، تم تشكيل إصدار DuckDB 0.8.0 DBMS ، والذي يطور متغير SQLite ، معززًا بالميزات والتحسينات لأداء الاستعلامات التحليلية التي تغطي جزءًا كبيرًا من البيانات المخزنة ، على سبيل المثال ، تجميع محتويات الجداول بالكامل أو دمج عدة طاولات كبيرة. يتم توفير لهجة موسعة للغة SQL ، بما في ذلك إمكانات إضافية للتعامل مع الاستعلامات المعقدة للغاية وطويلة الأمد ، بالإضافة إلى دعم الأنواع المعقدة (المصفوفات ، والهياكل ، والنقابات) ، والتنفيذ المتزامن لاستعلامات متعددة ، وتنفيذ الاستعلامات مباشرة من ملفات بتنسيق CSV و JSON و Parquet. من الممكن الاستيراد من PostgreSQL DBMS.
بالإضافة إلى كود القشرة من SQLite ، يستخدم المشروع محللًا من PostgreSQL ، تم نقله إلى مكتبة منفصلة ، ومكون Date Math من MonetDB ، وتنفيذه الخاص لوظائف النافذة (استنادًا إلى خوارزمية Segment Tree Aggregation) ، ومعالج تعبير عادي استنادًا إلى مكتبة RE2 ، ومحسن الاستعلام الخاص بها ، وآلية التحكم في MVCC ، التنفيذ المتزامن للمهام (التحكم في التزامن متعدد الإصدارات) ، بالإضافة إلى محرك تنفيذ استعلام متجه يعتمد على خوارزمية Hyper-Pipelining Query Execution ، والتي تسمح بمعالجة مجموعات كبيرة من القيم مرة واحدة في عملية واحدة. يتم توزيع كود المشروع بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.
في الإصدار الجديد من DuckDB:
- تمت إضافة تعابير جديدة "PIVOT" و "UNPIVOT" لتحويل الصفوف إلى أعمدة والعكس صحيح.
- تحسين الموازاة عند استيراد وتصدير البيانات. بشكل افتراضي ، يتم تنفيذ القراءة من الملفات بتنسيق CSV إلى تدفقات متعددة والكتابة متعددة الخيوط عند استخدام تنسيقات Parquet و CSV و JSON.
- تمت إضافة عامل التشغيل "**" للتكرار المتكرر على الدلائل عند تحديد مسارات الملفات (على سبيل المثال من "" data / glob / crawl / stackoverflow / ** / *. csv '؛ ").
- دعم إضافي لعمليات الدمج (JOIN) للبيانات في شكل سلسلة زمنية (شرائح من قيم المعلمات في فترات زمنية محددة) ، حيث لا يكون معيار دمج السجلات هو المطابقة التامة ، بل هو تطابق تقريبي للقيم في حقل مع الوقت (على سبيل المثال ، يمكنك دمج السجلات ، والوقت الذي يختلف بما لا يزيد عن دقيقة واحدة).
- تم تنفيذ التحميل المؤجل للبيانات الوصفية لقاعدة البيانات ، مما جعل من الممكن تسريع إطلاق DBMS بعشرات المرات.
- دعم إضافي لتوصيل الوظائف المخصصة في Python.
- تمت إضافة دعم لواجهة برمجة تطبيقات ADBC (Arrow Database Connectivity) لنقل البيانات باستخدام Apache Arrow.
- تم تنفيذ الربط للتكامل مع كود Swift.
- تم تغيير سلوك عامل القسمة ("/") ، والذي يقوم الآن بحسابات الفاصلة العائمة افتراضيًا بدلاً من عمليات الأعداد الصحيحة. تم اقتراح عامل جديد "//" لتقسيم عدد صحيح. يمكن إرجاع السلوك القديم من خلال ضبط "SET Integer_division = true؛".
- طريقة حساب السجلات الفارغة عند تغيير الفرز من "NULLS FIRST" إلى "NULLS LAST" ، أي سيتم الآن عرض قيم NULL في نهاية القائمة بدلاً من بداية القائمة. يمكن استعادة السلوك القديم باستخدام الإعداد "SET default_null_order = 'nulls_first'؛".
بالإضافة إلى ذلك ، يمكن ملاحظة مشروع CG / SQL الذي طوره Facebook ، والذي يوفر منشئ رمز لاستخدام الإجراءات المخزنة مع SQLite. يتيح لك CG / SQL تصميم الإجراءات المخزنة بلهجة خاصة لـ T-SQL (Transact-SQL) ، مما يسمح لك باستدعاء وظائف مكتبة C القياسية والوصول إلى البيانات في SQLite. يتم تجميع الإجراءات المخزنة التي تم إنشاؤها في كود C الذي يستخدم SQLite C API لأداء إجراءات محددة ومعالجة الاستعلامات المعقدة. يمكن ربط الإجراءات المخزنة المجمعة ببرامج C و Java و Objective-C. رمز المشروع مكتوب بلغة C ويتم توزيعه بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.
المصدر: opennet.ru
