Polars 2.0 chính thức ra mắt: SQL hạng nhất, động cơ streaming mặc định và kiểu dữ liệu Map mới

Công nghệ06 tháng 10, 2026·4 phút đọc

Polars vừa phát hành phiên bản 2.0 với hàng loạt nâng cấp quan trọng: hỗ trợ SQL toàn diện, động cơ streaming và out-of-core bật mặc định, cùng kiểu dữ liệu Map hoàn toàn mới. Thư viện xử lý dữ liệu này cũng đánh bại DuckDB và DataFusion trên nhiều benchmark TPC-H và TPC-DS.

Polars 2.0 chính thức ra mắt: SQL hạng nhất, động cơ streaming mặc định và kiểu dữ liệu Map mới

Polars vừa chính thức phát hành phiên bản 2.0, đánh dấu một cột mốc quan trọng đối với thư viện xử lý dữ liệu đang ngày càng phổ biến trong cộng đồng khoa học dữ liệu. Dù nhóm phát triển khẳng định không có ý định biến đây thành một bản phát hành "bùng nổ tính năng", Polars 2.0 vẫn mang đến nhiều cải tiến đáng chú ý.

Theo tác giả Ritchie Vink, phiên bản này tập trung vào ba trụ cột chính: hiệu năng, khả năng hỗ trợ SQL như một công dân hạng nhất, và sự rõ ràng trong cách xử lý kiểu dữ liệu.

SQL trở thành công dân hạng nhất

Điểm nhấn lớn nhất của Polars 2.0 là việc đưa SQL lên vị trí trung tâm. Độ phủ SQL của Polars đã tăng vọt trong vài tháng qua, cho phép thư viện này phục vụ nhiều loại workload hơn, bao gồm cả những tác vụ vốn chỉ dành cho các hệ quản trị cơ sở dữ liệu truyền thống.

Để đạt được hiệu năng này, nhóm phát triển đã cải tiến đáng kể bộ tối ưu hóa (optimizer) và động cơ thực thi, với các tính năng nổi bật như:

  • Sắp xếp lại phép join để tối ưu thứ tự thực thi
  • Loại bỏ subplan chung hiệu quả hơn
  • Predicate động và bloom filter

Kết quả benchmark trên các bộ dữ liệu TPC-H và TPC-DS cho thấy Polars SQL dẫn đầu so với DuckDB (cả bản 1.5.6 và alpha 2.0) cùng DataFusion 54.0.0. Trên máy chủ 16 vCPU, Polars nhanh nhất ở hầu hết các bài kiểm tra, dù gặp một số hạn chế khi mở rộng lên 192 luồng do chi phí cố định tăng cao.

Động cơ streaming và out-of-core mặc định

Đây có lẽ là thay đổi có tác động lớn nhất trong Polars 2.0. Khi gọi collect trên một LazyFrame, hệ thống sẽ mặc định sử dụng động cơ streaming, giúp tiết kiệm bộ nhớ và tăng tốc đáng kể trên hầu hết các truy vấn.

Lý do thay đổi này buộc phải tăng số phiên bản chính là vì động cơ streaming không đảm bảo thứ tự dòng cho một số phép toán như join, group_by hay unpivot. Nếu cần giữ nguyên thứ tự, người dùng có thể đặt maintain_order=True.

Bên cạnh đó, tính năng out-of-core (spill to disk) cũng được bật mặc định. Hệ thống sẽ bắt đầu ghi tạm xuống đĩa khi bộ nhớ RAM đạt khoảng 80%, với ngân sách đĩa mặc định là 64GB. Hiện tại, các phép toán như sắp xếp, hàm cửa sổ và nhiều biểu thức đã hỗ trợ out-of-core; join và group-by sẽ được bổ sung trong thời gian tới.

Hai thay đổi này sẽ giúp Polars trở nên kiên cường hơn nhiều trong các workload ngốn bộ nhớ, đặc biệt với những người làm dữ liệu không chuyên.

Kiểu dữ liệu Map mới

Polars 2.0 bổ sung hỗ trợ trực tiếp cho Arrow MapType dưới dạng kiểu dữ liệu Map. Có thể hình dung Map giống như một từ điển Python, ánh xạ khóa sang giá trị. Trước đây, kiểu này bị đọc dưới dạng List(Struct({"key": ..., "value": ...})), gây bất tiện khi thao tác.

Với kiểu Map chính thức, người dùng có các biểu thức chuyên dụng như:

  • map.get() để tra cứu giá trị theo khóa
  • map.contains_key() để kiểm tra khóa tồn tại
  • map.len(), map.keys(), map.values() để thao tác với từ điển

Điều này đặc biệt hữu ích khi xử lý dữ liệu bán cấu trúc, vốn ngày càng phổ biến trong các pipeline dữ liệu hiện đại.

Polars nghiêm ngặt hơn

Triết lý của Polars là "nghiêm ngặt và thất bại nhanh" — lỗi nên được phát hiện ngay từ đầu thay vì sau 20 phút chạy pipeline. Trong 2.0, triết lý này càng trở nên quan trọng hơn nhờ sự phát triển của AI hỗ trợ lập trình.

Các tác tử AI có thể gọi collect_schema() để xác thực cấu trúc truy vấn ngay từ đầu, phát hiện sai lệch về schema mà không cần nạp dữ liệu thực tế. Điều này giúp cả AI lẫn con người lặp lại công việc nhanh hơn, giảm thiểu lỗi tiềm ẩn.

Ý nghĩa với cộng đồng dữ liệu Việt Nam

Với các kỹ sư dữ liệu và nhà phân tích tại Việt Nam, Polars 2.0 mang đến lựa chọn thay thế mạnh mẽ cho pandas trong các tác vụ xử lý dữ liệu lớn. Khả năng hỗ trợ SQL hạng nhất đặc biệt hữu ích với những ai đã quen với cú pháp truy vấn truyền thống, trong khi tính năng out-of-core giúp chạy các pipeline nặng trên máy cá nhân mà không cần hạ tầng đám mây đắt đỏ.

Nhóm phát triển cũng cho biết đang hướng tới việc cải thiện khả năng mở rộng đa nhân, hoàn thiện out-of-core cho join và group-by, đồng thời phát triển GeoPolars trong thời gian tới. Người dùng có thể tham khảo hướng dẫn chuyển đổi phiên bản đã được công bố để nâng cấp lên 2.0 thuận lợi hơn.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗