Docs Menu
Docs Home
/
MongoDB マニュアル
/

時系列データの粒度の設定

項目一覧

  • 時系列コレクションの granularityを取得
  • 時系列コレクションのgranularityの変更

注意

コレクションが作成された後に時系列コレクションの粒度を変更するには、MongoDB 5.0.1以降を実行している必要があります。 MongoDB 5.0の既知の問題を参照してください。

系列コレクションを作成するときは、 metaFieldフィールドの同じ一意な値を持つ連続する受信測定間の時間範囲に最も近い値に粒度を設定します。

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
granularity: "minutes"
},
expireAfterSeconds: 86400
}
)

granularityパラメーターを設定すると、時系列コレクション内のデータが内部的に保存される方法が最適化され、パフォーマンスが正確に向上します。

パラメータを正確に設定するには、 metaFieldフィールドの値で指定される一意のデータソースの取り込みレートに最も近いgranularity値を選択します。

たとえば、 metaFieldデータが気象センサーを識別し、5 分ごとに個々のセンサーからデータを取り込む場合は、 "minutes"を選択する必要があります。 数百万のセンサーがあり、異なるセンサーから入力されるデータが 秒単位しか異なる場合でも、 granularityは、メタデータによって一意に識別される 1 つのセンサーの取り込み率に基づいている必要があります。

次の表では、各granularity値についてまとめて保存されるデータの最大時間範囲を確認できます。

granularity
カバーする時間
"seconds" (デフォルト)
1 時間
"minutes"
24 時間
"hours"
30 日間

Tip

以下も参照してください。

granularity の現在の値を取得するには、listCollections コマンドを使用します。

db.runCommand( { listCollections: 1 } )

結果ドキュメントには、options.timeseries.granularity フィールドを含む時系列コレクションのドキュメントが含まれます。

{
cursor: {
id: <number>,
ns: 'test.$cmd.listCollections',
firstBatch: [
{
name: <string>,
type: 'timeseries',
options: {
expireAfterSeconds: <number>,
timeseries: {
timeField: <string>,
metaField: <string>,
granularity: <string>,
bucketMaxSpanSeconds: <number>
}
},
...
},
...
]
}
}

granularity パラメーターの値を変更するには、次の collMod コマンドを発行します。

db.runCommand({
collMod: "weather24h",
timeseries: { granularity: "hours" }
})

granularityが設定されると、一度に 1 レベルずつのみ増やすことができます。 "seconds"から"minutes"または"minutes"から"hours"へ 。 その他の変更は許可されません。 granularity"seconds"から"hours"に変更する必要がある場合は、まずgranularity"minutes"に増やし、次に"hours"に増やします。

注意

シャーディングされた時系列コレクションのgranularityは変更できません。

戻る

時系列コレクション(TTL)の自動削除の設定