このプロジェクトについて

better-duckは、データベースが別個のサーバーとしてではなくアプリケーション内で動作する組み込み用途を中心に設計された、DuckDB向けのRustクライアントです。DuckDB Cライブラリがコンパイル時に組み込まれるため、システムパッケージやランタイム依存は不要で、デスクトップアプリ、モバイルのクロスビルド、および類似の環境に適しています。 プロジェクトは複数のクレートに分割されています。better-duck-core(接続、プリペアドステートメント、バルクアペンダー、型カバレッジ、ユーザー定義関数)、better-duck-diesel(クエリDSL、マイグレーション、r2d2プール、DuckDB固有のSQL関数・集約・演算子を備えたDiesel 2.3バックエンド)、better-duck-macros(UDFとデータderive用の手続きマクロ。フィーチャーフラグ経由で取り込まれる)、better-duck-sys(ベンダリングされたDuckDB C APIバインディング)です。 コア機能には、行指向でArrowに依存しない行と値へのアクセス、ユーザーコードにunsafeコードが漏れないようにラップされたFFI、あらゆる幅の整数、DECIMAL、UUID、BIT、BIGNUM、時間型、および複合型LIST/ARRAY/STRUCT/MAP/UNION/ENUMといったDuckDBの型のカバレッジ、パラメータ化クエリ、バルクAppender、r2d2プーリングとTokio非同期ファサードを備えた共有Databaseハンドル、拡張機能管理ヘルパーが含まれます。 属性マクロは、通常のRust関数をスカラー関数、テーブル関数、集約関数、またはキャスト関数として登録し、型はシグネチャから推論されます。deriveマクロは構造体と列挙型を行およびDuckDB型にマッピングし(FromRow、ToRow、DuckEnum、DuckStruct)、ヘルパーマクロはトランザクションとパラメータをカバーします。Dieselバックエンドは、標準的なCRUD、トランザクション、DuckDB固有のSQL型、DuckDB関数と演算子のDSL、空間ヘルパー、およびプーリングマネージャを追加します。 フィーチャーフラグは、バンドリング、chronoおよびdecimal変換、JSONおよびParquet拡張、非同期、プーリング、UDF、derive、ビルド時bindgenを制御します。READMEではプロジェクトをベータと位置づけ、1.0前に破壊的変更の可能性があると注記しています。