Blog
Updates, design notes, and deep dives from the SecantusDB project.
-
Log-only-the-oplog becomes crash-safe: replay-on-open recovery lands
Summary: Log-only-the-oplog becomes crash-safe: replay-on-open recovery lands (v0.6.0b6).
The
SECANTUS_DATA_NONLOGGEDmode — the mongod storage architecture, where only the oplog is WAL-journaled and the data tables are checkpoint-durable — graduates from a measure-only benchmark probe to a recoverable configuration. A periodic stable checkpoint (60s cadence, the mongod default;SECANTUS_CHECKPOINT_SECONDSoverrides … -
The async oplog stack graduates to first-class options
Summary: The async oplog stack graduates to first-class options (v0.6.0b7).
The Rust server's storage write-path modes — the background oplog drainer, non-logged oplog tables, and the mongod-style log-only-the-oplog data mode with its stable-checkpoint cadence — were until now reachable only through process-wide
SECANTUS_*environment variables. They are now real, per-store … -
The Rust server's change streams get a real oplog visibility point
Summary: The Rust server's change streams get a real oplog visibility point (v0.6.0b5).
Concurrent writers on different collections could permanently lose a change event. The Rust server's tailable cursors treated the highest minted oplog seq as the readable tail, but a seq is minted inside its writer's still-open …
-
Restore full PGO on the arm64-macOS standalone binary
Summary: Restore full PGO on the arm64-macOS standalone binary (v0.6.0b4).
The arm64-macOS
secantusd-rsbinary's on-target profile-guided optimization is working again, after a run of macos-14-runner-specific failures. Two quirks (both Linux-immune) are now handled: the PGO instrumented build drops mimalloc (whose instrumented allocator internals segfault at startup), and — the … -
Fix `drop` (and other ops) on a never-written collection under lazy shards
Summary: Fix
drop(and other ops) on a never-written collection under lazy shards (v0.6.0b3).Lazy shard creation (0.6.0b2) makes a collection's documents shard exist only once something is written to it, and the Rust server's
drop_collectionranpurge_collection_tablesunconditionally — which opened the collection's shard cursor and … -
RecordId storage on both servers, faster writes, a decoupled oplog, and an Ops Board
Summary: RecordId storage on both servers, faster writes, a decoupled oplog, and an Ops Board (v0.6.0b1).
The headline change is that both servers now use the same on-disk document layout, byte for byte. The Python server's document table is keyed by RecordId — a monotonic insertion counter — exactly as …
-
Say no like mongod: an operator-fidelity sweep, and a Rust server that clears every gauge
Summary: Say no like mongod: an operator-fidelity sweep, and a Rust server that clears every gauge (v0.6.0b0).
The single largest theme in this release is learning to fail correctly. Roughly sixty slices went through the query, update, and aggregation operators asking one question of each: when the argument …
-
Measured everywhere: a concurrent test suite that caught real bugs, three-way benchmarks, and self-hosted docs
Summary: Measured everywhere: a concurrent test suite that caught real bugs, three-way benchmarks, and self-hosted docs (v0.5.4b236).
SecantusDB now measures itself against real
mongodin both dimensions. The per-operation benchmark became a three-way comparison — the Rust server lands at 2.1×–4.5× of mongod, roughly 2.7 … -
SQL: user-defined range types, and enum OIDs in every plan shape
Summary: SQL: user-defined range types, and enum OIDs in every plan shape (v0.5.4b237).
A focused SQL-server release, both slices driven by the psycopg conformance gauge.
CREATE TYPE ... AS RANGEbrings user-defined range types end to end — catalog rows, the v3 extended protocol's binary codec path, and range operators … -
Point-in-time recovery, a SQL server with its own gauges, and operator parity across both servers
Summary: Point-in-time recovery, a SQL server with its own gauges, and operator parity across both servers (v0.5.4b235).
This is the largest SecantusDB release to date — a month of parallel work, 125 changelog entries. The headline capability is point-in-time recovery: every write already flowed through the oplog, and
secantusAdmin …