უკან დაბრუნება
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 ნაგულისხმევად

LazyFrame-ზე collect-ის გამოძახება ახლა ნაგულისხმევად სტრიმინგის ძრავას იყენებს, რაც, გუნდის თქმით, უმეტეს მოთხოვნაზე მეხსიერებისა და წარმადობის მასიურ გაუმჯობესებას იძლევა. ვინაიდან სტრიმინგის ძრავა ნაგულისხმევად არ იძლევა მწკრივების თანმიმდევრობის გარანტიას ისეთ ოპერაციებზე, როგორიცაა join, group_by და unpivot, ცვლილებამ ძირითადი ვერსიის განახლება მოითხოვა. მომხმარებლებს, რომლებსაც მწკრივების დაკვირვებადი თანმიმდევრობა სჭირდებათ, შეუძლიათ ჩართონ maintain_order=True.

out-of-core მხარდაჭერა, ანუ დისკზე გადაცემა, ნაგულისხმევად ჩართულია და დაახლოებით RAM-ის 80 პროცენტიდან იწყება. ოპერაციებს, მათ შორის sort, window ფუნქციები და ბევრი გამოსახულება, ახლა შეუძლიათ დისკზე გადავიდნენ, რომ მოთხოვნა დაასრულონ, დისკის ნაგულისხმევი ბიუჯეტით 64GB. out-of-core join-ები და group-by ოპერაციები მომავალი გამოშვებების გეგმაშია.

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 ნაკადამდე მასშტაბირებისას, რაც აზიანებს მცირე მონაცემებზე მოთხოვნებს. 32 ბირთვით შემოფარგლული Polars კონკურენტუნარიანი იყო ან იმარჯვებდა ყველა ბენჩმარკში, და მიზეზი დიაგნოსტირებულია მომდევნო გამოშვებაში გამოსასწორებლად. 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 — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.