FinOpsフレームワークは、とても特殊なデータを扱います。
データ量が非常に多く、集計が中心です。
昨年、2つの異なるデータベースを両方使用して、経験を共有します。
この比較されるツールは次の2つです:
- OpenSearch
- ClickHouse
どちらも強力ですが、得意分野が違います。
1. FinOpsが必要としていること
FinOpsで必要なのは次のようなことです。
-
数十億行のコストデータを
- 合計する
- グループ化する
- フィルタする
-
次の軸で集計する
- 時間(日・月)
- サービス
- アカウント
- 組織
- アロケーションルール
-
数字が勝手に変わらないこと
データが挿入されると、その後の変更はあまりありません(変更される場合もある) -
ダッシュボード用の高速なクエリ
データはどこかから読み取られます。通常はUIダッシュボードに表示され、ユーザーが見たいデータが表示される。 -
再計算・バックフィルができること
特に最近のデータが更新されることもある。
この点は検索ではなく、分析です。
2. OpenSearch:検索は得意だが、重い計算は苦手
OpenSearch が得意なこと
- ドキュメントのフィルタリング
- 柔軟なスキーマ
- すばやいプロトタピングをできる
しかしFinOpsでは問題が出やすい
-
大きな集計が遅くなる。
データ量は簡単に過小評価される可能性がある -
クエリがすぐに複雑になる
データの構造によっては、ネストされたクエリが非常に急速に複雑になる。 -
メモリ使用量が増えやすい
一部の種類のクエリとマッピングは解決が困難なボトルネックを引き起こす可能性があるため、これは特に重要です。
OpenSearchでも分析はできますが、 分析のために作られたツールではなさそうです。
3. ClickHouse:FinOps向けに作られた分析エンジン
ClickHouseは次のために設計されています。
- 大規模な集計処理
- 時系列データ
これはまさに必要なものにぴったりそうでした。。Clickhouseは日本ではあまり知られていませんが、海外では人気が高まっています。そのためデータをClickHouseに移行することが決定した。エンジニアたちは短期間でClickHouseを使い始めましたが、すでにいくつかの改善が見られました。特に開発スピードが向上したことです。
4. 開発のしやすさ
OpenSearch
良い点
- スキーマが柔軟
- データ投入が簡単
悪い点
-
クエリがすぐ複雑になる
- JOINやnested集計が難しい
- 高速なクエリを書くのが分かりにくい
-
パフォーマンスを理解しにくい
- データの分布や書き方で性能が大きく変わる
- 深い知識が必要
-
スキーマ変更のコストが高い
- 構造を変えると再インデックスが必要
- 小さな変更でも時間と手間がかかる
ClickHouse
良い点
- OpenSearchのDSL「ドメイン固有言語 」より、複雑なクエリを理解しやすい
SQLは広く知られているため、読みにくい JSON に対する考え方を変える必要はない。 - パフォーマンスが予測しやすい
- 大量データ向けに設計されている
- 構造が理解しやすい
- Query Insightsにより、ボトルネックが分かりやすい
プラットフォームにツールが備わっていると本当に便利です。Query Insightsはデバッグやパフォーマンスチューニングに非常に役立ちます。
悪い点
- スキーマ設計を最初にしっかり考える必要がある
通常のリレーショナル データベースのように感じますが、行ではなく列で考える必要がある。 - カラム指向・パーティションの考え方が必要
5. クエリの分かりやすさの違い
特に強調したいのは、
ClickHouseのほうがクエリを書いて理解するのが圧倒的に簡単という点です。
プログラムから使う場合でも差はありますが、
データを直接調査する作業では大きな差になります。
特に、
- UI が使えない
- ターミナルから直接クエリを書く
こういう場合、違いはとても大きいです。本番環境では、データ探索用の独立UIツールが用意されていないことがよくありそう。OpenSearchの場合はデータベースクライアントやcurlを使用するのが一般的だと思います。
例:合計コストを計算する
特にOpenSearchを使用したことがない場合は、最も簡単なクエリ比較でも大きな違いが生じる。
ClickHouse(SQL)
SELECT
sum(data_line_item_unblended_cost) AS total_cost
FROM aws_cur_v2_0_allocations
WHERE data_line_item_usage_start_date
BETWEEN '2025-11-01' and '2025-11-30'
Opensearch DSL
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"data.line_item_usage_start_date": {
"gte": "2025-11-01",
"lt": "2025-12-01"
}
}
}
]
}
},
"aggs": {
"total_cost": {
"sum": { "field": "data.line_item_unblended_cost" }
}
}
}
これは一番シンプルな例ですが、
それでも SQL より分かりにくいです。
まとめ
OpenSearchがFinOpsに使えないわけではありません。
しかし ClickHouseのほうがFinOpsに明らかに向いているのをわかりました。
###OpenSearchに向いているもの
- 非構造データ
- ログ・イベント検索
ClickHouseに向いているもの
- 数値
- 日付
- 大量集計
FinOpsのように、構造化されたデータを大量に集計する用途では、ClickHouseが最適な選択がよさそうです。