پولرس 2.0: جوائنز اپنی قطار کی ترتیب کیوں نہیں رکھتے
پولرس 2.0 ڈیفالٹ کے طور پر ایک سٹریمنگ انجن پر کلیکٹ چلاتا ہے۔
پولرس 2.0 ڈیفالٹ کے طور پر ایک سٹریمنگ انجن پر کلیکٹ چلاتا ہے۔ جوائن، گروپ بائے اور انپیوٹ کے لیے، ریلیز اب ان پٹ قطار کی ترتیب کی ضمانت نہیں دیتی جب تک کہ آپ واضح طور پر مینٹین_آرڈر یا سارٹ سیٹ نہ کریں۔ پولرس 2.0.0 پر ہمارے رن میں، ایک 2,000,000 قطار کا اندرونی جوائن ڈیفالٹ کے طور پر ان پٹ ترتیب سے باہر قطاریں واپس کرتا تھا اور مینٹین_آرڈر سیٹ کے ساتھ ترتیب برقرار رکھتا تھا۔ ریلیز آؤٹ آف کور اسپیلنگ بھی آن کرتی ہے اور بینچ مارک کے دعووں کو وینڈر کا اپنا بناتی ہے۔
تحریری ایڈیشن پڑھیں (انگریزی) ↗
اس ویڈیو میں کیا شامل ہے
- ایک لیزی کوئری پر collect() کو کال کرنا اب ڈیفالٹ کے طور پر سٹریمنگ انجن استعمال کرتا ہے، جو جوائن، گروپ بائے اور انپیوٹ کے لیے قطار کی ترتیب کی ضمانت نہیں دیتا۔
- مائیگریشن گائیڈ کہتا ہے کہ ترتیب اب پری-2.0 ترتیب نہیں ہے اور اس کی ضمانت نہیں ہے؛ یہ ایک واضح سارٹ کی سفارش کرتا ہے اگر آپ اس پر انحصار کرتے ہیں۔
- ہمارے رن میں، ایک ڈیفالٹ اندرونی جوائن نے ان پٹ آرڈر False واپس کیا؛ جوائن پر maintain_order="left_right" نے True واپس کیا۔ ایک مشین، ایک رن، ایک جوائن شکل۔
- آؤٹ آف کور اسپیلنگ ڈیفالٹ کے طور پر آن ہے: یہ تقریباً 80% RAM پر شروع ہوتا ہے، جس میں 64 GB کا ڈیفالٹ ڈسک بجٹ ہوتا ہے۔ آؤٹ آف کور جوائن اور گروپ بائے روڈ میپ پر ہیں۔
- collect_schema() کسی بھی ڈیٹا کو پڑھنے سے پہلے ایک گمشدہ کالم کو پکڑ لیتا ہے، لیکن ایک کاسٹ جو صرف ایک ویلیو پر ناکام ہوتا ہے وہ collect() پر ہی ناکام ہوتا ہے۔
- TPC-H اور TPC-DS کا موازنہ وینڈر کا اپنا اخذ کردہ ڈیٹا پر رن ہے، اور اس کے فٹ نوٹ میں کہا گیا ہے کہ نتائج سرکاری بینچ مارکس کے ساتھ موازنہ کے قابل نہیں ہیں۔
ترجمہ شدہ ٹرانسکرپٹ
اصل انگریزی بیان سے ترجمہ کیا گیا۔ دستیاب آڈیو اور کیپشنز یوٹیوب کے زیر انتظام ہیں۔
ڈیفالٹ آرڈر کیوں بدل گیا؟
0:00 آپ سوچتے ہیں کہ ایک جوائن آپ کی قطاروں کو اسی ترتیب میں واپس کرتا ہے جس میں آپ نے انہیں لکھا تھا۔ پولرس 2.0 نے ڈیفالٹ کے طور پر، جان بوجھ کر اس کا وعدہ کرنا چھوڑ دیا۔ اس ویڈیو میں: ڈیفالٹ کیوں بدلا؟ اس نے کیا خریدا؟ اور آپ کے کون سے اسکرپٹس پہلے ٹوٹتے ہیں؟ یہ دی ڈیلی ڈف ہے، ہڈ کے نیچے ہے۔ پولرس ایک اوپن سورس ڈیٹا فریم لائبریری ہے: ایک ٹیبل انجن جسے آپ پائتھن سے کال کرتے ہیں،
0:20 جس کا کور رسٹ میں لکھا گیا ہے۔ یہ ایم آئی ٹی لائسنس کے تحت مفت ہے، اور آپ اسے pip install polars کے ساتھ انسٹال کرتے ہیں۔ پہلے ایک تفصیل۔ وہ سوئچ جو پرانی ترتیب واپس لاتا ہے وہ خود جوائن کا ایک آرگومینٹ ہے۔ میں آخر میں اس پر واپس آؤں گا۔ 2.0 کے بعد سے، collect ڈیفالٹ کے طور پر سٹریمنگ انجن چلاتا ہے۔ سٹریمنگ کوئری کو چنک میں تقسیم کرتی ہے جو متوازی طور پر چلتے ہیں، اور چنک تب ختم ہوتے ہیں جب وہ ختم ہوتے ہیں۔
0:42 جوائن، گروپ بائے اور انپیوٹ کے لیے، ریلیز کسی ترتیب کا وعدہ نہیں کرتی۔ پہلے کون متاثر ہوتا ہے؟ جو بھی آؤٹ پٹ کا موازنہ ایک محفوظ فائل سے کرتا ہے، قطار بہ قطار۔ وہ ٹیسٹ آپ کے لیپ ٹاپ پر پاس ہو سکتا ہے اور کسی مختلف مشین پر ناکام ہو سکتا ہے۔ اگلا، مائیگریشن گائیڈ۔
مائیگریشن گائیڈ کیا وعدہ کرتا ہے؟
0:57 یہ کہتا ہے کہ اوپر دکھائی گئی قطار کی صحیح ترتیب کی ضمانت نہیں ہے۔ لہذا اگر آپ ترتیب پر انحصار کرتے ہیں، تو واضح طور پر سارٹ کریں۔ آؤٹ آف کور بھی ڈیفالٹ کے طور پر آن ہے۔ یہ RAM کے تقریباً اسی فیصد پر ڈسک پر اسپیل کرنا شروع کر دیتا ہے، چونسٹھ گیگا بائٹ کے بجٹ کے ساتھ۔ سارٹ، ونڈو فنکشنز اور بہت سے ایکسپریشنز اب اسپیل کر سکتے ہیں۔ جوائنز اور گروپ بائےز آ رہے ہیں۔
کیا بینچ مارک ایک منصفانہ مقابلہ ہے؟
1:17 پولرس کا کہنا ہے کہ یہ TPC-H اور TPC-DS پر ڈیٹا فیوژن اور ڈک ڈی بی کو ہراتا ہے بینچ مارکس۔ یہ اعداد و شمار ان کے اپنے رنز سے آتے ہیں، اخذ کردہ ڈیٹا پر، اور ان کے فٹ نوٹ میں کہا گیا ہے کہ وہ سرکاری نتائج کے ساتھ موازنہ کے قابل نہیں ہیں۔ ان کے اپنے اعداد و شمار کہتے ہیں کہ پولرس TPC-H پر سولہ کور سے ایک سو بانوے تک تقریباً تین اعشاریہ آٹھ گنا تیز ہو جاتا ہے۔ چھوٹے استفسارات کو کم کرتے ہیں۔ ان کا یہ بھی کہنا ہے کہ بڑی مشین کے اضافی تھریڈز چھوٹے استفسارات کو سست کر دیتے ہیں۔
جب ہم اسے چلاتے ہیں تو ہم کیا دیکھتے ہیں؟
1:41 ہم نے پولرس 2.0.0 پر ایک ہی جوائن کو دو بار چلایا۔ ڈیفالٹ رن قطاروں کو شفل کرتا ہے۔ فلیگ کے ساتھ، ان پٹ آرڈر باقی رہتا ہے۔ ان جوائنز کو تلاش کریں جو کسی ٹیسٹ کو فیڈ کرتے ہیں۔ اس کے بعد سارٹ کے بغیر کوئی بھی جوائن ایک قطار کی ترتیب کا فیصلہ ہے جو آپ نے کبھی نہیں کیا۔ پولرس 2.0 ٹائپس کے بارے میں زیادہ سخت ہے۔
کیا سختی کا مطلب پہلے ہے؟
1:58 اسکیما چیک کسی بھی ڈیٹا کو پڑھنے سے پہلے ایک گمشدہ کالم کو پکڑ لیتا ہے۔ یہ ایک کاسٹ کو نہیں پکڑ سکتا جو ایک قطار پر ناکام ہوتا ہے، کیونکہ وہ غلطی ڈیٹا کا انتظار کرتی ہے۔ اب وہ لوپ جو میں نے کھولا تھا۔
میں پرانا آرڈر کیسے واپس حاصل کروں؟
2:08 سوئچ جوائن پر رہتا ہے۔ جوائن پر maintain order سیٹ کریں، یا اس کے بعد ایک سارٹ شامل کریں۔ گائیڈ سارٹ کی تجویز کرتا ہے۔ جوائن فلیگ نے ہمارے رن میں ترتیب برقرار رکھی، بائیں طرف کی ترتیب کو بائیں، دائیں کے طور پر رکھا گیا۔ ہڈ کے نیچے فیصلہ: NEEDS REVIEW۔
فیصلہ کیا ہے؟
2:22 میں اپ گریڈ کرنے سے پہلے ہر جوائن کا جائزہ لوں گا۔ اس کے بارے میں کوئی سوال ہے؟ اسے تبصروں میں ڈالیں۔ اور آج کے لیے یہی فرق ہے۔ میں Axrisi سے نیکو ہوں۔ ذمہ داری سے ضم کریں۔
ذرائع
- Release of Polars 2.0Polars (pola.rs)
- Polars 2.0 upgrade guidePolars documentation
- Polars homepagePolars (pola.rs)
- polars-2.0-benchmark repositoryPolars on GitHub
- Release of Polars 2.0 (Hacker News discussion)Hacker News



