Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Particiona una colección de series de tiempo

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, repasa las limitaciones del particionado para las colecciones de series temporales.

Para particionar una colección de series temporales, debes implementar un clúster para alojar la base de datos que contiene tu colección de series temporales.

Nota

A partir de MongoDB 8.0.10, puedes volver a fragmentar una colección de series de tiempo. Todas las particiones en la colección de series de tiempo deben ejecutar la versión 8.0.10 o posterior para reparticionar.

1

Conecte mongosh con el mongos para el clúster particionado. Especificar el host y el port en el que se está ejecutando 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 particionado:

--- 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 de tiempo llamada 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 con el mongos para el clúster particionado. Especificar el host y el port en el que se está ejecutando 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 particionado:

--- 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 de tiempo llamada 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 con el mongos para el clúster particionado. Especificar el host y el port en el que se está ejecutando 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 particionado:

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