FalkorDB-rs Dev Log
Field notes from building the FalkorDB Rust client — the good decisions, the embarrassing ones, and why we keep betting on Rust for a graph database.
Every code sample and every benchmark on this site is a real file that compiles in CI. If it's on the page, it built. (More on that trick in the posts.)
All posts
-
Read your writes: opt-in replica routing via Sentinel
Routing read-only queries to replicas is a correctness decision, not just a throughput knob. Here's why we made it opt-in, per-client and per-query.
-
Production-grade: retries, tracing spans, metrics, and error hints
Opt-in retries that never duplicate a write, OpenTelemetry-aligned tracing with a privacy-safe query fingerprint, bounded metrics, and errors that tell you how to fix them.
-
Typed mapping with serde, and temporal values that do real math
Deserialize rows straight into your own structs with serde, and decode FalkorDB date/time/duration values into types with a checked, type-safe algebra.
-
Batteries included: an embedded FalkorDB you can cargo run
Spin up a real FalkorDB from your Rust process — auto-provisioned module, cached or downloaded, or embedded at build time for fully offline runtime.
-
Async all the way down: streaming results and connection multiplexing
Result sets that are Streams you compose with the futures toolbox, and a multiplexed connection strategy — with a real pooled-vs-multiplexed benchmark.
-
Rows that don't lie: header-aware, fallible result iteration
A result API where every row is a FalkorResult<Row>, columns are read by name, and a value that fails to parse is an Err you can handle — not a panic.
-
Stop hand-quoting Cypher: type-safe, injection-proof parameters
Bound query parameters that take real Rust values, encode them correctly, and make Cypher injection a compile-time non-event.
-
Why I keep betting on Rust for a graph database client
Kicking off a dev log about the FalkorDB Rust client — the vision, the Rust bet, and a promise: every snippet on this blog compiles in CI.