Updated:

1 minute read

개요

  • 사이트
  • 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()
       
    	// ...
    }