
Polars 2.0 yayınlandı: Varsayılan streaming motoru, out-of-core desteği ve tam teşekküllü SQL
Polars 2.0 yayınlandı. Sürüm, streaming motorunu ve diske taşmayı (out-of-core spilling) varsayılan olarak etkinleştiriyor, Map tipini ekliyor, SQL'i tam teşekküllü bir vatandaş olarak kabul ediyor ve daha hızlı geri bildirim için katılığı artırıyor.
Streaming ve out-of-core varsayılan olarak
LazyFrame üzerinde collect çağrısı artık varsayılan olarak streaming motorunu kullanıyor, ki ekip bunun çoğu sorguda bellek ve verimlilikte büyük iyileştirme sağladığını söylüyor. Streaming motoru varsayılan olarak join, group_by ve unpivot gibi işlemlerde satır sırası garantisi vermediği için değişiklik ana sürüm güncellemesi gerektirdi. Satır sırasının korunması gereken kullanıcılar maintain_order=True etkinleştirebilir.
out-of-core desteği, yani diske taşma, varsayılan olarak etkinleştirilmiştir ve yaklaşık RAM'in yüzde 80'inden itibaren başlar. sort, window fonksiyonları ve birçok ifade dahil işlemler artık sorguyu tamamlamak için diske taşabilir, varsayılan disk bütçesi 64GB ile. out-of-core join'ler ve group-by işlemleri gelecek sürümlerin planında yer alıyor.
SQL tam teşekküllü bir vatandaş olarak
Polars 2.0, SQL'in tam teşekküllü bir vatandaş olarak ele alındığı andır. Optimizatör ve motor iyileştirmeleri arasında join'lerin yeniden sıralanması, çok daha iyi ortak alt planların (common subplan) ele geçirilmesi ve bloom filtreleri ile dinamik predikatler bulunmaktadır.
TPC-H ve TPC-DS tabanlı kıyaslamalarda, DuckDB 1.5.6, DuckDB 2.0 alpha ve DataFusion 54.0.0'a karşı c7a.4xlarge ve c7a.metal makinelerinde yapılan testlerde, varsayılan Polars tüm kıyaslamalarda bir hariç en hızlıydı. Ekip, 192 iş parçacığına kadar ölçeklemede sabit bir maliyete dikkat çekiyor, bu da küçük veri kümelerinde sorguları olumsuz etkiliyor. 32 çekirdekle sınırlı Polars tüm kıyaslamalarda rekabetçiydi veya kazanıyordu, ve sebep bir sonraki sürümde düzeltilecek şekilde teşhis edildi. DataFusion, TPC-DS'in bazı sorgularında zaman aşımına uğradı, küçük makinede ise TPC-H q18'de bellek tükendi.
Yeni Map tipi
Polars artık Arrow MapType'ı Map tipi olarak doğrudan destekliyor, bu da anahtarları değerlerle eşleştiren Python sözlüğüne benzer. 2.0'ya kadar Arrow MapType List(Struct(...)) olarak okunuyordu. Tipe, anahtar aramak için özel ifadeler eşlik ediyor: contains_key, len, keys ve values.
Daha katı Polars
Sürüm katılığı daha da güçlendiriyor ve hızlı başarısızlık davranışı sunuyor. Ajanlar, sorgu yapısını collect_schema() ile önceden kontrol edebilir; bu, veri somutlaştırma olmadan tipleri belirler ve şema düzeyi uyuşmazlıklarını yakalar, bu da AI'nın daha hızlı iterasyon yapmasını sağlar. Veriye bağlı hatalar artık varsayılan olarak daha katı davranış sergiliyor, böylece uyuşmazlıklar yakalanıyor ve sessizce farklı bir sonuç üretilmiyor.
Ekip, out-of-core, büyük sayıda CPU'da ölçeklendirme, Polars Cloud ve GeoPolars üzerinde çalışmaya devam etmeyi planlıyor ve 2.0'a geçiş için bir rehber yayınladı.
Kaynaklar: pola.rs
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.