I added a second engine to OxiDB next to the document engine, with its own WAL and files: enforced constraints, CTEs, window functions, stored procedures in Cobra bytecode, unmodified psql/psycopg and EF Core.
$ whoami
Hi, I'm Barış Akın.
I write about compilers, databases, distributed systems and user interfaces. This is where I share what I learn while building things from scratch.
rillrustoxidbzapgotypescript
Latest posts 23 posts
A deep dive into oxidb-tsdb, OxiDB's time series engine: Gorilla compression bit by bit, typed fields, line protocol, aggregations, continuous rollups with a watermark, low-lock backup and real compression ratios measured on my own sensor data.
I built a RESP-speaking key-value layer into OxiDB: five data types, TTLs, pub/sub, WATCH, Lua and snapshots. Real redis-cli and redis-py sessions, benchmarks against Redis 8.6, and the honest limits.
OxiDB's S3 layer: multipart, range and conditional reads, SSE-S3/SSE-C, SigV4 and presigned URLs, lifecycle expiry, how blobs sit on disk and full-text search inside uploaded files. All with real sessions.
The MQTT 3.1.1 and AMQP 0-9-1 brokers inside OxiDB: honest QoS 1/2, sessions and durable queues that survive kill -9, MQTT-to-collection ingest, and an AMQP worker consuming a sensor's MQTT publishes.
OxiDB's log engine: GELF and MessagePack ingestion over UDP, chunk reassembly, dynamic per-field indexing, per-collection retention, threshold alerts with webhooks, and oxidb-tail. Tested with real packets, defects included.
The oxidb-ledger crate I wrote for exchange journals: 40-byte fixed records, engine-assigned sequences, mmapped segments, retention by deleting files and per-stream fsync. With real measurements and two bugs I found.
oxidb-rec, OxiDB's fourth engine: it turns baskets into counters as they arrive and scores "customers who bought this also bought" with Dunning's LLR. Time buckets, LLR by hand, the on-disk layout and experiments with 12k orders on a real server.







