Search engine

· Lars Nielsen

One Host's Backlog Was 6x Larger Than Any Other, and a Generic Query Choked On It

A query written to handle "a host's uncrawled pages" ran fine against every host in the corpus except one. That one host had six times as many uncrawled pages as the next largest, and a query shaped around the assumption of an ordinary-sized host turned a routine operation into a hundred-second stall.

Read article One Host's Backlog Was 6x Larger Than Any Other, and a Generic Query Choked On It
· Lars Nielsen

Two Graph Databases, Evaluated Independently, Both Abandoned Before Real Use

Two different graph databases got evaluated for the same search engine, three weeks apart, by way of two completely independent efforts. Neither one made it into production. The second attempt's own closing writeup ends up explaining, cleanly, why the first one never had a chance either — even though nobody set out to prove that when either evaluation started.

Read article Two Graph Databases, Evaluated Independently, Both Abandoned Before Real Use
· Lars Nielsen

Why the Graph Database's Own Query Language Had to Be Skipped for the Bulk Load

Loading data into a graph database usually means writing it in the graph database's own query language. For one real workload — 388 million edges — that turned out to be the one approach guaranteed not to finish. The fix wasn't a tuning flag or a bigger machine. It was skipping the query language entirely.

Read article Why the Graph Database's Own Query Language Had to Be Skipped for the Bulk Load
· Lars Nielsen

One ALTER DATABASE Silently Rebuilt an Entire 22-Table Schema in the Wrong Place

Fixing one database incident accidentally created a second, unrelated one — and the second one hid the evidence needed to see whether the first one was actually fixed. One misordered database setting, changed to avoid a minor inconvenience, ended with an entire application's schema rebuilt from scratch in the wrong place.

Read article One ALTER DATABASE Silently Rebuilt an Entire 22-Table Schema in the Wrong Place
· Lars Nielsen

A Docker Image Swap Made a Valid Index Quietly Lie to Production

A search engine's Postgres database swapped one Docker image for another — the same Postgres version, same data, same disk. Nothing about that should have touched a single row. It changed how the database compares strings, and for days, an index that reported itself perfectly healthy was quietly giving wrong answers to live production queries.

Read article A Docker Image Swap Made a Valid Index Quietly Lie to Production
· Lars Nielsen

A Stat That Reads Zero Right After a Restart, and the Difference Between Checking and Panicking

Right after a routine Postgres container swap, a quick health check showed zero live rows in three of the database's most important tables. For a moment, that looked exactly like catastrophic data loss. It wasn't — and the difference between panicking and checking came down to running one more, cheaper query before believing the first one.

Read article A Stat That Reads Zero Right After a Restart, and the Difference Between Checking and Panicking
· Lars Nielsen

The Boring Door

A cryptominer showed up on production twice in one morning. The interesting part wasn't the malware — it was how ordinary the way in turned out to be, and how many wrong turns it took to find it.

Read article The Boring Door
Subscribe to Search engine