0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DuckDB と Go

Last updated at Posted at 2023-06-20

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 で実装したい場合。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?