Uber is a real-time, two-sided marketplace: a rider requests a car and the system must hand them the nearest available driver within seconds. What makes it a hard system-design problem isn't storing trips — it's the live geospatial index.
Two forces collide:
- Location ingest is a write firehose — millions of drivers stream their GPS position every few seconds, so the index of "who is where" is being rewritten constantly.
- Matching is latency-critical and read-heavy — riders fire "find nearby drivers" queries against that same moving index and expect a match almost instantly.
The whole design is about building a spatial index that is cheap to update and cheap to query at massive scale, then matching two sides over it without ever dispatching one driver to two riders. This is the canonical "real-time matching over live geo data" interview.