膨大なログを低頻度だけど検索したいみたいな需要のソリューションについて考える
※特に答えはないので注意
例えば、監査ログのような類のもの。
- 日次で少なくとも n GB 収集する
- クエリを書いてraw logを見たい
- 頻度は月に1回あるかないか
コスパを考えるとファイルを圧縮して Cloud Storage に放り込んでおいて、好きなときにクエリ毎課金で参照する系のソリューションで、 BigQuery や Amazon Athena になる。 Azure だとそれにあたるものがなく*1代わりに Azure Databricks (Manged Spark) を使うとよいらしいとのことだったので少し触ってみた。
- 課金はVM+DBU(VMとクラスタ種類毎の追加料金)
- クラスタを立ち上げているときだけ、分単位で課金
- notebook でクエリが書ける
- dashboard で軽く可視化もできる
- Streamを扱ったりアグリゲートして何かをすることもできる
結論として、UXや費用的には問題なさそう。一方で、別にデータ分析や複雑な変換処理がしたいわけではないので、こんなに高機能である必要もないし関心事も増えるので、要件に対してはオーバーな感はある。
Cloud Storage に入れておくログは、圧縮しつつクエリも速いため Parquet がよさそう。 列指向ファイルフォーマットの仕組みはこの記事がわかりやすかった。(概要だけ引用)
カラムナフォーマットとは、データベースの分析用途に利用されるファイルフォーマットの種類の一つです。大量のデータを扱う際に効率的に圧縮してストレージコストを下げたり、計算時に必要なデータだけを取り出して計算コストを小さくできる設計がされています。
ちなみに BigQuery や Athena も Parquet サポートしているのであとで引っ越すこともできる。
- BigQuery
- インポート時にCapacitor(BigQueryのカラムナーフォーマット)に変換される
- 最初から BigQuery を採用するならあまりフォーマットは気にしなくていいのかもしれない
- Amazon Athena
*1:Buildでチラ見せされたAthena風の機能が年末リリースされるという噂があるがどうなんだろう?