第5章. ストレージとクエリのパフォーマンスを最適化する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
可観測性スタックを細分化することで、ユーザは自分の遠隔測定やユースケースに最適なストレージソリューションを決めることができる。従来は、可観測性の柱ごとに最適化された様々なタイプのストレージシステムがあった。例えば
- メトリック
- Prometheus、Timescale、InfluxDB、その他の時系列データベースまたはキーバリューストア
- 過去ログ
- Grafana LokiとElasticsearch、OpenSearch、その他の検索エンジン
- 痕跡
- Grafana Tempo、Jaeger、Hypertrace、その他の列ストア
最近では、Apache PinotやClickHouseのようなリアルタイム分析データベースが、可観測性のユースケースに使用されることが増えている。なぜなら、それらは共通のリポジトリ(すなわち、第3章で述べた「Observability 1.5」)において複数の「柱」をサポートできるからである。
分散スタック内でデータベースをミックス&マッチする他の方法を見てみよう。Jaegerプラットフォームは実に多機能で、PostgreSQL、Cassandra、ClickHouseといったコミュニティがサポートする様々なバックエンドストレージオプションがある("Additional Storage Backends" 2025)。これらのストレージオプションはそれぞれ、サポートされる取り込み速度、クエリのパフォーマンス、クエリの柔軟性など、非常に異なる機能を提供する(Jegadish 2023)。
しかし、ユーザはJaegerのストレージバックエンドを完全にバイパスし、Jaegerエージェントからのテレメトリをリアルタイム分析のためにApache Pinotに直接ストリーミングしている(StarTree 2024)。
可観測性バックエンドとの相性をもう少し掘り下げてみよう。
高カーディナリティ、高次元、JSONのサポートに対応する
テレメトリの干し草の山から、特に干し草の山が非常に大きく複雑な場合、どうやって洞察の針を発見するのだろうか?
高カーディナリティとは、データ結果(列全体など)に対してユニークな値が多い場合である。低いカーディナリティの例として、公式の郵便略称を持つ米国の州、地区、準州、領地の数は合計59である(US Postal Service 2018)。この値を、Comcast(Cadieux 2024)のような大企業が常時管理しているかもしれない数十万のKubernetes Podや、T-Mobile(T-Mobile 2025)のような大規模な携帯電話ネットワークに接続されている1億2900万台以上のデバイスと比較してみよう。SessionID、userID、productID-これらはすべて高カーディナリティデータの例であり、ユニークな結果の数は通常数百万から数十億に及ぶ。
高次元とは、データの要素にどれだけ多くの異なる属性、特徴、変数が関連付けられているかを指す。例えば、モバイルデバイスIDの場合、携帯電話のタイプ(アンドロイドまたはiPhoneとそれぞれのモデル番号の列挙)、OSのバージョン、CPU、メモリ、ストレージの量(合計と使用量)、温度の読み取り値、地理空間座標(世界のどこにあるか)、携帯電話、OS、アプリケーション、ユーザ対話から取得した何百万もの他の変数があるかもしれない。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access