# Polars 2.0: რატომ აღარ ინარჩუნებს შეერთებები რიგების თანმიმდევრობას

Published: 2026-10-08

Polars 2.0 ნაგულისხმევად აგროვებს მონაცემებს ნაკადოვან ძრავზე. შეერთების, დაჯგუფებისა და „უნპივოტის“ შემთხვევაში, გამოშვება აღარ იძლევა შეყვანილი რიგების თანმიმდევრობის გარანტიას, თუ თქვენ არ დააყენებთ maintain\_order-ს ან არ დაალაგებთ მათ მკაფიოდ. Polars 2.0.0-ზე ჩვენს გაშვებაში, 2,000,000-რიგიანი შიდა შეერთებამ ნაგულისხმევად დააბრუნა რიგები შეყვანის თანმიმდევრობის დარღვევით და შეინარჩუნა თანმიმდევრობა maintain\_order-ის დაყენებით. გამოშვება ასევე რთავს „out-of-core spilling“-ს და გამყიდველის საკუთრებას ხდის ბენჩმარკის პრეტენზიებს.

Canonical: https://thedailydiff.dev/ka/video/polars-2-row-order/

## რას მოიცავს ეს ვიდეო

- lazy query-ზე collect()-ის გამოძახება ახლა ნაგულისხმევად იყენებს ნაკადოვან ძრავას, რომელიც არ იძლევა რიგების თანმიმდევრობის გარანტიას შეერთების, დაჯგუფებისა და „უნპივოტის“ შემთხვევაში.
- მიგრაციის სახელმძღვანელო ამბობს, რომ თანმიმდევრობა აღარ არის 2.0-მდელი თანმიმდევრობა და არ არის გარანტირებული; ის გირჩევთ მკაფიო დალაგებას, თუ მასზე ხართ დამოკიდებული.
- ჩვენს გაშვებაში, ნაგულისხმევმა შიდა შეერთებამ დააბრუნა შეყვანის თანმიმდევრობა False; maintain\_order="left\_right" შეერთებაზე დააბრუნა True. ერთი მანქანა, ერთი გაშვება, ერთი შეერთების ფორმა.
- Out-of-core spilling ნაგულისხმევად ჩართულია: ის იწყება ოპერატიული მეხსიერების დაახლოებით 80 %-ზე, 64 GB ნაგულისხმევი დისკის ბიუჯეტით. Out-of-core შეერთება და დაჯგუფება გეგმაშია.
- collect\_schema() იჭერს გამოტოვებულ სვეტს რაიმე მონაცემის წაკითხვამდე, მაგრამ cast, რომელიც ერთ მნიშვნელობაზე მარცხდება, მარცხდება მხოლოდ collect()-ზე.
- TPC-H და TPC-DS შედარება არის გამყიდველის საკუთარი გაშვება მიღებულ მონაცემებზე, და მის სქოლიოში ნათქვამია, რომ შედეგები არ არის შედარებადი ოფიციალურ ბენჩმარკებთან.

## თავები

- 0:00 რატომ შეიცვალა ნაგულისხმევი თანმიმდევრობა?
- 0:56 რას გვპირდება მიგრაციის სახელმძღვანელო?
- 1:17 არის თუ არა ბენჩმარკი სამართლიანი ბრძოლა?
- 1:41 რას ვხედავთ, როდესაც ვაწარმოებთ მას?
- 1:56 ნიშნავს თუ არა სიმკაცრე უფრო ადრეულს?
- 2:07 როგორ დავაბრუნო ძველი თანმიმდევრობა?
- 2:20 რა არის განაჩენი?

## ნათარგმნი ტრანსკრიპტი

ნათარგმნია ორიგინალური ინგლისური ნარატივიდან. ხელმისაწვდომი აუდიო და სუბტიტრები კონტროლდება YouTube-ის მიერ.

### რატომ შეიცვალა ნაგულისხმევი თანმიმდევრობა?

0:00 თქვენ ფიქრობთ, რომ შეერთება გიბრუნებთ რიგებს იმ თანმიმდევრობით, რა თანმიმდევრობითაც თქვენ დაწერეთ ისინი. Polars 2.0-მა მიზანმიმართულად შეწყვიტა ამის დაპირება, ნაგულისხმევად. ამ ვიდეოში: რატომ შეიცვალა ნაგულისხმევი? რა მოიტანა მან? და რომელი თქვენი სკრიპტი გაფუჭდება პირველი? ეს არის The Daily Diff, "კაპოტის ქვეშ". Polars არის ღია კოდის DataFrame ბიბლიოთეკა: ცხრილების ძრავა, რომელსაც იძახებთ Python-დან,

0:20 რომლის ბირთვიც Rust-შია დაწერილი. ის უფასოა MIT ლიცენზიის ქვეშ, და მას აყენებთ pip install polars-ით. პირველ რიგში, ერთი დეტალი. გადამრთველი, რომელიც აბრუნებს ძველ წესრიგს, არის არგუმენტი თავად შეერთებისთვის. მე დავუბრუნდები მას ბოლოს. 2.0 ვერსიიდან, collect ნაგულისხმევად აწარმოებს ნაკადოვან ძრავას. ნაკადი ყოფს მოთხოვნას ნაწილებად, რომლებიც მუშაობენ პარალელურად, და ნაწილები მთავრდება, როდესაც ისინი მთავრდება.

0:42 შეერთების, დაჯგუფების და „უნპივოტის“ შემთხვევაში, გამოშვება არ გვპირდება თანმიმდევრობას. ვინ დაზარალდება პირველი? ვინც გამოსავალს შედარებს შენახულ ფაილს, რიგ-რიგობით. ეს ტესტი შეიძლება გაიაროს თქვენს ლეპტოპზე და ვერ გაიაროს სხვა მანქანაზე. შემდეგი, მიგრაციის სახელმძღვანელო.

### რას გვპირდება მიგრაციის სახელმძღვანელო?

0:57 ნათქვამია, რომ ზემოთ ნაჩვენები რიგების ზუსტი თანმიმდევრობა არ არის გარანტირებული. ასე რომ, თუ თქვენ ენდობით თანმიმდევრობას, დაალაგეთ მკაფიოდ. Out-of-core ნაგულისხმევად ჩართულია. ის იწყებს მონაცემების დისკზე დაღვრას ოპერატიული მეხსიერების დაახლოებით ოთხმოცი პროცენტზე, სამოცდაოთხი გიგაბაიტიანი ბიუჯეტით. დალაგება, ფანჯრის ფუნქციები და მრავალი გამოსახულება ახლა შეიძლება დაიღვაროს. შეერთებები და დაჯგუფებები მალე მოვა.

### არის თუ არა ბენჩმარკი სამართლიანი ბრძოლა?

1:17 Polars ამბობს, რომ ის სჯობს DataFusion-ს და DuckDB-ს TPC-H-სა და TPC-DS-ზე ბენჩმარკებზე. რიცხვები მომდინარეობს მათი საკუთარი გაშვებებიდან, მიღებულ მონაცემებზე, და მათ სქოლიოში ნათქვამია, რომ ისინი არ არის შედარებადი ოფიციალურ შედეგებთან. მათი საკუთარი რიცხვები ამბობს, რომ Polars დაახლოებით სამ მთელ რვაჯერ უფრო სწრაფი ხდება თექვსმეტი ბირთვიდან ას ოთხმოცდათორმეტამდე, TPC-H-ზე. ისინი ასევე ამბობენ, რომ დიდი მანქანის დამატებითი თემები ანელებს მცირე მოთხოვნებს.

### რას ვხედავთ, როდესაც ვაწარმოებთ მას?

1:41 ჩვენ იგივე შეერთება ორჯერ გავუშვით Polars 2.0.0-ზე. ნაგულისხმევი გაშვება რიგებს ურევს. ფლაგით, შეყვანის თანმიმდევრობა შენარჩუნებულია. იპოვეთ შეერთებები, რომლებიც აწვდიან ტესტს. ნებისმიერი შეერთება მის შემდეგ დალაგების გარეშე არის რიგების თანმიმდევრობის გადაწყვეტილება, რომელიც თქვენ არასოდეს მიგიღიათ. Polars 2.0 უფრო მკაცრია ტიპებთან დაკავშირებით.

### ნიშნავს თუ არა სიმკაცრე უფრო ადრეულს?

1:58 სქემის შემოწმება იჭერს დაკარგულ სვეტს რაიმე მონაცემის წაკითხვამდე. მას არ შეუძლია დაიჭიროს cast, რომელიც მარცხდება ერთ რიგზე, რადგან ეს შეცდომა ელოდება მონაცემებს. ახლა მარყუჟი, რომელიც გავხსენი.

### როგორ დავაბრუნო ძველი თანმიმდევრობა?

2:08 გადამრთველი შეერთებაზეა. დააყენეთ maintain order შეერთებაზე, ან დაამატეთ დალაგება მის შემდეგ. სახელმძღვანელო გვთავაზობს დალაგებას. შეერთების დროშამ შეინარჩუნა თანმიმდევრობა ჩვენს გაშვებაში, მარცხენა მხარის თანმიმდევრობით, როგორც მარცხენა, მარჯვენა. განაჩენი, "კაპოტის ქვეშ": განხილვას საჭიროებს.

### რა არის განაჩენი?

2:22 განვაახლებდი ყველა შეერთებას განახლებამდე. გაქვთ შეკითხვა ამის შესახებ? ჩადეთ კომენტარებში. და ეს არის დღევანდელი განსხვავება. მე ვარ ნიკო Axrisi-დან. შეერწყით პასუხისმგებლობით.

## წყაროები

- [Release of Polars 2.0](https://pola.rs/posts/release-polars-2/) — Polars (pola.rs)
- [Polars 2.0 upgrade guide](https://docs.pola.rs/releases/upgrade/2/) — Polars documentation
- [Polars homepage](https://pola.rs/) — Polars (pola.rs)
- [polars-2.0-benchmark repository](https://github.com/pola-rs/polars-2.0-benchmark) — Polars on GitHub
- [Release of Polars 2.0 (Hacker News discussion)](https://news.ycombinator.com/item?id=49977177) — Hacker News
