العودة
Polars 2.0 صدر: محرك البث الافتراضي، دعم out-of-core وSQL كامل المزايا
SiTech AI Team2 دقيقة قراءة

Polars 2.0 صدر: محرك البث الافتراضي، دعم out-of-core وSQL كامل المزايا

صدر Polars 2.0. الإصدار يفعّل افتراضيًا محرك البث والتفريغ على القرص (out-of-core spilling)، ويضيف نوع Map، ويعترف بـ SQL كمواطن كامل المزايا ويزيد الصرامة من أجل تغذية راجعة أسرع.

البث وout-of-core افتراضيًا

استدعاء collect على LazyFrame يستخدم الآن محرك البث افتراضيًا، مما يوفر، وفقًا للفريق، تحسينات ضخمة في الذاكرة والأداء لمعظم الاستعلامات. وبما أن محرك البث لا يوفر افتراضيًا ضمان ترتيب الصفوف في عمليات مثل join وgroup_by وunpivot، فقد تطلب التغيير تحديث الإصدار الأساسي. يمكن للمستخدمين الذين يحتاجون إلى ترتيب ثابت للصفوف تفعيل maintain_order=True.

دعم out-of-core، أي التفريغ على القرص، مفعّل افتراضيًا ويبدأ تقريبًا من 80 بالمئة من ذاكرة RAM. يمكن الآن لعمليات مثل sort ودوال window والعديد من التعبيرات الانتقال إلى القرص لإكمال الاستعلام، بميزانية قرص افتراضية تبلغ 64GB. عمليات join وgroup-by من نوع out-of-core مخطط لها في الإصدارات القادمة.

SQL كمواطن كامل المزايا

يمثل Polars 2.0 اللحظة التي يُنظر فيها إلى SQL كمواطن كامل المزايا. تشمل تحسينات المُحسِّن والمحرك إعادة ترتيب عمليات join، وإزالة أفضل بكثير للخطط الفرعية المشتركة (common subplan)، والمسندات الديناميكية مع مرشحات bloom.

في المعايير المستندة إلى TPC-H وTPC-DS، والتي أُجريت ضد DuckDB 1.5.6 وDuckDB 2.0 alpha وDataFusion 54.0.0 على أجهزة c7a.4xlarge وc7a.metal، كان Polars الافتراضي الأسرع في جميع المعايير باستثناء واحد. يشير الفريق إلى تكلفة ثابتة تصل إلى 192 خيطًا عند التوسع، مما يؤثر على الاستعلامات ذات البيانات الصغيرة. أما Polars المحدود بـ 32 نواة فكان تنافسيًا أو يتفوق في جميع المعايير، وقد تم تشخيص السبب لتصحيحه في الإصدار التالي. تجاوز DataFusion الحد الزمني في بعض استعلامات TPC-DS، بينما نفدت الذاكرة على جهاز صغير عند TPC-H q18.

نوع Map الجديد

يدعم Polars الآن مباشرة Arrow MapType كنوع Map، وهو ما يقارن بقاموس Python الذي يربط المفاتيح بالقيم. قبل 2.0 كان Arrow MapType يُقرأ كـ List(Struct(...)). يرافق النوع تعبيرات متخصصة للبحث عن المفاتيح: contains_key وlen وkeys وvalues.

Polars أكثر صرامة

يعزز الإصدار الصرامة وسلوك الفشل السريع. يمكن للوكلاء التحقق من بنية الاستعلام مسبقًا عبر collect_schema()، الذي يحدد الأنواع ويكتشف عدم تطابقات مستوى المخطط دون تنفيذ البيانات، مما يمكّن تكرار AI الأسرع. الأخطاء المعتمدة على البيانات تستخدم الآن سلوكًا أكثر صرامة افتراضيًا، بحيث يتم التقاط عدم التطابقات بدلاً من إخراج نتيجة مختلفة بصمت.

يخطط الفريق لمواصلة العمل على out-of-core، والتوسع على أعداد كبيرة من وحدات CPU، وPolars Cloud وGeoPolars، ونشر دليل الترحيل للانتقال إلى 2.0.

المصادر: pola.rs

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.