يتجه DuckDB 2.0 نحو إصدار في فصل الخريف، وقد أصبحت نسخة ألفا متاحة بالفعل. اختبرت MotherDuck أبرز الميزات على حاسوب محمول واحد من طراز M5 وعلى Amazon S3 لقياس ما يتغير فعلياً بالنسبة للمطورين الذين يبنون الجداول وخطوط المعالجة، لا للمهندسين الذين يكتبون قاعدة البيانات نفسها.
الخلاصة من هذا الاختبار: DuckDB 2.0 أسرع، لكن المكاسب تعتمد بشكل كبير على طريقة تنظيم بياناتك. ثلاث ميزات تقف وراء معظم التحسن، وواحدة فقط منها لا تتطلب أي تعديل على استعلاماتك.
الإدخال/الإخراج غير المتزامن يجعل قراءات S3 أسرع مرتين إلى ثلاث
أسهل ترقية هي طبقة الإدخال/الإخراج المعاد كتابتها. في الاختبار، استعلام يقرأ ملف Parquet بحجم 2.2 غيغابايت على S3 — تصويتات Stack Overflow، 228 مليون صف موزعة على 2268 مجموعة صفوف — تسارع بشكل ملحوظ دون تغيير سطر واحد من SQL.
تعتمد الآلية على فصل العمل الشبكي عن عمل المعالج. في الإصدارات السابقة، كان كل خيط عمل ينزّل مجموعة صفوف، ينتظر، يفك ترميزها، ثم ينزّل التالية، فتبقى المعالجات خاملة أثناء النقل. في الإصدار 2.0، يتولى مجمع خيوط منفصل التنزيل فقط، مبقياً عشرات مجموعات الصفوف قيد النقل، بينما تقتصر خيوط العمل على فك الترميز.
إعداد واحد يتحكم في هذا السلوك: read_ahead_depth، الذي يخبر مجمع التنزيل بعدد مجموعات الصفوف التي يجب جلبها مسبقاً. قيمته الافتراضية -1، أي تلقائي ويُحدد حسب عدد الخيوط، لذا الميزة مفعّلة منذ التثبيت. تعيينه إلى 0 يعيد السلوك القديم.
تشير MotherDuck إلى تحفظ: مجموعات البيانات المقسمة إلى آلاف الملفات الصغيرة بحجم 1 ميغابايت لكل ملف لا تستفيد بشكل ملموس، لأن عنق الزجاجة هنا هو الرحلات ذهاباً وإياباً لكل ملف، وهو ما لا يمكن للقراءة المسبقة إزالته. تخزين بحيرة بيانات بهذه الطريقة يبقى ممارسة سيئة.
CTE التكراري: من المخططات التنظيمية إلى سجل git
أعاد فريق DuckDB كتابة محرك CTE التكراري ويدّعي تسريعاً يصل إلى 40 ضعفاً في إمكانية الوصول إلى الرسوم البيانية. CTE التكراري هو أساساً حلقة على جدول، يُستخدم في المخططات التنظيمية، وأشجار المجلدات، وقوائم المواد، وسلاسل الردود، وتتبع أصل البيانات، وسجل git.



