「the」データベースが、データセンター内の最も強力なサーバーに通常インストールされている単一のリレーショナルデータベース管理システムであった時代は過ぎ去りました。このようなデータベースは、OLTP、OLAP、ビジネスに必要なあらゆる種類の要求に対応しました。現在、データベースはコモディティハードウェア上で実行されますが、高可用性の点でもより洗練されており、特定のタイプのトラフィックを処理するために特化されています。特殊化により、パフォーマンスが大幅に向上します。すべてが特定の種類のデータを処理するように最適化されます。オプティマイザー、ストレージエンジン、言語でさえ、以前のようにSQLである必要はありません。 SQLベースで、より効率的なデータ操作を可能にするいくつかの拡張機能を備えている場合もあれば、まったく新しいもので、ゼロから作成されている場合もあります。
現在、ClickHouseやMariaDB AXのような分析的な列型データベース、Hadoopのようなビッグデータプラットフォーム、MongoDBやCassandraのようなNoSQLソリューション、RedisのようなKey-Valueデータストアがあります。 PrometheusやTimeScaleDBなどの時系列データベースもあります。これは、このブログ投稿で焦点を当てるものです。時系列データベース-それらは何であり、環境でさらに別のデータストアを使用する理由。
時系列データベースの目的は何ですか?
名前が示すように、時系列データベースは、時間とともに変化するデータを格納するように設計されています。これは、時間の経過とともに収集されたあらゆる種類のデータである可能性があります。一部のシステムから収集された指標である可能性があります。すべてのトレンドシステムは時系列データの例です。
ClusterControlのダッシュボードを見るときはいつでも、時系列データベースであるPrometheusに保存されている時系列データの視覚的表現を実際に見ています。
時系列データはデータベースメトリックに限定されません。すべてがメトリックになる可能性があります。モールに入る人の流れは時間とともにどのように変化しますか?都市の交通量はどのように変化しますか?日中、公共交通機関の利用はどのように変化しますか?川や川の水の流れ。水生植物によって生成されるエネルギーの量。これらすべて、および時間で測定できる他のすべては、時系列データの例です。さまざまな指標間の相関関係を見つけるために、クエリ、プロット、分析できるこのようなデータ。
時系列データベースでデータはどのように構成されていますか?
ご想像のとおり、時系列データベースで最も重要なデータは時間です。データを保存する主な方法は2つあります。 1つは、キー値ストレージに似たものが次のようになります。
タイムスタンプ | メトリック1 |
---|---|
2019-03-28 00:00:01 | 2356 |
2019-03-28 00:00:02 | 6874 |
2019-03-28 00:00:03 | 3245 |
2019-03-28 00:00:04 | 2340 |
つまり、タイムスタンプごとに、メトリックに何らかの値があります。
別の例には、より多くのメトリックが含まれます。各メトリックを個別のテーブルまたはコレクションに保存する代わりに、複数のメトリックを一緒に保存することができます。
タイムスタンプ | メトリック1 | メトリック2 | メトリック3 | メトリック4 | メトリック5 |
---|---|---|---|---|---|
2019-03-28 00:00:01 | 765 | 873 | 124 | 98 | 0 |
2019-03-28 00:00:02 | 5876 | 765 | 872 | 7864 | 634 |
2019-03-28 00:00:03 | 234 | 7679 | 98 | 65 | 34 |
2019-03-28 00:00:04 | 345 | 3 | 598 | 0 | 7345 |
このデータ構造は、メトリックが関連している場合にデータをより効率的にクエリするのに役立ちます。複数のテーブルを読み取り、それらを結合してすべてのメトリックをまとめる代わりに、1つのテーブルを読み取るだけで、すべてのデータを処理して表示する準備が整います。
あなたは不思議に思うかもしれません-ここで本当に新しいものは何ですか?これは、MySQLまたは他のリレーショナルデータベースの通常のテーブルとどのように異なりますか?テーブルの設計は非常に似ていますが、ワークロードに大きな違いがあり、データストアがそれらを活用するように設計されている場合、パフォーマンスが大幅に向上する可能性があります。
通常、時系列データは追加されるだけです。古いデータを更新する可能性はほとんどありません。通常、特定の行を削除することはありませんが、時間の経過に伴うデータのある種の集約が必要になる場合があります。これは、データベース内部を設計するときに考慮に入れると、オンライントランザクション処理タイプのトラフィックを処理することを目的とした「標準」リレーショナル(リレーショナルではない)データベースとは大きく異なります。最も重要なのは、一貫して保存する機能です。 (jngest)時間とともに入ってくる大量のデータ。
RDBMSを使用して時系列データを格納することは可能ですが、RDBMSはそのために最適化されていません。その背後で生成されたデータとインデックスは非常に大きくなり、クエリが遅くなる可能性があります。 RDBMSで使用されるストレージエンジンは、さまざまな異なるデータ型を格納するように設計されています。これらは通常、頻繁なデータの変更と削除を含むオンライントランザクション処理ワークロード用に最適化されています。リレーショナルデータベースは、時系列データの処理に関連する特殊な機能や機能を欠いている傾向があります。おそらく、特定の期間より古いデータを集約する必要があると述べました。また、時系列データに対していくつかの統計関数を簡単に実行して、データを平滑化し、傾向を判断して比較し、データを補間できるようにすることもできます。たとえば、ここでは、Prometheusがユーザーに提供する機能のいくつかを見つけることができます。
時系列データベースの例
市場には複数の既存の時系列データベースがあるため、それらすべてを網羅することはできません。知っている、または使用している可能性のある時系列データベースの例をいくつか示したいと思います(知っているかどうかは関係ありません)。
InfluxDB
InfluxDBはInfluxDataによって作成されました。 Goで記述されたオープンソースの時系列データベースです。データストアは、データをクエリするためのSQLに似た言語を提供します。これにより、開発者はアプリケーションに簡単に統合できます。 InfluxDBは、時系列データを処理するためのフル機能の高可用性環境を提供するように設計されたスタック全体をカバーする商用サービスの一部としても機能します。
プロメテウス
Prometheusは、同じくGoで記述されているもう1つのオープンソースプロジェクトです。これは通常、Percona MonitoringandManagementなどのさまざまなオープンソースツールやプロジェクトのバックエンドとして使用されます。 Prometheusは、ClusterControlに最適な時系列データベースでもあります。
PrometheusはClusterControlからデプロイして、ClusterControlによって監視および管理されるデータベースサーバーで収集された時系列データを保存するために使用できます。
Prometheusはオープンソースの世界で広く使用されているため、複数のエクスポーターを使用して既存の環境に簡単に統合できます。
RRDtool
これは、多くの人が知らないうちに使用する時系列データベースの例かもしれません。 RRDtoolは、時系列データを保存および視覚化するための非常に人気のあるオープンソースプロジェクトです。 Cactiを使用したことがある場合は、RRDtoolに基づいています。独自のソリューションを設計した場合は、データを保存するためのバックエンドとしてRRDtoolも使用した可能性があります。現在は以前ほど人気がありませんが、2000年から2010年にかけて、これが時系列データを保存する最も一般的な方法でした。おもしろい事実-ClusterControlの初期のバージョンはそれを利用していました。
タイムスケール
TimeScaleは、PostgreSQL上に開発された時系列データベースです。これはPostgreSQLの拡張機能であり、データへのアクセスを提供するために基盤となるデータストアに依存しています。つまり、使用する可能性のあるすべてのSQLを受け入れます。拡張機能であるため、PostgreSQLの他のすべての機能と拡張機能を利用します。時系列と他のタイプのデータを混在させることができます。たとえば、時系列とメタデータを結合して、出力を充実させることができます。 JOINと非時系列テーブルを利用して、より高度なフィルタリングを実行することもできます。 PostgreSQL TimeScaleでGISサポートを活用すると、地理的な場所を経時的に追跡するのに簡単に使用できます。また、レプリケーションを含め、PostgreSQLが提供するすべてのスケーリングの可能性を活用できます。
タイムストリーム
アマゾンウェブサービスには、時系列データベースのオファリングもあります。タイムストリームはごく最近、2018年11月に発表されました。これにより、AWSポートフォリオに別のデータストアが追加され、ユーザーはモノのインターネットアプライアンスや監視対象サービスなどのソースからの時系列データを処理できるようになります。また、複数のサービスによって作成されたログから派生したメトリックを保存するために使用できるため、ユーザーはそれらに対して分析クエリを実行でき、サービスが機能するパターンと条件を理解するのに役立ちます。
ほとんどのAWSサービスと同様に、Timestreamは、データの保存と分析の必要性が時間とともに増大した場合に、簡単にスケーリングする方法を提供します。
ご覧のとおり、市場には数多くのオプションがあり、これは驚くべきことではありません。時系列データ分析は最近ますます勢いを増しており、事業運営にとってますます重要になっています。幸いなことに、オープンソースと商用の両方で多数の製品が提供されていることを考えると、ニーズに合ったツールを見つけることができる可能性が非常に高くなります。