101 / 05

DuckDB 2.0, 서버 모드와 트리거를 넣는다

원문 DuckDB Blog

올가을 나올 DuckDB 2.0의 주요 기능이 공개됐습니다. 한 파일짜리 임베디드 분석 DB라는 성격은 그대로 두면서, 그동안 "이건 DuckDB로는 안 되지"라고 여겨지던 영역 몇 개를 한꺼번에 건드립니다.

서버 모드 — Quack 프로토콜과 CONNECT

가장 큰 변화입니다. Quack이라는 새 프로토콜과 CONNECT 문을 통해, 어떤 DuckDB 프로세스든 자기 데이터베이스를 네트워크로 내보내고 다른 DuckDB가 거기에 붙을 수 있습니다. 지금까지 DuckDB는 프로세스 안에 갇힌 라이브러리였고, 여러 사람이 같은 데이터를 보려면 파일을 공유 스토리지에 두고 각자 읽는 수밖에 없었습니다.

여기에 원격 푸시다운이 붙습니다. PostgreSQL과 MySQL에 붙을 때 SQL을 그대로 넘겨 실행시키므로, 테이블 전체를 끌어와서 로컬에서 거르는 대신 필요한 것만 받아옵니다. 실무에서 이 차이는 대개 수십 배입니다.

VARIANT — 스키마 없이 다루는 반정형 데이터

JSON을 다루되 성능은 컬럼 저장에 가깝게 가져가려는 타입입니다. 데이터를 넣으면 내부적으로 구조를 파악해 쪼개 저장(shredding)하므로, 스키마를 미리 선언하지 않아도 조회가 빠르고 압축이 잘 듭니다. 로그나 이벤트처럼 필드가 들쭉날쭉한 데이터를 그대로 부어넣는 용도입니다.

트리거, 비동기 I/O, 새 파서

트리거는 BEFORE/AFTER, 행 단위와 문 단위를 모두 지원합니다. 주 용도는 감사 로그입니다.

비동기 I/O는 I/O 계층을 쿼리 처리 계층에서 떼어냅니다. S3 같은 네트워크 스토리지에 있는 Parquet을 읽을 때 차이가 큽니다. 지금까지는 데이터를 기다리는 동안 쿼리 처리가 함께 멈췄습니다.

SQL 파서도 PostgreSQL에서 가져다 쓰던 것을 버리고 PEG 기반으로 새로 만들었습니다. 사용자 입장에서 체감되는 것은 오류 메시지입니다.

올리기 전에 확인할 것

호환성이 깨지는 변경이 예고돼 있습니다. "적은 수"라고만 밝혔고 목록은 정식 릴리스 공지로 미뤄졌습니다. 지금 DuckDB를 쓰고 있다면 올가을 버전을 올리기 전에 그 목록부터 확인해야 합니다.

  1. 01DuckDB 2.0, 서버 모드와 트리거를 넣는다지금 읽는 글
  2. 02DDR5 128GB가 3,399달러, 그리고 기다려도 안 내려가는 이유
  3. 03Cloudflare Workers에서 Spectre 공격이 실제로 재현됐다
  4. 04uBlock Origin을 계속 쓰려면 이제 Firefox뿐
  5. 05270억 파라미터 모델이 맥북에서 돈다

댓글

불러오는 중…