Closed4
DuckDB メモ v1
色々古くなったので 1 から書き直した
モチベーション
- JSONL を読み込んで解析するツールが欲しかった
- ログを読み込ませたいので圧縮機能は必須
- 自社のパッケージ製品が出力する JSONL を読み込んで解析できる仕組み
- 顧客が問題解析を気軽にできるようにしたい
- 顧客向けツールとして提供したい
- つまり顧客環境で動かしたい
- 1 バイナリ
- OSS として提供したい
- Apache-2.0 として公開したい
- ログファイルは大きくても 100 GB は行かない
- もともと Go + SQLite + JSONB で検討していた
- SQL で書きたい
- SQLite ファイルとして書き出したい
- SQLite ファイルフォーマットは信頼できる
- S3 などにファイルを置いておくだけにしたい
クラウド版に組み込みたい
- 顧客毎に duckdb ファイル作ればいいのでは?
- duckdb ファイルダウンロードできると便利そう
DuckDB
- https://duckdb.org/
- ログの読み込みが早い DuckDB は良い
- Rust + DuckDB で組み込めそう
- read_json_auto がスゴイ
- スキーマ定義がいらない、うまいことやってくれる
- JSONL の読み込みを使う
- ndjson がある、JSONL は ndjson と互換性あるので大丈夫なはず
- https://duckdb.org/docs/archive/0.9.2/data/json/overview
- https://duckdb.org/docs/archive/0.9.2/extensions/json
- SQL で書けるのはとてもいい
- DB からのインポートやエクスポートの対応素晴らしい
- Multi-Database Support in DuckDB - DuckDB
- TimescaleDB からインポートして、戻すとかもできそう
- Wasm でブラウザで動くの良い
-
CREATE TABLE connection_log AS SELECT * FROM 'connection.jsonl';
で読み込める- スキーマの定義が不要なのが本当に素晴らしい
描画
- CUI でいい気がする
- ウェブアプリは自社製品クラウド版で提供するならあり
S3 から直接読み込める
- Cloudflare R2
- ローカルの自社製品の開発用の debug.jsonl をアップロード 20 MB
-
SELECT * FROM read_json_auto("s3://duckdb/debug.jsonl");
- duckdb は bucket 名
DuckDB の設定
R2 を利用しているので s3_endpoint の設定が必須。
D load httpfs
D load aws;
D SET s3_access_key_id = '<access_key_id>';
D SET s3_secret_access_key = '<secret_access_key>';
D SET s3_endpoint='<account_id>.r2.cloudflarestorage.com';
MotherDuck
MotherDuck: Serverless Data Analytics with DuckDB
DuckDB のクラウド版で、ストレージや WebUI を提供する。
MotherDuck にサインアップしておけば、D .open md:
で接続できる。
あとは生成されたトークンを env に登録しておけば良い。
AI
Using AI to query data (Alpha) | MotherDuck
日本語でうまいこと生成してくれるのスゴイ。
SQL も生成してくれる。
このスクラップは3ヶ月前にクローズされました