Jatin Jain Saraf

Jatin Jain Saraf

Senior Software Engineer · SupraScan Architect

I make PostgreSQL work at production scale. Everything here is written from the pager alerts, not the docs: every case study, course module and article cost an incident first, and these are the notes I wish I'd had before it did.

Credentials

Senior Software Engineer, Supra (via CodeZeros)

Architect of SupraScan, Supra Blockchain's native explorer and indexer: 500–1,000 TPS on a PostgreSQL database that grew to 10 TB, now 2.7 TB.

6+ years in production engineering

From enterprise B2B platforms (Rapidops — Kroger, Salesmate CRM) to high-throughput Web3 indexing infrastructure.

Author, In-Depth course series

PostgreSQL, Node.js, Next.js, Redis, Docker, and Data Structures & Algorithms — free, documentation-style courses built from production incidents.

B.E. in Information Technology

Truba Institute of Engineering and Information Technology, Bhopal — 7.76 CGPA.

Case studies

All 12

Courses I've written

All courses

Recent articles

All articles
How a B-Tree Really Reads, Inserts, Updates and Deletes (and Where It Fails a Blockchain Indexer)A B-tree is cheap to search and expensive to keep sorted. Here’s what reads, inserts, updates and deletes actually do inside one in PostgreSQL, and how that should decide the index on every table of a blockchain indexer, from wallet history to balances to NFTs.Turning Your Blockchain Indexer Into a Paid API Without Slowing Down Your ExplorerTurning blockchain indexer data into a paid API is easy. Keeping API traffic from slowing your explorer or ingestion is the hard part. This post presents a production architecture using replica pools, read models, finality-aware caching, Redis quotas and per-plan bulkheads.Your Postgres Indexes Can Break Without a Single Line of Code ChangingYou bumped the base image or rebuilt a replica on a newer OS. No deploy, no migration. Then a unique index lets in a duplicate and an indexed lookup misses a row you can see. Here's how collation drift breaks B-tree indexes, how to prove it with amcheck, and the fix order that doesn't silence the only alarm.Your UUID Primary Keys Are Quietly Taxing Every InsertRandom UUIDv4 keys look harmless until the table grows. Every insert lands on a random B-tree leaf page, the index outgrows the buffer cache, pages split half-empty, and full-page writes inflate WAL after every checkpoint. A 10M-row PostgreSQL 18 benchmark shows the cost, and why native uuidv7() recovers almost all of it without giving up distributed ID generation.The TOAST Tax: How Unbounded JSONB Arrays Cost My Blockchain Indexer 5TBOur PostgreSQL blockchain indexer's TOAST table grew past 5TB because unbounded JSONB arrays kept getting bigger. Here's what TOAST was costing us, how to measure it, and how we moved hot JSONB fields into normal columns without taking the indexer offline.Every Postgres Write Triggers Five Background Processes. Here's What Each One Actually Does.An UPDATE returns in two milliseconds, but underneath, Postgres just ran WAL logging, checkpoint bookkeeping, wait-event tracking, vacuum, and ANALYZE to make that write durable, recoverable, and still fast to plan. Here's what each of those five processes actually does, and which one is usually behind the latency spike that has no slow query in sight.
Get in touch

© 2026 Jatin Jain Saraf (JJS). All rights reserved.