Every time you search on Google you get results that were crawled, indexed, and ranked just seconds or minutes ago. That near-real-time freshness did not come for free. For years, Google's web-crawl pipeline was a batch job: crawl the web, process everything offline, swap in the new index every few days. Pages changed faster than the pipeline could keep up.
In 2010, engineers Daniel Peng and Frank Dabek published Percolator, a system that replaced the batch pipeline with incremental updates. The key insight: wrap every tiny update — re-index one changed page, propagate one link change — in a full ACID transaction layered on top of the existing distributed key-value store (Bigtable). No locks held across machines for long, no coordinator bottleneck, yet every reader sees a consistent snapshot of the entire index.
The mechanism that makes it all work is called snapshot isolation with two-phase commit: a simple timestamp oracle hands every transaction a globally unique timestamp, and two carefully chosen key-value writes (a lock row and a write row) implement commit atomically.
Comments
Loading comments...