728x90

DuckDB란?

DuckDB는 임베디드 분석 데이터베이스로, 대규모 데이터 처리를 로컬 환경에서도 빠르고 효율적으로 수행할 수 있도록 설계된 시스템입니다. SQLite와 비슷하게 작동하지만, 주로 데이터 분석 워크로드에 최적화되어 있습니다. 이 시스템은 파이썬, R 등 다양한 언어와 통합되며, OLAP(Online Analytical Processing) 쿼리에 특화되어 있어 데이터 사이언스와 분석에 적합합니다.

dockdb Feature & Benefit (Source: duckdb.org)

Features

  • 컬럼 기반 저장소: 데이터는 컬럼 단위로 저장되어 압축 효율이 높고, 쿼리 성능이 우수합니다.
  • 임베디드 DB: DuckDB는 서버를 필요로 하지 않으며, 로컬 환경에서 바로 사용할 수 있는 임베디드 데이터베이스입니다
  • 대규모 데이터 처리: 메모리 내 분석을 지원하면서도 디스크 기반의 데이터 처리 기능을 제공합니다.
  • 통합된 분석 기능: 파이썬, R 등과 통합되어 있으며, Pandas, NumPy 등과 쉽게 연동됩니다.
  • 빠른 성능: DuckDB는 OLAP 쿼리에 최적화되어 있어 대용량 데이터셋에서 뛰어난 성능을 발휘합니다.
  • 다양한 데이터 소스 지원 : CSV, Parquet, JSON 등의 파일. s3, MySQL, PostgreSQL 등을 지원합니다.

Benefit

  • 빠른 쿼리 성능: 분석 워크로드에서 매우 빠른 성능을 제공.
  • 경량성: 서버리스 환경에서 가볍게 실행.
  • 쉬운 통합: Python, R, SQL과 같은 언어와 쉽게 연동하여 바로 사용할 수 있음. 
  • 비용 효율적: 클라우드 서버를 사용할 필요가 없으므로 비용이 절감됨.

Weakness

  • 제한된 동시성: 대규모 트랜잭션 기반의 OLTP(Online Transaction Processing)에는 적합하지 않음.
  • 메모리 의존성: 메모리 내 작업이기 때문에 큰 데이터를 다룰 때 메모리 부족 문제 발생 가능.

 

<관련글>

 

Examples

EX-1. DuckDB Cli를 설치하고,  DuckDB를 처음 사용하는 사용자를 위해 기본적인 테이블 생성과 쿼리 실행 예제입니다.

# DuckDB CLI 실행
duckdb
-- 새 데이터베이스 파일 생성
.open example.db

-- 테이블 생성
CREATE TABLE employees (
    id INTEGER,
    name VARCHAR,
    department VARCHAR,
    salary INTEGER
);

-- 데이터 삽입
INSERT INTO employees VALUES (1, 'Alice', 'Engineering', 120000);
INSERT INTO employees VALUES (2, 'Bob', 'Marketing', 90000);
INSERT INTO employees VALUES (3, 'Charlie', 'Sales', 70000);

-- 데이터 조회
SELECT * FROM employees;
  • .open 명령을 통해 DuckDB 데이터베이스 파일을 생성하고 연결합니다.

 

EX-1. DuckDB를 CSV 파일은 임포트하는 예제입니다.

# DuckDB CLI 실행
duckdb
-- csv 파일 읽어 해당 데이터 포맷으로 tbl_customers 테이블을 생성한다
CREATE TABLE tbl_customers 
AS
SELECT * 
FROM read_csv("https://drive.google.com/uc?id=1zO8ekHWx9U7mrbx_0Hoxxu6od7uxJqWw&export=download")
;

/*
Source : https://drive.google.com/uc?id=1zO8ekHWx9U7mrbx_0Hoxxu6od7uxJqWw&export=download
Table : Customers
Columns :
    Index
    Customer Id
    First Name
    Last Name
    Company
    City
    Country
    Phone 1
    Phone 2
    Email
    Subscription Date
    Website
*/

-- tbl_customers 데이터 건수를 확인한다.
SELECT count(*) rows
FROM   tbl_customers 
;
/* 
┌───────┐
│ rows  │
│ int64 │
├───────┤
│   100 │
└───────┘
*/

 

what is duckdb

 

728x90

'Data Science > DB+SQL' 카테고리의 다른 글

[OLAP] Open Source OLAP DBMS  (0) 2024.09.25
[DuckDB] DuckDB Installation  (0) 2024.09.24
[DBMS] Isolation Level  (0) 2024.09.21
[DBMS] Data Consistency 와 Data Integrity 차이  (0) 2024.09.21
[mysql] Temporary Tablespace 관리  (0) 2024.04.26
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
반응형