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, repase los limitaciones de particionado para colecciones de series de tiempo.
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
Particiona una nueva colección de series de tiempo
Confirme que la fragmentación esté habilitada en su base de datos.
Ejecuta sh.status() para confirmar que el particionado está habilitado en tu base de 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.
Utiliza el método shardCollection() con la opción timeseries.
Por ejemplo:
sh.shardCollection( "test.weather", { "metadata.sensorId": 1 }, { timeseries: { timeField: "timestamp", metaField: "metadata", granularity: "hours" } } )
En este ejemplo, sh.shardCollection():
Fragmenta una nueva colección de series temporales denominada
weatheren la base de datostest.Especifica el campo
metadata.sensorIdcomo la clave de partición.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 } )
Fragmenta una colección de series de tiempo existente.
Confirme que la fragmentación esté habilitada en su base de datos.
Ejecuta sh.status() para confirmar que el particionado está habilitado en tu base de 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 encriptada en tu colección.
Habilite el particionado en su colección creando un índice que admita la clave de partición.
Considera 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 } )
Ejecuta el siguiente comando para crear un índice encriptado en el campo metadata.location:
db.deliverySensor.createIndex( { "metadata.location" : "hashed" } )
Fragmenta tu colección.
Utiliza el método shardCollection() para fragmentar la colección.
Para particionar la colección deliverySensor descrita en el paso anterior, ejecute el siguiente comando:
sh.shardCollection( "test.deliverySensor", { "metadata.location": "hashed" } )
En este ejemplo, sh.shardCollection():
Particiona una colección de series de tiempo existente llamada
deliverySensoren la base de datostest.Especifica el campo
metadata.locationcomo la clave de partición.locationes un subcampo delmetaFieldde la colección.
Cuando la colección que especificas en sh.shardCollection() es una colección de series de tiempo, no necesitas especificar la opción timeseries.