{"repo":"artie-labs/ducktape","free":true,"listed":false,"github":"https://github.com/artie-labs/ducktape","clone":"git clone https://github.com/artie-labs/ducktape.git","description":"Lightweight REST API for DuckDB with HTTP/2 streaming support.","language":"Go","stars":64,"topics":["database","duckdb","http-server","streaming"],"license":"MIT","category":"databases-storage","readme_excerpt":"Ducktape 🦆 Lightweight REST API for DuckDB with HTTP/2 streaming support. What is ducktape? Ducktape is a standalone microservice to: - Append : Append rows directly into DuckDB by streaming NDJSON over HTTP/2. - Query : Fetch rows from DuckDB. - Execute : Run statements within a transaction. Why? DuckDB's Go driver requires CGO, which breaks cross-compilation, complicates CI/CD, and bloats Docker images. Instead of rewriting the build pipelines for Transfer, we isolated DuckDB behind a network boundary. The performance penalty is small— 90% of native throughput over the network. Pure Go apps stay portable; ducktape handles the CGO. A native Go client library is included. How it works Ducktape uses: - HTTP/2 streaming for high-throughput ingestion - DuckDB's Appender API for fast, type-aware row insertion - NDJSON as a simple, language-agnostic wire format If your app can produce NDJSON, it can talk to ducktape. Performance Benchmark Throughput ------------------------ ------------ In-process DuckDB append 848 MiB/sec Ducktape over HTTP/2 757 MiB/sec That's 90% of native performance , even across the network. For real-time ingestion workloads, this was fast enough that we didn't need to embed DuckDB at all. See BENCHMARKS.md for detailed results. Quick start Docker Development Server runs on port 8080 by default. API usage Execute Execute one or more SQL statements in a transaction: Query Query after running an init script This example uses an init script stored in the conta","default_branch":null,"files":null,"tree":[],"storefront":"/r/artie-labs","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/artie-labs/ducktape/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}