Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/

Fragmentar uma Coleção de séries temporais

Nesta página

  • Pré-requisitos
  • Procedimentos
  • Informações adicionais

Novidades na versão 5.1.

Use este tutorial para fragmentar uma coleção de séries temporais nova ou existente.

Importante

Antes de concluir este tutorial, revise as limitações de fragmentação para coleções de séries temporais.

Para fragmentar uma coleção de séries temporais, você deve implantar um cluster fragmentado para hospedar o banco de dados que contém sua coleção de séries temporais.

1

Conecte o mongosh ao mongos do seu cluster fragmentado. Especifique host e port em que mongos está sendo executado:

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

Execute sh.status() para confirmar se a fragmentação está habilitada no seu banco de dados:

sh.status()

O comando retorna as informações de sharding:

--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
...
3

Use o método shardCollection() com a opção de série temporal .

Por exemplo:

sh.shardCollection(
"test.weather",
{ "metadata.sensorId": 1 },
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
granularity: "hours"
}
}
)

Neste exemplo, sh.shardCollection():

  • Fragmenta uma nova coleção de série temporal chamada weather no banco de dados test .

  • Especifica o campo metadata.sensorId como a chave de fragmento.

  • Especifica uma granularity de horas.

O documento a seguir contém os metadados apropriados para a coleção:

db.weather.insertOne( {
"metadata": { "sensorId": 5578, "type": "temperature" },
"timestamp": ISODate("2021-05-18T00:00:00.000Z"),
"temp": 12
} )
1

Conecte mongosh ao mongos para seu cluster fragmentado. Especifique host e port em que mongos está sendo executado:

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

Execute sh.status() para confirmar se a fragmentação está habilitada no seu banco de dados:

sh.status()

O comando retorna as informações de sharding:

--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
...
3

Habilite a fragmentação na sua coleção criando um índice compatível com a chave de fragmento.

Considere uma coleção de séries temporais com as seguintes propriedades:

db.createCollection(
"deliverySensor",
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
granularity: "minutes"
}
}
)

Um exemplo de documento da coleção é algo parecido com o seguinte:

db.deliverySensor.insertOne( {
"metadata": { "location": "USA", "vehicle": "truck" },
"timestamp": ISODate("2021-08-21T00:00:10.000Z"),
"speed": 50
} )

Execute o comando a seguir para criar um índice com hash no campo metadata.location:

db.deliverySensor.createIndex( { "metadata.location" : "hashed" } )
4

Use o método shardCollection() para fragmentar a coleção.

Para fragmentar a coleção deliverySensor descrita na etapa anterior, execute o seguinte comando:

sh.shardCollection( "test.deliverySensor", { "metadata.location": "hashed" } )

Neste exemplo, sh.shardCollection():

  • Fragmenta uma coleção de séries temporais existente chamada deliverySensor no banco de dados test.

  • Especifica o campo metadata.location como a chave do fragmento. location é um subcampo do metaField da coleção.

Quando a coleção que você especificar para sh.shardCollection() for uma coleção de séries temporais, não será necessário especificar a opção timeseries.

Voltar

Crie visualizações materializadas sobre dados de Time Series