時系列データベースと時系列データの紹介(実践編)

2017年に、時系列データの学術的な性質に関するブログを投稿しました。今回のブログでは、2017年のブログに引き続き、時系列データベースとその中に保存されているデータについて実践的に紹介します。

Googleトレンドチャートを見ると、データストレージシステムの進歩と近年のビッグデータ革命により、時系列データベースへの関心が再び高まっていることが推測できます。

時系列データとは何か?

時系列データは、時間情報(タイムスタンプ)が記録されたデータまたはその時点で発生したイベントに対応する一連の値です。 データの間隔は、定期的な間隔と変動する間隔どちらに設定することもできます。 たとえば、温度記録は設定された時間、毎分または毎時間に記録され、株価は取引が完了するたびに記録されます。

時系列データは通常、ログまたは「追加専用」であり、レコードは、有効期限が切れた場合の削除を除き、めったに更新されません。 Webサーバーのログの値を更新することはなく、ほとんどの時系列データコレクションについても同様です。

必要なレイテンシーに応じて、個々のレコードを一度に1つずつ挿入できますが、多くの場合、一括で挿入されます。 Kafkaなどのメッセージングシステムは、個別のレコードを一括で挿入するためにキューに入れたり、クライアントアプリケーションを一定期間に1回挿入するようにキャッシュを構成したりすることができます。

時系列データベースとは何か?

簡潔に言うと、時系列データベースは時系列データの保存とクエリに特化したデータベースです。他のリレーショナルデータベースやNoSQLデータベースに格納してクエリを実行することは可能ですが、時系列データベースには、次のような優れた時間関連の機能があります。

  • 時間加重平均:時間レコードが不規則な間隔で挿入されると、通常の平均集計は誤った結果を返します。GridDBのTIME_AVG 関数は時間加重平均で集計を行うため正しい結果を返すことができます。
  • タイムダウンサンプリング:多くのアプリケーションでは、時系列データは非常に高い解像度で記録されますが、多くの場合、たとえばグラフにデータを入力するために、より低い解像度で照会する必要があります。GridDBのTIME_SAMPLING 関数は、要求された間隔でデータが返され、特定の間隔のタイムスタンプに完全に一致しない場合、メトリックはタイムスタンプの前後に補完されます。
  • より簡単な比較演算子:時系列データベースを使用すると、1つの単純な関数呼び出しを比較タイムスタンプを文字列として使用するだけでなく、複数の方法でタイムスタンプを比較することができます。
  • 圧縮の効率化:時系列データベースはキー値がタイムスタンプであることを認識しているため、保存するデータをより効果的に圧縮およびインデックス化することができます。GridDBの storeCompressionMode オプションは圧縮を有効にし、必要なストレージを最大3倍削減します。
  • 自動的なデータの保存期限設定:時間が経つにつれて、古いデータの価値がなくなったり、保存する必要がなくなったりする場合があります。これに対処するため、GridDBおよび他の多くのTime Seriesデータベースには、設定された時間よりも古いデータをローリング方式で自動的にプルーニングする機能があります。
  • 挿入・追加の最適化:時系列データは更新できますが、多くの時系列データベースにおいてはログまたはトランザクションベースのデータストレージバックエンドを使用するため、新しいデータを挿入するのが一般的です。

    どのようなアプリケーションで時系列データを使用するか?

    ほぼすべてのデータが時系列データになり得ると言えます。 たとえば、購入したい製品の現在の価格だけを気にすることもできますが、その製品の過去の価格を確認して、セールになるまで待つべきかどうかを判断することもできます。したがって、通常はドキュメント指向のデータベースに格納される製品情報は、時系列データベースに格納するのにも部分的に適していると言えるでしょう。

    Internet of Things

    IoT(Internet of Things)は、センサーデータを記録する何百万ものデバイスを持つ時系列データのユーザーの間で最も話題になっていると言えるかもしれません。 典型的な例として、温度や、ドアのロックやロック解除などの環境イベントの生成などがあります。 膨大な量のデータが記録されるため、時系列データベースを使用して、着信データを効率的に保存、処理、分析することが不可欠です。GridDBのKey-Containerデータモデルは、各デバイスの時系列データが個別のコンテナーに保存されるIoTワークロードで特にうまく機能します。

    金融取引

    金融の勘定元帳は、時系列で貸方・借方、および残高を追跡するという点で元祖の時系列データベースであると言えるかもしれません。領収書または販売履歴にはすべてメトリックがあります。株式取引も時系列データモデルによく適合しており、最新の値と過去のすべての取引価格とボリュームのいずれもが重要な意味を持ちます。

    アプリケーションモニタリング

    サーバーログは、時系列データの最も単純明白な例の1つですが、使用されるアプリケーションモニタリングの種類は様々です。 モバイルアプリケーションによってアップロードされたテレメトリは時系列データベースに保存できるため、開発者は使用パターンを調べてアプリケーションを改善できます。サーバーメトリックを監視して、ピークとトラフの使用状況を確認し、システム管理者が容量が十分であるか確認するだけでなく、異常がないか調べることもできます。

    時系列データをどのように使用するか?

    ここまでに、なぜ時系列データベースが重要であるかの理由と、どのような時系列データが使われるかについて説明してきました。ここでは時系列データをどのように使用するかについて説明します。

  • 請求・レポート:請求書やレポートを出す場合、多くはメトリックのSUMまたはCOUNTを計算する集計関数を使用します。 レポートまたは請求書は定期的に生成されます。
  • 視覚化:時系列のメトリックスのプロットは、株式市場や気象情報などの様々な種類の時系列データを、視覚化して日々確認することができる最も一般的な方法の1つです。
  • アラート:モニタリングアプリケーションでは、メトリックがしきい値を超えると、所定のメッセージングシステムを介してアラートを送信することができます。この一般的な例の1つとして、マシンセンサーを監視し、値が通常の動作しきい値を超えている場合にメンテナンススタッフに警告を送信する、Industrial IoTがあります。

    時系列アプリケーションの例

    ここまでで、時系列データがみなさんが当初想像していたよりも重要なものであることがお分かりいただけたでしょうか。IoTの新興産業は全体的に時系列データに依存しています。そのため、車両管理システムを構築したり、あるいは次世代スマートシティを計画するにあたり、時系列データとその管理が、すべてを適切かつ効率的に実行するための重要な要素になるでしょう。

    上記のような新興産業のアプリケーションでは、最新のロギング・分析アプリケーションもますます複雑になり、データを大量に消費するようになりました。たとえば、Grafanaは、優秀であり、時系列データベースの基盤の上に構築されています。プロジェクトページをチェックして、GridDBがGrafanaとどのように連携するかを確認してください。今すぐGridDBを使い始めて、アプリケーションでより速く、そして増え続ける時系列データでより大きく成長するのがいかに簡単かを見てください。

    ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb

  • Leave a Reply

    Your email address will not be published. Required fields are marked *