
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
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.