## Memo ## Abstract 大規模なインターネット・サービスは、予期せぬ障害が発生しても高い可用性と応答性を維持することを目的としている。このようなサービスを提供するためには、多くのシステムで毎秒数千万件の計測値を監視・分析する必要があり、特に効果的なソリューションの1つは、このような計測値を時系列データベース(TSDB)に格納し、クエリを実行することである。TSDBの設計における重要な課題は、効率性、スケーラビリティ、信頼性のバランスをどのようにとるかである。本稿では、FacebookのインメモリTSDBであるGorillaを紹介する。我々の洞察は、監視システムのユーザは個々のデータ・ポイントをあまり重視せず、むしろ集約的な分析を重視し、進行中の問題の根本原因を迅速に検出・診断するためには、古いデータ・ポイントよりも最近のデータ・ポイントの方がはるかに価値が高いということである。Gorillaは、書き込みパスで少量のデータをドロップする可能性を犠牲にして、障害に直面しても書き込みと読み出しで高い可用性を維持するように最適化します。クエリの効率を向上させるため、デルタオブデルタのタイムスタンプやXORした浮動小数点値などの圧縮技術を積極的に活用し、ゴリラのストレージフットプリントを10分の1に削減しました。これにより、Gorillaのデータをメモリに保存できるようになり、従来のデータベース(HBase)でバックアップされた時系列データと比較して、クエリの待ち時間を73倍短縮し、クエリのスループットを14倍向上させることができました。この性能向上により、時系列相関検索やより高密度な可視化ツールなど、新たな監視・デバッグツールの利用が可能になった。Gorillaはまた、シングルノードからリージョン全体までの障害を、運用上のオーバーヘッドをほとんど発生させることなく、優雅に処理します。