仕組み
「はじめに」でブラウザから操作したこと、「接続方法」でCLIから接続したことの裏側で何が起きているかを解説します。
3つの要素
Queriaは以下の3つの技術で構成されています。
- DuckLake: テーブル定義とデータファイルの場所を管理するメタデータカタログ
- Cloudflare R2: Parquetファイルを配信するオブジェクトストレージ
- DuckDB: SQLクエリエンジン(ブラウザではWASM版、CLIではネイティブ版)
データがどこにあるか
データの実体はCloudflare R2上のParquetファイルです。DuckLakeカタログ(.duckdb ファイル)がテーブル名・カラム定義・Parquetファイルの場所を記録しています。
Cloudflare R2
├── tsukuba/
│ ├── ducklake.duckdb ← DuckLakeカタログ(メタデータ)
│ └── data/
│ └── mart_tsukuba_population/
│ └── *.parquet ← データの実体
├── k_oxon/
│ ├── ducklake.duckdb
│ └── data/...
└── zipcode/
├── ducklake.duckdb
└── data/...
ブラウザで動く仕組み
「はじめに」でプレビューやSQLを実行したとき、以下の流れで処理されています。
ブラウザ
┌──────────────────────────────────────────────┐
│ Queria UI │
│ ↓ SQL │
│ DuckDB WASM │
│ ↓ ATTACH │
│ DuckLake拡張 │
│ ↓ HTTPSでR2からデータ取得 │
└──────────────────────────────────────────────┘
↓ HTTPS
┌──────────────────────────────────────────────┐
│ Cloudflare R2 │
│ (カタログ + Parquetファイル) │
└──────────────────────────────────────────────┘
DuckDB WASMがブラウザ内で動作し、DuckLakeカタログに接続してR2からParquetファイルを直接取得します。サーバーサイドの処理は介在しません。
CLIから動く仕組み
「接続方法」で ATTACH コマンドを実行したときも、同じDuckLakeカタログに接続しています。
ローカルマシン
┌──────────────────────────────────────────────┐
│ DuckDB CLI / Python │
│ ↓ ATTACH │
│ DuckLake拡張 │
│ ↓ HTTPSでR2からデータ取得 │
└──────────────────────────────────────────────┘
↓ HTTPS
┌──────────────────────────────────────────────┐
│ Cloudflare R2 │
│ (カタログ + Parquetファイル) │
└──────────────────────────────────────────────┘
ブラウザもCLIも、同じカタログ・同じデータにアクセスします。
データが公開されるまで
元データからQueriaに公開されるまでの流れです。
+-------------------+ +------------------+ +------------------+
| データソース | --> | dbt パイプライン | --> | Cloudflare R2 |
| (CSV, オープン | | (変換・正規化) | | (Parquetファイル) |
| データ) | +------------------+ +--------+---------+
+-------------------+ |
|
+-----------------------------+
|
+---------v----------+
| DuckLake |
| (メタデータカタログ) |
+---------+----------+
|
+---------------+---------------+
| |
+---------v----------+ +---------v----------+
| DuckDB WASM | | DuckDB CLI / |
| (ブラウザ) | | プログラム |
+--------------------+ +--------------------+
- dbtパイプラインが元データ(CSVなど)を取り込み、分析しやすい形に変換
- 変換済みデータをParquet形式でCloudflare R2にアップロード
- DuckLakeカタログにテーブル定義とファイルの場所を登録
- ブラウザやCLIからDuckLakeカタログに接続すると、R2上のデータにアクセスできる