
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-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։