Nuevo en la versión 5.1.
Utiliza este tutorial para crear particiones en una nueva colección de series de tiempo o en una ya existente.
Importante
Antes de completar este tutorial, revise el Limitaciones de fragmentación para colecciones de series temporales.
Requisitos previos
Para fragmentar una colección de series temporales, debe implementar un clúster fragmentado para alojar la base de datos que contiene su colección de series temporales.
Procedimientos
Shard, una nueva colección de series temporales
Confirme que la fragmentación esté habilitada en su base de datos.
Ejecute para confirmar que la fragmentación está habilitada en su base de sh.status() datos:
sh.status()
El comando devuelve la información de fragmentación:
--- Sharding Status --- sharding version: { "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, ...
Crea la colección.
Utilice el método shardCollection() con la opción de serie temporal.
Por ejemplo:
sh.shardCollection( "test.weather", { "metadata.sensorId": 1 }, { timeseries: { timeField: "timestamp", metaField: "metadata", granularity: "hours" } } )
En estesh.shardCollection() ejemplo,:
Fragmenta una nueva colección de series temporales denominada
weatheren la base de datostest.Especifica el
metadata.sensorIdcampo como la clave del fragmento.Especifica un
granularityde horas.
El siguiente documento contiene los metadatos apropiados para la colección:
db.weather.insertOne( { "metadata": { "sensorId": 5578, "type": "temperature" }, "timestamp": ISODate("2021-05-18T00:00:00.000Z"), "temp": 12 } )
Fragmentar una colección de series temporales existente
Confirme que la fragmentación esté habilitada en su base de datos.
Ejecute para confirmar que la fragmentación está habilitada en su base de sh.status() datos:
sh.status()
El comando devuelve la información de fragmentación:
--- Sharding Status --- sharding version: { "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, ...
Crea un índice hash en tu colección.
Habilite la fragmentación en su colección creando un índice que admita la clave de fragmentación.
Considere una colección de series de tiempo con las siguientes propiedades:
db.createCollection( "deliverySensor", { timeseries: { timeField: "timestamp", metaField: "metadata", granularity: "minutes" } } )
Un documento de muestra de la colección se parece a:
db.deliverySensor.insertOne( { "metadata": { "location": "USA", "vehicle": "truck" }, "timestamp": ISODate("2021-08-21T00:00:10.000Z"), "speed": 50 } )
Ejecute el siguiente comando para crear un índice hash en el campo metadata.location:
db.deliverySensor.createIndex( { "metadata.location" : "hashed" } )
Comparte tu colección.
Utilice el método para fragmentar la shardCollection() colección.
Para fragmentar la colección deliverySensor descrita en el paso anterior, ejecute el siguiente comando:
sh.shardCollection( "test.deliverySensor", { "metadata.location": "hashed" } )
En estesh.shardCollection() ejemplo,:
Fragmenta una colección de series temporales existente denominada
deliverySensoren la base de datostest.Especifica el
metadata.locationcampo como la clavelocationdel fragmento. es un subcampo del de lametaFieldcolección.
Cuando la colección que especifica en es una colección de series sh.shardCollection() de tiempo, no necesita especificar la opción de series de tiempo.