🦆
DuckDB と Go
2023年6月3回目です。
今回は、DuckDB についてです。
ぼくが DuckDB に興味を持ったのは、Thoughtworks 社の Technology Radar を読んでからです。
記事の作成時点では、公式の言語に Go の紹介はありません。
そのため、Go で Query を実行する方法について書きます。
今回使用した Code は、こちらです。
TL;DR
- OLAP の RDBMS です。
- 軽量な DB で、CSV や Parquet を直接 Query できます。
Installation
- Dev Container 環境と VS Code の Extension を使用します。
- Dev Container を起動後、DuckDB の binary が存在することを確認してください。
vscode ➜ /workspaces/go-duckdb-example (main) $ sudo find / -name duckdb
/usr/bin/duckdb
vscode ➜ /workspaces/go-duckdb-example (main) $
- PATH を設定します。
vscode ➜ /workspaces/go-duckdb-example (main) $ export PATH="/usr/bin:$PATH"
vscode ➜ /workspaces/go-duckdb-example (main) $ source ~/.bashrc
- DuckDB の動作を CLI で確認します。
CSV を参照できていることが確認できます。
vscode ➜ /workspaces/go-duckdb-example (main) $ cat hoge.csv
a,1,c
aa,2,cc
vscode ➜ /workspaces/go-duckdb-example (main) $ duckdb
v0.8.1 6536a77232
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D SELECT * FROM read_csv_auto('hoge.csv');
┌─────────┬─────────┬─────────┐
│ column0 │ column1 │ column2 │
│ varchar │ int64 │ varchar │
├─────────┼─────────┼─────────┤
│ a │ 1 │ c │
│ aa │ 2 │ cc │
└─────────┴─────────┴─────────┘
D .exit
vscode ➜ /workspaces/go-duckdb-example (main) $
Usage
-
Query 用の CSV を用意します。
-
github.com/marcboeker/go-duckdb
を blank import します。 -
認証は、必要ありません。DuckDB の binary を指定します。
- 実行結果
sql.Open
以外、通常の database の扱いと変わりません。当然ながら。
vscode ➜ /workspaces/go-duckdb-example (main) $ go run main.go
column0: a
column0: aa
vscode ➜ /workspaces/go-duckdb-example (main) $
Summary
Go で Query を実行する方法について書きました。
DuckDB の Usecase として考えられるのは、Backend Engineer が分析系の API を実装する場合でしょうか。例えば、Python よりも Go で実装したい場合。
Discussion