Об этом проекте
better-duck — это Rust-клиент для DuckDB, спроектированный вокруг встраиваемого использования, когда база данных работает внутри приложения, а не как отдельный сервер. Библиотека DuckDB C компилируется вместе с проектом, поэтому не требуется системный пакет или зависимость времени выполнения — это подходит для настольных приложений, кросс-сборок под мобильные платформы и аналогичных сред.
Проект разделён на крейты: better-duck-core (соединения, подготовленные выражения, массовый appender, покрытие типов, пользовательские функции), better-duck-diesel (бэкенд Diesel 2.3 с query DSL, миграциями, пулом r2d2 и специфичными для DuckDB SQL-функциями, агрегатами и операторами), better-duck-macros (процедурные макросы для UDF и derive-макросов данных, подключаемые через feature-флаги) и better-duck-sys (встроенные привязки к DuckDB C API).
Основные возможности включают построчный доступ к строкам и значениям без Arrow; обёрнутый FFI, благодаря которому unsafe-код не проникает в пользовательский код; покрытие типов DuckDB, таких как целые числа любой ширины, DECIMAL, UUID, BIT, BIGNUM, временные типы и составные типы LIST/ARRAY/STRUCT/MAP/UNION/ENUM; параметризованные запросы; массовый Appender; общие дескрипторы Database с пулингом r2d2 и асинхронным фасадом Tokio; а также вспомогательные средства управления расширениями.
Атрибутные макросы регистрируют обычные функции Rust как скалярные, табличные, агрегатные функции или функции приведения, при этом типы выводятся из сигнатур. Derive-макросы отображают структуры и перечисления на строки и типы DuckDB (FromRow, ToRow, DuckEnum, DuckStruct), а вспомогательные макросы покрывают транзакции и параметры. Бэкенд Diesel добавляет стандартные CRUD-операции, транзакции, специфичные для DuckDB SQL-типы, DSL функций и операторов DuckDB, пространственные помощники и менеджеры пулов.
Feature-флаги управляют встраиванием, преобразованиями chrono и decimal, расширениями JSON и Parquet, async, пулингом, UDF, derive-макросами и bindgen времени сборки. В README проект помечен как beta, с примечанием, что до версии 1.0 возможны ломающие изменения.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.