Là một dự án mã nguồn mở, duckdb/ducklake đã đạt 3.4k sao trên GitHub, ngôn ngữ C++. DuckLake is an integrated data lake and catalog format
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
DuckLake is an open Lakehouse format that is built on SQL and Parquet. DuckLake stores metadata in a catalog database, and stores data in Parquet files. The DuckLake extension allows DuckDB to directly read and write data from DuckLake.
See the DuckLake website for more information.
Installation
DuckLake can be installed using the INSTALL command:
INSTALL ducklake;
The latest development version can be installed from core_nightly:
FORCE INSTALL ducklake FROM core_nightly;
Usage
DuckLake databases can be attached using the ATTACH syntax, after which tables can be created, modified and queried using standard SQL.
Below is a short usage example that stores the metadata in a DuckDB database file called metadata.ducklake, and the data in Parquet files in the file_path directory:
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 │
└───────┴─────────┘
Updates
UPDATE my_ducklake.my_table SET val='DuckLake' WHERE id=2;
FROM my_ducklake.my_table;
┌───────┬──────────┐
│ id │ val │
│ int32 │ varchar │
├───────┼──────────┤
│ 1 │ Hello │
│ 2 │ DuckLake │
└───────┴──────────┘
Time Travel
FROM my_ducklake.my_table AT (VERSION => 2);
┌───────┬─────────┐
│ id │ val │
│ int32 │ varchar │
├───────┼─────────┤
│ 1 │ Hello │
│ 2 │ World │
└───────┴─────────┘
Schema Evolution
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 │
└───────┴──────────┴────────────┘
git submodule init
git submodule update --recursive
# to build with multiple cores, use `make GEN=ninja release`
make
The submodules are pinned to the DuckDB version in .github/duckdb-version, which is what CI builds against. make pull
moves them to the tip of their branch instead, where the build can fail.
To run, run the bundled duckdb shell:
./build/release/duckdb
Contributing
We are happy to welcome external contributions to our DuckLake extension. Our active development branch is currently main, and all contributions should target that branch.
Testing
# run all DuckLake extension tests
./build/release/test/unittest
# run a single test file
./build/release/test/unittest test/sql/transaction/create_conflict.test
# run tests matching a pattern
./build/release/test/unittest "test/sql/partitioning/*"
# run DuckDB core tests using DuckLake as storage backend
./build/release/test/unittest --test-config test/configs/attach_ducklake.json --test-dir duckdb
# run DuckLake tests using PostgreSQL as catalog database (requires running PostgreSQL)
./build/release/test/unittest --test-config test/configs/postgres.json
# run DuckLake tests using SQLite as catalog database
./build/release/test/unittest --test-config test/configs/sqlite.json
# run tests with deletion vectors enabled
./build/release/test/unittest --test-config test/configs/deletion_vectors.json
Code Coverage
make codecov builds build/codecov, a release build in which only the DuckLake sources are instrumented for clang's
source-based code coverage, like make codecov in DuckDB. DuckDB's test runner then writes the coverage report of the
tests it runs, by default the fast ones. It needs llvm-profdata, llvm-cov and genhtml from lcov 2.0 to 2.5 (2.2
and 2.6 fail on its options). Run it from the repository root, so the report only shows src:
python3 duckdb/scripts/ci/run_tests.py build/codecov/test/unittest --coverage-report build/codecov/coverage/fast
# any test runner argument works, e.g. the tests with SQLite as catalog database
python3 duckdb/scripts/ci/run_tests.py build/codecov/test/unittest --coverage-report build/codecov/coverage/sqlite \
--test-config test/configs/sqlite.json "test/sql/*"
CI merges the coverage of the tests of every metadata catalog (DuckDB, PostgreSQL, SQLite and Quack) into the
coverage-ducklake artifact, and fails a pull request that lowers the line coverage of the latest report of main.
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/duckdb/ducklake là nguồn chính thức.
duckdb/ducklake có bao nhiêu sao?
duckdb/ducklake có 3.4k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/duckdb/ducklake. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
duckdb/ducklake có phải mã nguồn mở không?
Có — duckdb/ducklake phát hành theo license MIT, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/duckdb/ducklake.
duckdb/ducklake còn đang phát triển không?
Commit gần nhất trên duckdb/ducklake là 27 ngày trước (theo timestamp GitHub). Repo có 297 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
duckdb/ducklake là gì?
duckdb/ducklake (duckdb/ducklake) là dự án C++ trên GitHub. Theo mô tả gốc: DuckLake is an integrated data lake and catalog format
Đọc đầy đủ README ở tab phía trên.
ducklake có đáng để bạn bỏ thời gian?
ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về ducklake.