[database] DuckDB
Updated:
개요
- 사이트
- SQL(Structured Query Language)을 지원하는 RDBMS
특징
- Simple
- SQLite은 치의 단순성과 내장된 프로세스 내 작업이 성공의 핵심
- DuckDB는 이러한 단순성과 내장된 작업의 아이디어를 채택
- 컴파일이나 런타임 중 외부 종속성이 없음
- 설치, 업데이트 및 유지 관리해야 할 DBMS 서버 소프트웨어가 없음
- 별도의 프로세스로 실행되지 않고 호스트 프로세스 내에 완전히 내장
- 분석 사용 사례의 경우 이는 데이터베이스와의 고속 데이터 전송이라는 추가 이점
- Portable
- 종속성이 없기 때문에 매우 이식성이 뛰어남
- 모든 주요 운영 체제(Linux, macOS, Windows) 및 CPU 아키텍처(x86, ARM)에 대해 컴파일 가능
- 리소스가 제한된 소형 에지 디바이스에서 100개 이상의 CPU 코어가 있는 대형 멀티 테라바이트 메모리 서버에 배포 가능
- DuckDB-Wasm을 사용하면 웹 브라우저와 모바일 폰에서도 실행 가능
- Java, C, C++, Go, Node.js 및 기타 언어에 대한 API 제공
- Feature-Rich
- 심각한 데이터 관리 기능을 제공
- 대규모 함수 라이브러리, 윈도우 함수 등을 사용하여 SQL에서 복잡한 쿼리를 광범위하게 지원
- 맞춤형 대량 최적화 다중 버전 동시성 제어(MVCC)를 통해 트랜잭션 보장(ACID 속성)을 제공
- 데이터는 영구적인 단일 파일 데이터베이스에 저장
- 단일 테이블 항목을 찾으려는 쿼리 속도를 높이기 위해 보조 인덱스를 지원
- 효율적인 대화형 데이터 분석을 위해 Python 및 R에 깊이 통합
- Fast
- 온라인 분석 처리(OLAP)라고도 하는 분석 쿼리 워크로드를 지원하도록 설계
- 워크로드를 효율적으로 지원하려면 개별 값당 소모되는 CPU 주기를 줄이는 것이 중요
- 이를 달성하기 위한 데이터 관리의 최신 기술은 벡터화 또는 적시 쿼리 실행 엔진
- 열 벡터화 쿼리 실행 엔진을 사용
- 쿼리는 여전히 해석되지만 많은 값(“벡터”)이 한 번의 작업으로 처리
- PostgreSQL, MySQL 또는 SQLite와 같이 각 행을 순차적으로 처리하는 기존 시스템에 존재하는 오버헤드를 크게 줄임
- 벡터화된 쿼리 실행은 OLAP 쿼리에서 훨씬 더 나은 성능을 제공
- Extensible
- 새로운 데이터 유형, 함수, 파일 형식 및 새로운 SQL 구문을 정의할 수 있는 유연한 확장 메커니즘을 제공
- 주요 기능 중 다수가 확장으로 구현
- Parquet 파일 형식, JSON, 시간대 및 HTTP(S) 및 S3 프로토콜 지원, DuckDB Wasm
- Free
- 개발은 주요 개발자가 네덜란드의 공무원이었을 때 시작
- 모든 사람이 우리 작업의 결과를 자유롭게 사용할 수 있도록 하는 것을 사회에 대한 우리의 책임과 의무로 생각
- 매우 관대한 MIT 라이선스에 따라 출시되는 이유
- 오픈 소스이며 전체 소스 코드는 GitHub에서 무료로 사용 가능
- 행동 강령을 준수하는 모든 사람의 기여를 환영
- Thorough Testing
예제
-
Go
package main import ( "database/sql" _ "github.com/marcboeker/go-duckdb" ) func main() { db, err := sql.Open("duckdb", "test.db?access_mode=READ_WRITE&threads=4") if err != nil { panic(err) } defer db.Close() // ... }