バージョン 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オプションを指定する必要はありません。