DuckLake extiende DuckDB con una arquitectura de lakehouse que separa metadatos y datos. Según el README del proyecto, DuckLake almacena los metadatos en una base de datos de catálogo y mantiene los datos reales en archivos Parquet. Este diseño permite a DuckDB leer y escribir directamente los datos gestionados por DuckLake utilizando comandos SQL estándar después de adjuntar el lago con una declaración ATTACH. El README muestra un ejemplo donde los metadatos se guardan en un archivo de DuckDB llamado metadata.ducklake y los datos residen en archivos Parquet bajo un directorio file_path, accedidos mediante ATTACH 'ducklake:metadata.ducklake' AS my_ducklake (DATA_PATH 'file_path/').
El logotipo identifica el proyecto DuckLake, que es el tema del artículo que describe su arquitectura lakehouse y sus características.
La extensión admite varias características avanzadas de data lake ilustradas en la guía de uso. Los usuarios pueden crear tablas, insertar filas y ejecutar consultas como con cualquier esquema de DuckDB. Los viajes en el tiempo están disponibles mediante consultas como FROM my_ducklake.my_table AT (VERSION => 2); que devuelven la tabla tal como existía en una versión específica. La evolución del esquema se maneja con sentencias ALTER TABLE que agregan columnas, y el feed de datos de cambio puede accederse mediante las funciones table_changes para inspeccionar instantáneos, IDs de fila, tipos de cambio y los datos modificados. Estas capacidades se demuestran con fragmentos de SQL concretos en la documentación del repositorio, incluyendo sentencias INSERT, UPDATE y SELECT que muestran cómo evolucionan los datos y los metadatos.
La instalación es sencilla: la extensión se puede agregar con el comando INSTALL ducklake; y la última versión de desarrollo se puede obtener desde el canal core_nightly mediante FORCE INSTALL ducklake FROM core_nightly;. Compilar desde el código fuente requiere inicializar los submódulos de git, actualizarlos recursivamente y compilar con make GEN=ninja release. Después de compilar, el binario de DuckDB empaquetado se puede ejecutar mediante ./build/release/duckdb. El proyecto también proporciona un conjunto de comandos de prueba para validar la extensión bajo diversas configuraciones, como ejecutar todas las pruebas con ./build/release/test/unittest, ejecutar un único archivo de prueba, ejecutar pruebas que coincidan con un patrón, ejecutar las pruebas centrales de DuckDB usando DuckLake como backend de almacenamiento, ejecutar las pruebas de DuckLake usando PostgreSQL o SQLite como base de datos de catálogo, y ejecutar pruebas con vectores de eliminación habilitados.