時系列
時系列データとは、時間の経過に伴う変化を分析することでインサイトを得られるデータ ポイント列です。
通常、時系列データを構成するのは以下のコンポーネントです。
時間: データ ポイントが記録されています。
メタデータ(ソースとも): シリーズを一意に識別するラベルやタグのこと。ほとんど変更されることはありません。
測定値(メトリクスまたは値とも): 時間の経過とともに追跡されるデータ ポイントです。一般的に、時間とともに変化するキーと値のペアです。
次の表に、時系列データの例を示します。
例 | 測定値 | Metadata |
---|---|---|
株価データ | 株価 | 株式ティッカー、取引所 |
気象データ | 温度 | センサー識別子、ロケーション |
ウェブサイトの訪問者 | 閲覧数 | URL |
時系列データ ストレージの効率化に向け、MongoDB では時系列コレクションを提供しています。
時系列コレクション
バージョン 5.0 で追加
時系列コレクションは時系列データを効率的にストアします。時系列コレクションでは、同じソースから収集されたデータが、ほぼ同じ時点のデータ ポイントと一緒にストアされるよう、書込みが整理されます。
MongoDB Atlas でホストされている配置向け に UI で時系列コレクションを 作成 できます。
メリット
時系列データを時系列コレクションに保存すると、通常のコレクションと比較して、クエリの効率が向上し、時系列データやセカンダリインデックスのディスク使用量が削減されます。
時系列コレクションは、基礎となる列指向ストレージ形式を使用して、自動作成されるクラスター化インデックスを使用して時間順にデータを保存します。 列指向ストレージ形式には、次のメリットがあります。
時系列データの操作の簡素化
クエリ効率の向上
ディスク使用量の削減
読み取り操作の I/O を削減
WiredTiger キャッシュの使用量増加
動作
時系列コレクションは、通常のコレクションと同様に動作します。 通常どおり、データの挿入とクエリができます。
MongoDB では、時系列コレクションは、内部コレクションを基盤とした書込み可能な非マテリアライズド ビューとして扱われます。データを挿入すると、時系列データは内部コレクションにより最適化されたストレージ形式に自動的に整理されます。
時系列コレクションをクエリする場合、1 回の測定ごとに 1 つのドキュメントに対して操作します。 時系列コレクションに対するクエリでは、最適化された内部ストレージ形式を活用して、結果がより速く返されます。
Tip
クエリのパフォーマンスを高めるために、セカンダリ インデックスを測定フィールドまたは時系列コレクション内の任意のフィールドに手動で追加できます。
重要
下位互換性のない機能
以下のダウングレードを行う前に、時系列コレクションを削除する必要があります。
MongoDB 6.0 以降から MongoDB 5.0.7 またはそれ以前のバージョンへ
MongoDB 5.3 から MongoDB 5.0.5 以前のバージョンへ
警告
MongoDB サーバーがクラッシュするため、 system.profile
という名前の時系列コレクションまたはビューを作成しないでください。
内部インデックス
時系列コレクションを作成すると、MongoDB は時間フィールドに内部クラスターインデックスを自動的に作成します。 このインデックスにより、クエリの効率が向上し、ディスク使用量が削減されます。 クラスター化インデックスのパフォーマンス上の利点の詳細については、「クラスター化されたコレクション 」を参照してください。
listIndexes
を実行すると、内部インデックスはリストされません。
注意
1970-01-01T00:00:00.000Z
の前または2038-01-19T03:14:07.000Z
の後にtimeField
値を持つドキュメントをコレクションに挿入すると、MongoDB は警告をログに記録し、一部のクエリ最適化で内部インデックスを使用できなくなります。 クエリ パフォーマンスを回復し、ログ警告を解決するには、 timeField
にセカンダリ インデックスを作成します。
はじめる
時系列コレクションを初めて使用する場合は、「時系列コレクションの作成とクエリ」を参照してください。