최근 재미있는 DB에 대한 소개를 받았습니다.
바로 DuckDB라는 건데요. 2019년에 등장하여 이미 인기있는 데이터 분석을 위한 DB로 소개되고 있네요..
An in-process SQL OLAP database management system
DuckDB is an in-process SQL OLAP database management system. Simple, feature-rich, fast & open source.
duckdb.org
DuckDB는 in-process SQL OLAP DBMS라는데요..
in-process 즉, 응용(app) 내에서 in memory 방식으로 처리되며, 벡터화된 쿼리 엔진에,
분석 처리(OLAP)를 목적으로 하는(트랜잭션 처리(OLTP)가 아닌) 빠르고 효율적인 DB라고 합니다.
(SQL 사용 시 column 기반의 Apache Parquet 방식을 사용한다고 합니다.. 열 기반(!!)도 재미있네요)
0) 설치
설치는 pip를 이용해서 설치할 수 있습니다.
pip install duckdb
(2024.05.12. 기준으로 v0.10.2.가 릴리즈 중이었지만, 2025.02.17. 기준으로는 v1.2.0이 릴리즈 중입니다 = 최신걸 사용합시다)
1) 이용
# import libs
import duckdb
# ...
# import data from pandas dataframe(df0)
sql1 = 'select col1, col2, avg(col3) as avg from df0 group by col1, col2'
df_res1 = duckdb.sql(sql1).df() # res to dataframe
print(df_res1)
sql2 = 'select col1, col2 from {}'.format('df0')
df_res2 = duckdb.sql(sql2).df() # DataFrame
#pl_res2 = duckdb.sql(sql2).pl() # Polars
#ar_res2 = duckdb.sql(sql2).arrow() # Arrow Table
# duckdb.read_csv('ex1.csv')
# duckdb.read_json('ex2.json')
# duckdb.read_parquet('ex3.parquet')
# connecting to the in-memory db
conn_mem = duckdb.connect(':memory:')
conn_mem.sql('...').show()
conn_men.close()
# connecting to the db
conn_db = ductdb.connect('ddd.db')
conn_db.table('tblTest').show()
conn_db.close()
2) 이용 예시 - DuckDB를 간단히 사용해볼 수 있는 사이트도 있습니다.
DuckDB Shell
shell.duckdb.org
참고)
https://duckdb.org/docs/data/overview
https://duckdb.org/docs/sql/functions/overview
https://duckdb.org/docs/sql/aggregates
https://duckdb.org/docs/api/python/overview.html
https://motherduck.com/blog/duckdb-versus-pandas-versus-polars/
https://www.infoq.com/articles/analytical-data-management-duckdb/
'개발' 카테고리의 다른 글
[Framework]Front-End Framework들 (0) | 2024.07.04 |
---|---|
[tool]MS Visual Studio Code (1) | 2024.06.15 |
[python-오류]ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory ... (0) | 2024.06.10 |
[python]파이썬 기반 웹프레임워크 - Django, Flask (0) | 2024.05.25 |
[python]OpenCV와 imutils (0) | 2024.05.13 |