프로젝트 소개
better-duck는 DuckDB를 위한 Rust 클라이언트로, 데이터베이스가 별도 서버가 아닌 애플리케이션 내부에서 실행되는 임베디드 사용을 중심으로 설계되었습니다. DuckDB C 라이브러리가 컴파일되어 있어 시스템 패키지나 런타임 의존성이 필요 없으며, 데스크톱 앱, 모바일 크로스 빌드 및 유사한 환경에 적합합니다.
프로젝트는 여러 크레이트로 나뉩니다: better-duck-core(연결, 준비된 문, 대량 appender, 타입 커버리지, 사용자 정의 함수), 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 이전에 호환성이 깨지는 변경이 가능함을 언급합니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.