HN 日本語サマリー

← 一覧へ戻る
プログラミング

DuckDBのDuckLake拡張機能

DuckDB Ducklake (github.com)

64 pointsby saikatsg5 コメント

要約

DuckDBの新しい拡張機能であるDuckLakeは、SQLとParquetファイル上に構築されたオープンなLakehouseフォーマットを提供します。これにより、DuckDBはDuckLakeのメタデータとデータを直接読み書きできるようになり、データレイクハウスの操作が簡素化されます。

全文翻訳

DuckDB DuckLake拡張機能 DuckLakeは、SQLとParquet上に構築されたオープンなLakehouseフォーマットです。DuckLakeは、メタデータをカタログデータベースに格納し、データをParquetファイルに格納します。DuckLake拡張機能により、DuckDBはDuckLakeから直接データを読み書きできます。詳細については、DuckLakeのウェブサイトをご覧ください。 インストール DuckLakeは、INSTALLコマンドを使用してインストールできます。 INSTALL ducklake; 最新の開発バージョンはcore_nightlyからインストールできます。 FORCE INSTALL ducklake FROM core_nightly; 使用方法 DuckLakeデータベースは、ATTACH構文を使用してアタッチできます。その後、標準SQLを使用してテーブルを作成、変更、クエリできます。以下は、メタデータをmetadata.ducklakeというDuckDBデータベースファイルに格納し、データをfile_pathディレクトリのParquetファイルに格納する短い使用例です。 ATTACH 'ducklake:metadata.ducklake' AS my_ducklake (DATA_PATH 'file_path/'); USE my_ducklake; CREATE TABLE my_ducklake.my_table(id INTEGER, val VARCHAR); INSERT INTO my_ducklake.my_table VALUES (1, 'Hello'), (2, 'World'); FROM my_ducklake.my_table; ┌───────┬─────────┐ │ id │ val │ │ int32 │ varchar │ ├───────┼─────────┤ │ 1 │ Hello │ │ 2 │ World │ └───────┴─────────┘ 更新 UPDATE my_ducklake.my_table SET val='DuckLake' WHERE id=2; FROM my_ducklake.my_table; ┌───────┬──────────┐ │ id │ val │ │ int32 │ varchar │ ├───────┼──────────┤ │ 1 │ Hello │ │ 2 │ DuckLake │ └───────┴──────────┘ タイムトラベル FROM my_ducklake.my_table AT (VERSION => 2); ┌───────┬─────────┐ │ id │ val │ │ int32 │ varchar │ ├───────┼─────────┤ │ 1 │ Hello │ │ 2 │ World │ └───────┴─────────┘ スキーマ進化 ALTER TABLE my_ducklake.my_table ADD COLUMN new_column VARCHAR; FROM my_ducklake.my_table; ┌───────┬──────────┬────────────┐ │ id │ val │ new_column │ │ int32 │ varchar │ varchar │ ├───────┼──────────┼────────────┤ │ 1 │ Hello │ NULL │ │ 2 │ DuckLake │ NULL │ └───────┴──────────┴────────────┘ 変更データフィード FROM my_ducklake.table_changes('my_table', 2, 2); ┌─────────────┬───────┬─────────────┬───────┬─────────┐ │ snapshot_id │ rowid │ change_type │ id │ val │ │ int64 │ int64 │ varchar │ int32 │ varchar │ ├─────────────┼───────┼─────────────┼───────┼─────────┤ │ 2 │ 0 │ insert │ 1 │ Hello │ │ 2 │ 1 │ insert │ 2 │ World │ └─────────────┴───────┴─────────────┴───────┴─────────┘ 詳細については、使用ガイドをご覧ください。 拡張機能のビルドとロード ビルドするには、以下を実行します。 git submodule init git submodule update --recursive # マルチコアでビルドするには、`make GEN=ninja release`を使用します make サブモジュールは、.github/duckdb-versionのDuckDBバージョンにピン留めされており、CIがビルドするものです。make pullはそれらをブランチの先端に移動させ、ビルドが失敗する可能性があります。 実行するには、バンドルされたduckdbシェルを実行します。 ./build/release/duckdb 貢献 DuckLake拡張機能への外部からの貢献を歓迎します。現在、アクティブな開発ブランチはmainであり、すべての貢献はこのブランチを対象とする必要があります。 テスト # すべてのDuckLake拡張機能テストを実行する ./build/release/test/unittest # 単一のテストファイルを実行する ./build/release/test/unittest test/sql/transaction/create_conflict.test # パターンに一致するテストを実行する ./build/release/test/unittest "test/sql/partitioning/*" # DuckLakeをストレージバックエンドとして使用してDuckDBコアテストを実行する ./build/release/test/unittest --test-config test/configs/attach_ducklake.json --test-dir duckdb # PostgreSQLをカタログデータベースとして使用してDuckLakeテストを実行する(実行中のPostgreSQLが必要) ./build/release/test/unittest --test-config test/configs/postgres.json # SQLiteをカタログデータベースとして使用してDuckLakeテストを実行する ./build/release/test/unittest --test-config test/configs/sqlite.json # 削除ベクトルを有効にしてテストを実行する ./build/release/test/unittest --test-config test/configs/deletion_vectors.json