時系列データとは、時間の経過に伴う変化を分析することでインサイトを得られるデータ ポイント列です。
通常、時系列データを構成するのは以下のコンポーネントです。
時間: データ点が記録された時刻を示します。
メタデータ: データ シリーズを識別するラベルまたはタグで、ほとんど変更されることはありません。メタデータは
metaField
に保存されます。時系列ドキュメントを作成した後で、metaField
フィールドを追加することはできません。メタデータはsource
としても知られています。メトリクス: 時間の増分ごとに追跡される個々のデータ点であり、多くの場合、時間の経過とともに変化するキーと値のペアとして表示されます。メトリクスは値とも呼ばれます。
測定値: 特定の時点で、すべてのメトリクスに関するデータを含むドキュメントです。測定値には、その時点の時間、メタデータ、およびすべてのメトリクスが含まれます。
次の表に、時系列データの例を示します。
例 | メトリクス | Metadata |
---|---|---|
株価データ | 株価 | 株式ティッカー、取引所 |
気象データ | 温度 | センサー識別子、ロケーション |
ウェブサイトの訪問者 | 閲覧数 | URL |
時系列データ ストレージの効率化に向け、MongoDB では時系列コレクションを提供しています。
次の例は、気象データの測定ドキュメントを示しています。
{ "timestamp": ISODate("2025-08-19T12:00:00Z"), "metaField": { "sensorId": "A1234", "location": { "city": "New York", "state": "NY" } }, "temperature": 25.4, "humidity": 48.2, "pressure": 1012.5, "windSpeed": 5.2, "windDirection": "NW" }
この例では、測定には次のものが含まれます。
データが記録された時刻を示すタイムスタンプ。
センサーおよびその場所を識別するメタデータ。
温度、湿度、気圧、風速、風向など、指定時点で収集された複数のメトリクス。
時系列コレクション
バージョン 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 は時間フィールドに内部クラスターインデックスを自動的に作成します。 このインデックスにより、クエリの効率が向上し、ディスク使用量が削減されます。 クラスター化インデックスのパフォーマンス上の利点の詳細については、「クラスター化されたコレクション 」を参照してください。
listIndexes
を実行すると、内部インデックスはリストされません。
注意
1970-01-01T00:00:00.000Z
の前または2038-01-19T03:14:07.000Z
の後にtimeField
値を持つドキュメントをコレクションに挿入すると、MongoDB は警告をログに記録し、一部のクエリ最適化で内部インデックスを使用できなくなります。 クエリ パフォーマンスを回復し、ログ警告を解決するには、 timeField
にセカンダリ インデックスを作成します。
はじめる
時系列コレクションを初めて使用する場合は、「時系列コレクションの作成とクエリ」を参照してください。