חזרה
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. ציטוטי out-of-core ופעולות group-by מתוכננים למהדורות עתידיות.

SQL כאזרח מדרגה ראשונה

Polars 2.0 הוא הרגע שבו SQL נחשב לאזרח מדרגה ראשונה. שיפורי האופטימייזר והמנוע כוללים סידור מחדש של ציטוטים, זיהוי טוב יותר של תוכניות משנה משותפות (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, קנה מידה על מספר גדול של מעבדים, Polars Cloud ו-GeoPolars, ופרסם מדריך מיגרציה למעבר ל-2.0.

מקורות: pola.rs

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.