分単位、日単位、またはその他の日付範囲の分析を表示する必要がある場合は、時系列データベースを使用します。時系列データベースは、データポイントを関連するタイムスタンプとともに格納し、一定の時間内の傾向をユーザーに表示できるようにします。多くの場合、時間ベースの情報と分析の可視化に使用されます。
時系列データベースとは
時系列データベースでは、全てのレコードにタイムスタンプが含まれています。タイムスタンプは、単一のデータ・ポイントの表示や、グラフ作成、分析に使用できます。時系列データベースは、特に、天候の追跡や、監視目的で記録された特定のイベントに対するクエリなど、日付範囲を必要とする情報に使用されます。
時系列コレクションとは
時系列データベースには全てのデータが格納されますが、時系列コレクションはデータベースから取得され、アプリケーションに返されるデータのスライスです。時系列コレクションは、データセットの形式でデータベースから取得され、データセットには、指定された日付範囲のデータポイントが含まれます。ユーザーまたはアプリケーションは、時間範囲を入力としてデータベースに送信し、データベースは、指定された範囲内の各データポイントのコレクションを返します。
時系列データベースの仕組み
通常、時系列データベースは、将来の分析のために大量のデータをキャプチャするために作成されます。ユーザーは、アプリケーションで日付範囲を設定すると、データベースから一連のデータ・ポイントが返されます。データベースは、データを間隔でキャプチャすることで動作します。例えば、株価の変動を表示する株式表示機は、毎分株価の変化を表示する場合があります。データベースには、株価の名前、価格、タイムスタンプが保存され、分析や履歴情報のために、毎分株価の記録が保持されます。
時系列データベースから取得したデータは、レコードを時系列でソートするため、開発者はオーバーヘッドなしで視覚化を構築できます。データベースは強力なサーバーであるため、フロントエンドの Web アプリケーションよりもはるかに高速にデータセットをソートできます。時系列データベースは、アプリケーションから入力を受け、開発者が分析をユーザに表示できるように、データの順序を決定します。例えば、特定の日付範囲の株価に関するデータを、昇順に並べ替えるように要求できます。
人気の時系列データベース:比較
各時系列データベースには、データの保存と取得に使用されるバックエンド・エンジンが搭載されています。エンジンは、大量のデータを保存するために高速かつ効率的でなければならず、待ち時間が非常に少ない状態でデータを取得できる必要があります。従来のデータベースに時間ベースのデータを保存することはできますが、市場にある複数の時系列データベースは、この種のデータのクエリと保存のために特別に構築されています。
InfluxDB を使用する理由:オープンソース TSDB
オープンソース・データベースは、コードベースをフォークし、ベース製品に独自の変更を加えることができるため、開発者によっては推奨されます。InfluxDB は、毎秒数千のデータ・ポイントを格納できるオープンソースの時系列データベースです。産業用アプリケーション向けに IoT デバイスなどのインフラを監視したい場合は、InfluxDB が最適です。
Prometheus 対 InfluxDB
InfluxDB と Prometheus の主な違いは、データの取得方法です。InfluxDB では、アプリケーションは、データを保存および取得するデータベースに継続的に送信します。Prometheus は、アプリケーションがデータをプッシュする API を介して動作し、データベースは API を使用して格納されたデータに対してポーリングします。Prometheus のクラウドベースの API は、多数の場所にシステムを配置する大企業向けに、開発者が複数の場所からデータをアップロードし、中央ダッシュボードでレビューできるようにします。
TimescaleDB 対 InfluxDB
InfluxDB は NoSQL データベース、TimescaleDB はリレーショナル・データベースです。リレーショナル・データベースは、NoSQL データベースとは大きく異なります。リレーショナル・データベースは、各テーブルに格納されたデータを結合するために使用できるテーブルとキーで動作します。データベースがデータを保存する方法を知ることは重要です。取得される方法は異なる構文を使用するからです。保存されるデータをテーブルに整理できる場合は、TimescaleDB が実行可能なオプションです。
Elasticsearch 対 InfluxDB
Elasticsearch は、エンタープライズ・アプリケーションで使用される一般的なエンジンです。InfluxDB よりも性能がやや優れています。Elasticsearch に格納されたデータにマップされるインデックスをシャードする能力があります。Elasticsearch は、アプリケーションやユーザーが、さまざまなタイムスタンプから数百万のデータ・ポイントにまたがる可能性のあるデータセットを取得する大規模なデータセットに使用する必要があります。例えば、Elasticsearch は、大規模なエンタープライズ・ネットワーク環境を監視するために使用するログ・ファイルを確認する際に、疑わしいユーザー・アクティビティがないか確認するために便利です。
時系列データベースを使用するタイミング
ほとんどの時系列データベースは、ハードウェアやソフトウェアの監視に使用されるため、特定のイベントを分析するために大量のデータを使用できます。環境内のイベントを明確に把握するには、さまざまなソースから収集した大量のデータが必要です。例えば、IoT センサーは、複数のマシンから温度データを収集する場合があります。時系列データベースは、1 日 1 分ごとに温度を格納するため、エンジニアは異常を特定し、機械が故障する前にそれらを修正することができます。
リレーショナル・データベースと時系列データベースの比較
ほとんどの時系列データベースは、NoSQLドキュメントを使用してデータを保存します。これは、非構造化データを保存する一般的な方法です。非構造化データとは、開発者が、定義されたテーブル行にデータを整理する制限なしに、タイムスタンプや名前などのデータを保存できることを意味します。リレーショナル・データベースは、開発者が特定の構造を使用してデータを保存する必要があるため、値やデータ型が不明な時系列データには実行可能なオプションではありません。例えば、開発者はリレーショナル・データベースを使用してタイムスタンプ列に文字列値を保存できませんでしたが、時系列の NoSQL データベースで実行できます。
NoSQL 対 時系列データベース
不明な値の場合、NoSQL データベースが推奨されます。InfluxDB や Elasticsearch などの NoSQL をサポートするデータベースを選択する必要があります。これらの時系列データベースは、クエリ中の高速性能を備えたバルク・データ・ストレージを提供します。大半は大規模なエンタープライズ・アプリケーション専用で、展開ははるかに困難です。NoSQL データベースが正しく構成されていないと、クエリ処理中のパフォーマンスが阻害される可能性があります。
時系列データベースのメリット
全てのデータベースには情報が格納されていますが、時系列データベースは、時間ベースの分析のために特別に構築されています。時系列データベースの利点は、タイムスタンプを含む各データポイントに大量のデータを保存する能力にあります。大規模なデータセットを念頭に構築されているため、時系列データベースは、従来のデータベースよりも新しいレコードの挿入や大規模なデータセットの取得が高速で、はるかに効率的です。
時系列データベースは、日付や時刻を含むクエリに対してより正確であることが多く、時系列データをより効率的に格納します。監視データの保存を希望する組織は、時系列データベースを活用できます。アプリケーションは、分析、可視化、財務動向、活動情報、および異なる間隔で1日の間に頻繁に発生する環境の変化のために、大規模なデータセットを取得する能力から時系列データベースの恩恵を受けます。
時系列データベースの欠点
他の先進的なインフラストラクチャと同様に、時系列データベースの展開や構成はより困難です。その大半は NoSQL であるため、不適切に展開された NoSQL データベースは、最適化されていない場合、パフォーマンスの低下に悩まされます。構成では、データベースを最適化する適切な方法を理解するために、組織内の誰かが必要です。
時系列データの保存には、大量のデータを保存するためのリソースが必要です。データはクラウドに保存できますが、IT コストは増大します。データ・ストレージと時系列データベースの処理をサポートするインフラは、コストがかかる可能性があります。
まとめ
時間ベースのデータに最適なソリューションが必要な場合は、時系列データベースが最適です。データベース・エンジンの種類を確認し、コストを検討し、ビジネスの成長とデータ・ストレージの増加に合わせて拡張できるものを見つけます。構成と最適化のオプションを確認して、データベースができるだけ効率的に実行されるようにしてください。