# পোলারস ২.০: কেন জয়েন আর সারি ক্রম বজায় রাখে না

Published: 2026-10-08

পোলারস ২.০ ডিফল্টরূপে একটি স্ট্রিমিং ইঞ্জিনে সংগ্রহ চালায়। জয়েন, গ্রুপ\_বাই এবং আনপিভটের জন্য, রিলিজটি আর ইনপুট সারি ক্রমের গ্যারান্টি দেয় না যদি না আপনি স্পষ্টভাবে মেইনটেইন\_অর্ডার সেট করেন বা সাজান। পোলারস ২.০.০-এর উপর আমাদের চালানোতে, একটি ২০,০০,০০০-সারি ইনার জয়েন ডিফল্টরূপে ইনপুট ক্রমের বাইরে সারি ফেরত দিয়েছে এবং মেইনটেইন\_অর্ডার সেট করার সাথে ক্রমটি বজায় রেখেছে। রিলিজটি আউট-অফ-কোর স্পিলিংও চালু করে এবং বেঞ্চমার্কের দাবিগুলি বিক্রেতার নিজস্ব করে তোলে।

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

## এই ভিডিওতে যা আছে

- একটি লেজি কোয়েরিতে collect() কল করা এখন ডিফল্টরূপে স্ট্রিমিং ইঞ্জিন ব্যবহার করে, যা জয়েন, গ্রুপ\_বাই এবং আনপিভটের জন্য সারি ক্রমের গ্যারান্টি দেয় না।
- মাইগ্রেশন গাইড বলছে যে ক্রমটি আর ২.০-এর পূর্বের ক্রম নয় এবং এটি নিশ্চিত নয়; আপনি যদি এর উপর নির্ভর করেন তবে এটি একটি স্পষ্ট সাজানোর সুপারিশ করে।
- আমাদের চালানোতে, একটি ডিফল্ট ইনার জয়েন ইনপুট অর্ডার ফলস ফেরত দিয়েছে; জয়েনে maintain\_order="left\_right" সেট করা হলে True ফেরত দিয়েছে। একটি মেশিন, একটি চালানো, একটি জয়েন আকৃতি।
- আউট-অফ-কোর স্পিলিং ডিফল্টরূপে চালু আছে: এটি RAM-এর প্রায় ৮০% থেকে শুরু হয়, একটি ৬৪ GB ডিফল্ট ডিস্ক বাজেট সহ। আউট-অফ-কোর জয়েন এবং গ্রুপ\_বাই রোডম্যাপে রয়েছে।
- collect\_schema() কোনো ডেটা পড়ার আগেই একটি অনুপস্থিত কলাম ধরে ফেলে, তবে একটি কাস্ট যা শুধুমাত্র একটি মানের উপর ব্যর্থ হয় তা কেবল collect()-এ ব্যর্থ হয়।
- TPC-H এবং TPC-DS তুলনা বিক্রেতার নিজস্ব রান থেকে প্রাপ্ত ডেটার উপর করা হয়েছে, এবং এর পাদটীকা বলছে ফলাফলগুলি অফিসিয়াল বেঞ্চমার্কের সাথে তুলনীয় নয়।

## অধ্যায়

- 0:00 কেন ডিফল্ট ক্রম পরিবর্তন হয়েছে?
- 0:56 মাইগ্রেশন গাইড কি প্রতিশ্রুতি দেয়?
- 1:17 বেঞ্চমার্ক কি একটি ন্যায্য প্রতিযোগিতা?
- 1:41 আমরা যখন এটি চালাই তখন আমরা কি দেখি?
- 1:56 কঠোর মানে কি আগে?
- 2:07 আমি কিভাবে পুরানো ক্রম ফিরে পাব?
- 2:20 রায় কি?

## অনুবাদিত প্রতিলিপি

মূল ইংরেজি বর্ণনা থেকে অনূদিত। উপলব্ধ অডিও এবং ক্যাপশন YouTube দ্বারা নিয়ন্ত্রিত।

### কেন ডিফল্ট ক্রম পরিবর্তন হয়েছে?

0:00 আপনি মনে করেন একটি জয়েন আপনার সারিগুলিকে আপনি যেভাবে লিখেছেন সেই ক্রমেই ফেরত দেয়। পোলারস ২.০ সেই প্রতিশ্রুতি দেওয়া বন্ধ করে দিয়েছে, ডিফল্টরূপে, উদ্দেশ্যমূলকভাবে। এই ভিডিওতে: কেন ডিফল্ট পরিবর্তন হয়েছে? এটি কি কিনেছে? এবং আপনার কোন স্ক্রিপ্টটি প্রথমে ভেঙে যায়? এটি দ্য ডেইলি ডিফারেন্স, আন্ডার দ্য হুড। পোলারস একটি ওপেন-সোর্স ডেটাফ্রেম লাইব্রেরি: একটি টেবিল ইঞ্জিন যা আপনি পাইথন থেকে কল করেন,

0:20 যার মূল অংশ রাস্টে লেখা। এটি MIT লাইসেন্সের অধীনে বিনামূল্যে, এবং আপনি pip install polars দিয়ে এটি ইনস্টল করেন। প্রথমে একটি বিস্তারিত। যে সুইচটি পুরানো ক্রম ফিরিয়ে আনে তা জয়েনের নিজস্ব একটি আর্গুমেন্ট। আমি শেষে এটিতে ফিরে আসব। ২.০ থেকে, collect ডিফল্টরূপে স্ট্রিমিং ইঞ্জিন চালায়। স্ট্রিমিং কোয়েরিটিকে সমান্তরালভাবে চালিত হওয়া অংশে বিভক্ত করে, এবং অংশগুলি যখন শেষ হয় তখন শেষ হয়।

0:42 জয়েন, গ্রুপ বাই এবং আনপিভটের জন্য, রিলিজটি একটি ক্রমের প্রতিশ্রুতি দেয় না। কে প্রথমে আঘাত পায়? যে কেউ আউটপুটকে একটি সংরক্ষিত ফাইলের সাথে তুলনা করে, সারি বাই সারি। সেই পরীক্ষাটি আপনার ল্যাপটপে পাস হতে পারে এবং অন্য মেশিনে ব্যর্থ হতে পারে। এরপর, মাইগ্রেশন গাইড।

### মাইগ্রেশন গাইড কি প্রতিশ্রুতি দেয়?

0:57 এটি বলে যে উপরে দেখানো সঠিক সারি ক্রম নিশ্চিত নয়। সুতরাং আপনি যদি ক্রমের উপর নির্ভর করেন তবে স্পষ্টভাবে সাজান। আউট-অফ-কোরও ডিফল্টরূপে চালু আছে। এটি RAM-এর প্রায় আশি শতাংশে ডিস্কে স্পিলিং শুরু করে, একটি চৌষট্টি গিগাবাইট বাজেট সহ। সাজানো, উইন্ডো ফাংশন এবং অনেক এক্সপ্রেশন এখন স্পিল করতে পারে। জয়েন এবং গ্রুপ-বাই আসছে।

### বেঞ্চমার্ক কি একটি ন্যায্য প্রতিযোগিতা?

1:17 পোলারস বলছে এটি TPC-H এবং TPC-DS বেঞ্চমার্কগুলিতে DataFusion এবং DuckDB-কে হারায়। সংখ্যাগুলি তাদের নিজস্ব রান থেকে এসেছে, প্রাপ্ত ডেটার উপর, এবং তাদের পাদটীকা বলে যে সেগুলি অফিসিয়াল ফলাফলের সাথে তুলনীয় নয়। তাদের নিজস্ব সংখ্যা বলে যে পোলারস TPC-H-এ ষোল কোর থেকে একশত বিরানব্বই কোরে প্রায় তিন দশমিক আট গুণ দ্রুত হয়। তারা আরও বলে যে বড় মেশিনের অতিরিক্ত থ্রেডগুলি ছোট কোয়েরিগুলিকে ধীর করে দেয়। আমরা পোলারস ২.০.০-এ একই জয়েন দুবার চালিয়েছিলাম।

### আমরা যখন এটি চালাই তখন আমরা কি দেখি?

1:41 ডিফল্ট রান সারিগুলিকে এলোমেলো করে। ফ্ল্যাগ সহ, ইনপুট ক্রমটি টিকে থাকে। সেই জয়েনগুলি খুঁজুন যা একটি পরীক্ষা ফিড করে। এর পরে কোনো সাজানো ছাড়া যেকোনো জয়েন হল একটি সারি ক্রম সিদ্ধান্ত যা আপনি কখনও নেননি। পোলারস ২.০ প্রকার সম্পর্কে কঠোর। স্কিমা চেক কোনো ডেটা পড়ার আগেই একটি অনুপস্থিত কলাম ধরে ফেলে।

### কঠোর মানে কি আগে?

1:58 এটি এমন একটি কাস্ট ধরতে পারে না যা একটি সারিতে ব্যর্থ হয়, কারণ সেই ত্রুটি ডেটার জন্য অপেক্ষা করে। এখন আমি যে লুপটি খুলেছিলাম। সুইচটি জয়েনের উপর থাকে।

### আমি কিভাবে পুরানো ক্রম ফিরে পাব?

2:08 জয়েনে মেইনটেইন অর্ডার সেট করুন, অথবা এর পরে একটি সাজানো যোগ করুন। গাইডটি সাজানোর পরামর্শ দেয়। জয়েন ফ্ল্যাগ আমাদের চালানোতে ক্রমটি বজায় রেখেছিল, বাম দিকের ক্রম বাম, ডান হিসাবে বজায় রেখেছিল। রায়, আন্ডার দ্য হুড: পর্যালোচনার প্রয়োজন। আমি আপগ্রেড করার আগে প্রতিটি জয়েন পর্যালোচনা করব।

### রায় কি?

2:22 এই সম্পর্কে একটি প্রশ্ন আছে? এটি মন্তব্যে রাখুন। এবং এটি আজকের জন্য পার্থক্য। আমি অ্যাক্সিসরি থেকে নিকো। দায়িত্বের সাথে মার্জ করুন। দায়িত্বের সাথে মার্জ করুন।

## উৎস

- [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
