Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/
Manual de base de datos
/

Particiona una colección de series de tiempo

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.

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.

1

Conectar mongosh al mongos para tu clúster particionado. Especifica el host y el port en el que se ejecuta el mongos:

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

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,
...
3

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 weather en la base de datos test.

  • Especifica el campo metadata.sensorId como la clave de partición.

  • Especifica un granularity de 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
} )
1

Conecte mongosh al de su clúster fragmentado. Especifique mongos los host y port donde se ejecuta mongos el:

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

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,
...
3

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" } )
4

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 deliverySensor en la base de datos test.

  • Especifica el campo metadata.location como la clave de partición. location es un subcampo del metaField de 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.

Volver

Construir vistas materializadas sobre datos de series temporales

En esta página