概要
DuckLakeは、 Parquetファイル と SQLデータベース を活用した、シンプルかつ強力なデータレイク機能を提供 DuckDBチーム が開発した、オープンで独立したフォーマット 複数のデータベース と連携可能で、柔軟なデプロイシナリオを実現 スナップショット や ACIDトランザクション など、データレイクに必要な主要機能を網羅 MITライセンスで公開されており、商用・非商用問わず利用可能
DuckLakeの特徴と構成
- Parquetファイル と SQLデータベース を組み合わせたデータレイク構成
- DuckDBチーム によるオープンでスタンドアロンなフォーマット
- カタログ管理 はPostgreSQL、SQLite、MySQL、DuckDBなど、主要なSQLデータベースで対応
- 必要なものは「 カタログ用データベース」と「 Parquetファイル保存用ストレージ」のみ
- オブジェクトストレージ(例: AWS S3)にも対応
デプロイシナリオ
- クライアントは 複数のDuckLakeクライアント を同時接続可能
- PostgreSQL、MySQL、SQLiteなど、ACIDトランザクションと主キー制約をサポートするSQLシステムに対応
- DuckDB をカタログデータベースとして利用する場合は、 単一クライアント のみ利用可
主要機能
- スナップショット、 タイムトラベルクエリ、 スキーマ進化、 パーティショニング 対応
- 軽量スナップショット により、頻繁なコンパクション不要で多数のスナップショット管理
- ACIDトランザクション による複数テーブルにまたがる同時アクセス保証
- 統計情報 によるフィルタープッシュダウンで、大規模データセットでも高速クエリ実行
DuckLakeの利用方法
- DuckDB の拡張機能(Extension)として提供
- DuckDB、SQLite、PostgreSQL、MySQLでのセットアップ例
- DuckDB:
INSTALL ducklake;ATTACH 'ducklake:metadata.ducklake' AS my_ducklake;USE my_ducklake;
- PostgreSQL:
INSTALL ducklake;INSTALL postgres;ATTACH 'ducklake:postgres:dbname=ducklake_catalog host=your_postgres_host' AS my_ducklake (DATA_PATH 'data_files/');USE my_ducklake;
- SQLite:
INSTALL ducklake;INSTALL sqlite;ATTACH 'ducklake:sqlite:metadata.sqlite' AS my_ducklake (DATA_PATH 'data_files/');USE my_ducklake;
- MySQL:
INSTALL ducklake;INSTALL mysql;ATTACH 'ducklake:mysql:db=ducklake_catalog host=your_mysql_host' AS my_ducklake (DATA_PATH 'data_files/');USE my_ducklake;
- DuckDB:
よくある質問
-
DuckLakeを使う理由
- 軽量な オールインワン型データレイク &カタログソリューション
- 複数DuckDBインスタンスによる同時読み書き( マルチプレイヤーDuckDB)が可能
- DuckLake単体利用でも タイムトラベルクエリ や データパーティショニング、複数ファイル保存などのメリット
-
DuckLakeとは何か
- DuckDB発のデータレイク/レイクハウス技術の総称
- DuckLakeレイクハウスフォーマット仕様
- DuckLake DuckDB拡張機能(データセットの読み書き対応)
- DuckLakeフォーマットで保存されたデータセットそのもの
-
ライセンス
- DuckLake仕様およびDuckLake DuckDB拡張機能は MITライセンス で公開
- 商用・非商用問わず利用可能
まとめ
- DuckLake は、複雑なレイクハウス構成を避けつつ、 柔軟性・拡張性・高速性 を兼ね備えたデータレイク基盤
- 多様なデータベース との連携や ACIDトランザクション、 軽量スナップショット など、エンタープライズ用途にも十分対応
- MITライセンス で自由に導入可能な点も大きな魅力