Docs Menu
Docs Home
/ /

Fragmentar una colección de series temporales

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.

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 De mongoshamongospara su clúster fragmentado. Especifique host y port donde se ejecuta mongos:

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

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

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

  • Especifica el metadata.sensorId campo como la clave del fragmento.

  • 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

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

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

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

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

Volver

Compresión

En esta página