Skip to content

Parquet

  • Published on
    InfluxDB 3는 엔진 전체를 Rust로 다시 쓰고 저장 계층을 Apache Arrow와 Parquet 위에 올렸습니다. 흔히 "Core는 72시간까지만 조회된다"고 알려져 있지만 소스를 읽어 보면 그런 코드는 없습니다. 실제로 존재하는 것은 쿼리 하나가 스캔할 수 있는 Parquet 파일 개수 제한 432개이고, 72시간은 기본 gen1 블록 10분을 곱해서 나온 파생값이자 최선의 경우입니다. 이 글은 432라는 숫자가 어디서 나왔는지 소스 코드 라인 단위로 추적하고, 하드 제한이 소프트 제한으로 바뀐 2025년 1월의 PR을 확인하고, 이 제한을 없애 주는 컴팩터가 왜 유료 기능인지, 그리고 2026년 4월 InfluxData가 왜 Parquet 위에 .pt라는 새 컬럼 포맷을 베타로 올리기 시작했는지를 벤더 자신의 문장으로 정리합니다. 결론은 단순합니다 — Parquet은 분석용 포맷이고, 시계열 워크로드는 순수하게 분석적이지 않습니다.
  • Published on
    Parquet의 min/max 통계는 쿼리 엔진이 데이터를 건너뛰게 해 주는 장치입니다. 그런데 부동소수점 컬럼에서는 이 장치가 10년 넘게 미묘하게 고장 나 있었습니다 — NaN은 어떤 비교에서도 false를 내므로 통계에서 배제되는데, 그러면 NaN이 든 페이지가 max보다 큰 값을 찾는 쿼리에서 통째로 스킵될 수 있습니다. 성능 문제가 아니라 결과가 틀리는 문제입니다. 2026년 6월 13일 릴리스된 parquet-format 2.13.0은 여기에 nan_count 필드와 IEEE_754_TOTAL_ORDER라는 새 컬럼 순서를 넣어 이 구멍을 막았습니다. 2023년 2월에 올라온 PARQUET-2249부터 두 번의 무산된 PR을 거쳐 3년 3개월 만입니다. 이 글은 왜 float 통계만 유독 어려운지, DataFusion에서 지금도 재현되는 실제 오답, 2.13.0이 스펙에서 정확히 무엇을 바꿨는지, 그리고 정직한 현재 상태 — parquet-java는 머지됐지만 릴리스 전이고, Arrow C++는 thrift만 동기화했고, arrow-rs는 아직 draft PR — 를 정리합니다. 그리고 이 수정이 공짜가 아니라는 점, 즉 옵트인이고 프루닝이 오히려 보수적으로 바뀐다는 비용까지 함께 다룹니다.
  • Published on
    OLAP의 SQLite라 불리는 DuckDB가 왜 이렇게 사랑받는지 아키텍처부터 풀어봅니다. Parquet 직접 쿼리, 윈도우 함수와 PIVOT과 ASOF JOIN 실전 예제, pandas와의 zero-copy 연동, dbt-duckdb 기반 경량 ETL, MotherDuck 하이브리드 실행, 그리고 Postgres와 ClickHouse 대비 선택 가이드까지 정리합니다.