Monarch: Google's Planet-Scale In-Memory Time Series Database

Colin Adams
Luis Alonso
Ben Atkin
John P. Banning
Sumeer Bhola
Rick Buskens
Ming Chen
Xi Chen
Yoo Chung
Qin Jia
Nick Sakharov
George T. Talbot
Adam Jacob Tart
Nick Taylor
VLDB Endowment (2020), 3181–3194

Abstract

Monarch is a globally-distributed in-memory time series database system in Google. Monarch runs as a multi-tenant service and is used mostly to monitor the availability, correctness, performance, load, and other aspects of billion-user-scale applications and systems at Google. Every second, the system ingests terabytes of time series data into memory and serves millions of queries. Monarch has a regionalized architecture for reliability and scalability, and global query and configuration planes that integrate the regions into a unified system. On top of its distributed architecture, Monarch has flexible configuration, an expressive relational data model, and powerful queries. This paper describes the structure of the system and the novel mechanisms that achieve a reliable and flexible unified system on a regionalized distributed architecture. We also share important lessons learned from a decade's experience of developing and running Monarch as a service in Google.