時系列コレクションのシャード
バージョン 5.1 で追加。
このチュートリアルを使用して、新規または既存の時系列コレクションをシャーディングします。
重要
このチュートリアルを完了する前に、時系列コレクションのシャーディング制限を確認してください。
前提条件
時系列コレクションをシャーディングするには、 シャーディングされたクラスター を配置して、時系列コレクションを含むデータベースをホストする必要があります。
手順
新しい時系列コレクションのシャード
データベースでシャーディングが有効になっていることを確認します。
sh.status()
を実行して、データベースでシャーディングが有効になっていることを確認します。
sh.status()
このコマンドは、シャーディング情報を返します。
--- Sharding Status --- sharding version: { "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, ...
コレクションを作成します。
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 } )
既存の時系列コレクションのシャード
データベースでシャーディングが有効になっていることを確認します。
sh.status()
を実行して、データベースでシャーディングが有効になっていることを確認します。
sh.status()
このコマンドは、シャーディング情報を返します。
--- Sharding Status --- sharding version: { "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, ...
コレクションに ハッシュされたインデックス を作成します。
シャードキー をサポートする インデックスを作成 して、コレクションのシャーディングを有効にします。
次のプロパティを持つ時系列コレクションを考えてみましょう。
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" } )
コレクションをシャーディングします。
コレクションをシャーディングするには、 shardCollection()
メソッドを使用します。
前の手順で説明したdeliverySensor
コレクションをシャーディングするには、次のコマンドを実行します。
sh.shardCollection( "test.deliverySensor", { "metadata.location": "hashed" } )
この例では、 sh.shardCollection()
は次の操作を行います。
test
データベース上のdeliverySensor
という名前の既存の時系列コレクションをシャーディングします。シャードキーとして
metadata.location
フィールドを指定します。location
は、コレクションのmetaField
のサブフィールドです。
sh.shardCollection()
に指定するコレクションが時系列コレクションの場合、 timeseriesオプションを指定する必要はありません。