---
title: "Polars.NET — Rust 기반 고성능 DataFrame 엔진이 .NET에 왔음"
published: 2026-02-14T22:20:20.000Z
canonical: https://jeff.news/article/804
---
# Polars.NET — Rust 기반 고성능 DataFrame 엔진이 .NET에 왔음

Rust + Apache Arrow 기반의 Polars DataFrame 엔진을 .NET에서 사용할 수 있는 바인딩 프로젝트. 3계층 아키텍처로 ADO.NET, LINQ, Delta Lake까지 통합 지원.

## Polars가 .NET에 왔음

- Rust + Apache Arrow 기반의 고성능 DataFrame 엔진인 Polars를 .NET에서 쓸 수 있게 해주는 바인딩 프로젝트 [Polars.NET](https://github.com/ErrorLSC/Polars.NET)이 나왔음. "Polars를 .NET에 가져오는 게 아니라, .NET을 Polars에 가져오겠다"는 포부가 인상적

- 지원 플랫폼은 Windows x64, Linux x64/ARM64 (glibc/musl), macOS ARM64. 클라우드는 AWS/Azure/GCP, 데이터 레이크는 Delta Lake까지 지원함. .NET 8+ 필요하고, CPU는 AVX2 지원해야 함 (Intel Haswell 2013+ / AMD Excavator 2015+)

## 아키텍처가 깔끔함

- 3계층 아키텍처로 API 안정성을 확보했음:
  - **native_shim** — 손으로 작성한 Rust C ABI 레이어 (FFI 브릿지)
  - **Polars.NET.Core** — unsafe ops, wrapper, LibraryImport 같은 더러운 일 담당
  - **Polars.CSharp & Polars.FSharp** — unsafe 블록 없는 하이레벨 API

- `Series<T>`는 Source Generator로 Strong Typed 지원함

## .NET 생태계와의 통합

- **ADO.NET**: DataReader가 제네릭 타입이라 hot path에서 boxing/unboxing 없음
- **LINQ**: Linq2DB 기반 확장 패키지로 DataFrame/Series를 LINQ 쿼리로 조작 가능. F# Computation Expression도 지원
- **ADBC**: 쿼리 엔진과 데이터 소스 간 데이터를 핑퐁처럼 주고받을 수 있음
- **Query Sandwich**: LINQ 쿼리와 Polars lazy execution plan이 서로 호환됨 — 섞어서 쓸 수 있다는 뜻
- **Delta Lake**: Python이나 JVM 없이 CLR만으로 Delta Lake 접근 가능. Deletion Vector도 됨
- **UDF**: LINQ이나 Polars Expression으로 안 되는 특수 케이스용 사용자 정의 함수도 지원

> [!TIP]
> AVX-512 지원 CPU가 있다면 `RUSTFLAGS='-C target-cpu=native'`로 Rust 코어를 직접 컴파일하면 추가 성능 향상을 노릴 수 있음

## 핵심 포인트

- Rust C ABI → .NET Core → 하이레벨 API 3계층 아키텍처
- ADO.NET DataReader boxing-free, LINQ 쿼리 지원
- Python/JVM 없이 CLR만으로 Delta Lake 접근 가능
- Source Generator 기반 Strong Typed Series<T>

## 인사이트

.NET 생태계에서 데이터 처리 성능을 원하는 개발자에게 Polars 바인딩은 상당히 매력적인 선택지가 될 수 있음.
