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