Đang tải nội dung…
Đang tải nội dung…
17 published articles. Newest first, across every topic and series.
A tumbling window needs an explicit grace policy. The lab sends five records through Kafka to measure which update is accepted and which is too late.
Message arrival order is not always business order. Ben and Tom compare arrival order, event time, and a domain version on the same Kafka stream.
A snapshot and WAL stream must meet at one consistent log position. The lab shows how creating that boundary too late leaves a projection stale.
Ben assumes committing the offset after processing is enough. One crash shows why consumers must tolerate replay and business effects need idempotency where they are written.
The lab measures a retained prepared-transaction lock and reproduces compensation arriving before the forward event; a state machine rejects the late action.
A 10,000-record run shows why more partitions do not split one hot key; salting lowers the peak by weakening the ordering boundary.
Two schedules leave a stale price in cache. Logical decoding retains the change while the consumer is offline and restores convergence.
A deadlock does not require two tables. The lab reproduces a PostgreSQL FK cycle, opposite InnoDB lock order, and a next-key wait.
Discard the first response and retry: the ledger reaches 200 without protection and 100 with a transactional key. Covers saved results, conflicting payloads, identity scope and retention.
Test unfiltered reads, cross-tenant writes, absent context and owner bypass. Covers transaction-local context, connection pools, FORCE RLS and the limits of custom settings.
Follow dual-write loss, relay redelivery and an atomic consumer inbox using real PostgreSQL and Redis Streams. Includes failure windows, operational costs and explicit limits.
Twelve synchronized readers create twelve origin operations with cache-aside and one with a double-checked lease. Covers token ownership, expiry and practical alternatives.
Reproduce a lost update, then compare a conditional atomic UPDATE with optimistic version checks. Includes conflict handling, stock guards and a PostgreSQL lab.
Hold a REPEATABLE READ snapshot, update 40,000 rows, then release it. Separate tuple cleanup, space reuse and VACUUM FULL with real measurements.
Compare plans before and after indexing 60,000 rows. Inspect selectivity, heap access, buffer counts and a forced alternative, with explicit timing limitations.
Deleting 45,000 rows leaves a 52 MiB file. Reinsertion reuses it; rebuilding shrinks it to 8 MiB. Includes real SQL, data fingerprints and operational trade-offs.
A technical reading room built around reproducible experiments, documented trade-offs and evidence.