InfluxDataは、データベースエンジンの新バージョン「Influx IOx」を一般公開し、InfluxDB Cloudで利用可能になった。
InfluxDataの公式ツイートにもあるように、Rustで開発された新エンジンは、メトリクス、イベント、トレースを扱うことができる。メトリクスは、ソースから一定間隔でポーリングされる時系列で、サービスのパフォーマンスや可用性を理解するのに役立つ。イベントは、何らかの条件(デプロイされたコードやHTTP 5XXエラーなど)によって引き起こされる状態の変化であり、メトリクスとの関連付けでさらなるインサイトを得ることが可能だ。トレースは、分散システムにおけるリクエストの伝搬を示す情報を取得できる。
Influx IOxは、InfluxDB Cloudがリアルタイムでデータを取り込み、即座にメトリクスを導き出すことが可能だ。InfuxDBは、カーディナリティの高いデータに依存するオブザーバビリティと分散トレースのユースケースをより良く扱えるようになった。分散システムでは、各コンポーネントが他のコンポーネントとの関係でどのように動作しているかを知るのが重要である。あるコンポーネントは他のコンポーネントに依存しており、エラー、ボトルネック、遅延がシステム全体のパフォーマンスに影響を与える可能性がある。
トレースは、異なるコンポーネントがどのように連携して動作しているかを理解するために使用されるオブザーバビリティの概念である。一連のトレースは、リクエストやオペレーション、タスク、その他の作業単位が分散システムでどう動作しているかを示してくれ、トレースデータは定義上、高基準のデータである。時系列データベースの場合、ユーザーID、IPアドレス、コンテナIDのような境界のない値を持つデータでは、カーディナリティが問題になる場合がある。カーディナリティが高いと、データベースのインデックス作成方法によって、スケールアップ時のパフォーマンスに影響を与える可能性をはらんでいる。
新しいエンジンは、新たなカラム構造と圧縮能力も備えており、InfluxDB Cloudは境界のないデータのタグ値を性能を落とさずに処理可能になった。データ永続化のための新しいフォーマットはApache Parquetで、より優れた圧縮(と低いストレージコスト)が可能となった。新しいデータが到着すると、IOx はテーブルのカラムにデータを書き込み、新しい Parquet ファイルに保存する。IOxはデータを書き込む際、Parquetのメタデータにカラムのコンテキストを表すヒントを含められる。これらのメタデータはクエリ時にクエリエンジンがParquetファイル全体やファイルの興味のない部分をスキップするために利用される。並列処理、インメモリキャッシュ、プッシュダウンの概念も、低遅延のクエリ性能を向上させるためにクエリエンジンによって使用されるのだ。
RustベースのクエリエンジンであるApace DataFusionの利用により、開発者はネイティブなSQLクエリで情報収集が可能になった。またより高度なデータ処理にはFlux言語を使用できる。
本稿執筆時点で、このデータベースエンジンはAWSのバージニア(us-east-1)とフランクフルト(eu-central-1)の2つのリージョンで提供されている。今後は新しいアベイラビリティゾーンが予定されており、AzureやGoogle Cloudでの提供開始も追加される予定である。