تم نشر متغير SQLite للاستعلامات التحليلية DuckDB 0.6.0

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

يوفر DuckDB لهجة SQL متقدمة تتضمن إمكانات إضافية للتعامل مع الاستعلامات المعقدة للغاية والمستهلكة للوقت. يتم دعم استخدام الأنواع المعقدة (المصفوفات والهياكل والاتحادات) والقدرة على تنفيذ الاستعلامات الفرعية المترابطة التعسفية والمتداخلة. وهو يدعم تشغيل استعلامات متعددة في وقت واحد، وتشغيل الاستعلامات مباشرة من ملفات CSV وParquet. من الممكن الاستيراد من PostgreSQL DBMS.

بالإضافة إلى كود الصدفة من SQLite، يستخدم المشروع محللًا من PostgreSQL في مكتبة منفصلة، ​​ومكون Date Math من MonetDB، وتنفيذه الخاص لوظائف النافذة (استنادًا إلى خوارزمية تجميع شجرة القطاع)، ومعالج التعبير العادي القائم على مكتبة RE2 ومُحسِّن الاستعلام الخاص بها وآلية التحكم MVCC للتنفيذ المتزامن للمهام (التحكم في التزامن متعدد الإصدارات)، بالإضافة إلى محرك تنفيذ الاستعلام الموجه استنادًا إلى خوارزمية تنفيذ الاستعلام Hyper-Pipelining، والتي تسمح بمجموعات كبيرة من القيم لتتم معالجتها مرة واحدة في عملية واحدة.

من بين التغييرات في الإصدار الجديد:

  • استمر العمل على تحسين تنسيق التخزين. تم تنفيذ وضع الكتابة على القرص المتفائل، حيث عند تحميل مجموعة كبيرة من البيانات في معاملة واحدة، يتم ضغط البيانات وكتابتها إلى ملف من قاعدة البيانات في وضع الدفق، دون انتظار تأكيد المعاملة باستخدام أمر COMMIT . عند تلقي أمر COMMIT، تتم كتابة البيانات بالفعل على القرص، وعند تنفيذ ROLLBACK، يتم تجاهلها. في السابق، كان يتم حفظ البيانات بالكامل في الذاكرة في البداية، وعندما يتم الالتزام بها، يتم حفظها على القرص.
  • تمت إضافة دعم للتحميل المتوازي للبيانات في جداول منفصلة، ​​مما يسمح لك بزيادة سرعة التحميل بشكل كبير على الأنظمة متعددة النواة. على سبيل المثال، في الإصدار السابق، استغرق تحميل قاعدة بيانات تحتوي على 150 مليون صف على وحدة معالجة مركزية ذات 10 نواة 91 ثانية، ولكن في الإصدار الجديد تكتمل هذه العملية في 17 ثانية. هناك وضعان للتحميل المتوازي - مع الحفاظ على ترتيب السجلات ودون الحفاظ على النظام.
  • لضغط البيانات، يتم استخدام خوارزمية FSST (جدول الرموز الثابتة السريعة)، والتي تسمح لك بحزم البيانات داخل السلاسل باستخدام قاموس مشترك للمطابقات النموذجية. أتاح استخدام الخوارزمية الجديدة تقليل حجم قاعدة بيانات الاختبار من 761 ميجابايت إلى 251 ميجابايت.
  • تم اقتراح خوارزميات الشمبانزي والباتاس لضغط أرقام الفاصلة العائمة (المزدوجة والعائمة). بالمقارنة مع خوارزمية Gorillas السابقة، توفر Chimp مستويات أعلى من الضغط وإلغاء ضغط أسرع. تتخلف خوارزمية باتاس عن Chimp في نسبة الضغط، ولكنها أسرع بكثير في سرعة إلغاء الضغط، والتي لا تختلف تقريبًا عن قراءة البيانات غير المضغوطة.
  • تمت إضافة قدرة تجريبية على تحميل البيانات من ملفات CSV إلى تدفقات متوازية متعددة (SET experience_parallel_csv=true)، مما يقلل بشكل كبير من الوقت الذي يستغرقه تحميل ملفات CSV كبيرة الحجم. على سبيل المثال، عند تمكين هذا الخيار، تم تقليل وقت تنزيل ملف CSV بحجم 720 ميجابايت من 3.5 إلى 0.6 ثانية.
  • تم تنفيذ إمكانية التنفيذ المتوازي لعمليات إنشاء وإدارة الفهرس. على سبيل المثال، تم تقليل عملية إنشاء الفهرس على عمود يحتوي على 16 مليون سجل من 5.92 إلى 1.38 ثانية.
  • تمكين موازاة عمليات التجميع في الاستعلامات التي تحتوي على التعبير "COUNT(DISTINCT col)".
  • أضافت SQL دعمًا لنوع UNION، والذي يسمح بربط أنواع متعددة بعنصر واحد (على سبيل المثال، "UNION(num INT, error VARCHAR))").
  • يوفر SQL القدرة على تشكيل الاستعلامات التي تبدأ بالكلمة "من" بدلاً من "تحديد". في هذه الحالة، من المفترض أن الاستعلام يبدأ بـ "SELECT *".
  • أضافت SQL دعمًا لتعبير COLUMNS، والذي يسمح لك بإجراء عملية على أعمدة متعددة دون تكرار التعبير. على سبيل المثال، "SELECT MIN(COLUMNS(*)) from obs;" سيؤدي إلى تنفيذ وظيفة MIN لكل عمود في جدول obs، و"SELECT COLUMNS('val[0-9]+') from obs;" للأعمدة التي يتكون اسمها من "val" وأرقام.
  • تمت إضافة دعم للعمليات على القوائم، على سبيل المثال، "SELECT [x + 1 for x in [1, 2, 3]] AS l;".
  • تم تحسين استهلاك الذاكرة. افتراضيًا، يستخدم نظام Linux مكتبة jemalloc لإدارة الذاكرة. تم تحسين أداء عمليات دمج التجزئة بشكل ملحوظ عندما تكون الذاكرة محدودة.
  • تمت إضافة وضع الإخراج ".mode duckbox" إلى واجهة سطر الأوامر، والذي يتجاهل الأعمدة الوسطى مع مراعاة عرض النافذة الطرفية (مناسب للتقييم السريع لنتائج الاستعلامات مع عدد كبير من الأعمدة، مثل "SELECT *" FROM tbl"، والتي تنتشر في الوضع العادي على عدة أسطر). باستخدام المعلمة ".maxrows X"، يمكنك بالإضافة إلى ذلك تحديد عدد الصفوف المعروضة.
  • توفر واجهة سطر الأوامر (CLI) الإكمال التلقائي للمدخلات مع مراعاة السياق (تم إكمال إدخال الكلمات الأساسية وأسماء الجداول والوظائف وأسماء الأعمدة وأسماء الملفات).
  • تحتوي واجهة سطر الأوامر (CLI) على مؤشر تقدم الاستعلام ممكّنًا بشكل افتراضي.

المصدر: opennet.ru

إضافة تعليق