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

時系列コレクションのシャード

項目一覧

  • 前提条件
  • 手順
  • 詳細情報

バージョン 5.1 で追加

このチュートリアルを使用して、新規または既存の時系列コレクションをシャーディングします。

重要

このチュートリアルを完了する前に、時系列コレクションのシャーディング制限を確認してください。

時系列コレクションをシャーディングするには、 シャーディングされたクラスター を配置して、時系列コレクションを含むデータベースをホストする必要があります。

1

mongoshmongosシャーディングされたクラスターに接続します。mongosが実行されているhostportを指定します。

mongosh --host <hostname> --port <port>
2

sh.status()を実行して、データベースでシャーディングが有効になっていることを確認します。

sh.status()

このコマンドは、シャーディング情報を返します。

--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
...
3

shardCollection()時系列 オプションを指定した メソッドを使用します。

以下に例を挙げます。

sh.shardCollection(
"test.weather",
{ "metadata.sensorId": 1 },
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
granularity: "hours"
}
}
)

この例では、 sh.shardCollection()は次の操作を行います。

  • testデータベースでweatherという名前の新しい時系列コレクションをシャードします。

  • シャードキーとしてmetadata.sensorIdフィールドを指定します。

  • 時間のgranularityを指定します。

次のドキュメントには、コレクションに適切なメタデータが含まれています。

db.weather.insertOne( {
"metadata": { "sensorId": 5578, "type": "temperature" },
"timestamp": ISODate("2021-05-18T00:00:00.000Z"),
"temp": 12
} )
1

mongoshmongosシャーディングされたクラスターに接続します。mongosが実行されているhostportを指定します。

mongosh --host <hostname> --port <port>
2

sh.status()を実行して、データベースでシャーディングが有効になっていることを確認します。

sh.status()

このコマンドは、シャーディング情報を返します。

--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
...
3

シャードキー をサポートする インデックスを作成 して、コレクションのシャーディングを有効にします。

次のプロパティを持つ時系列コレクションを考えてみましょう。

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

コレクションのサンプル ドキュメントは次のようになります。

db.deliverySensor.insertOne( {
"metadata": { "location": "USA", "vehicle": "truck" },
"timestamp": ISODate("2021-08-21T00:00:10.000Z"),
"speed": 50
} )

次のコマンドを実行して、 metadata.locationフィールドにハッシュされたインデックスを作成します。

db.deliverySensor.createIndex( { "metadata.location" : "hashed" } )
4

コレクションをシャーディングするには、 shardCollection()メソッドを使用します。

前の手順で説明したdeliverySensorコレクションをシャーディングするには、次のコマンドを実行します。

sh.shardCollection( "test.deliverySensor", { "metadata.location": "hashed" } )

この例では、 sh.shardCollection()は次の操作を行います。

  • testデータベース上のdeliverySensorという名前の既存の時系列コレクションをシャーディングします。

  • シャードキーとしてmetadata.locationフィールドを指定します。 locationは、コレクションのmetaFieldのサブフィールドです。

sh.shardCollection()に指定するコレクションが時系列コレクションの場合、 timeseriesオプションを指定する必要はありません。

戻る

圧縮