Gerenciando Índices do Amazon DocumentDB - Amazon DocumentDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerenciando Índices do Amazon DocumentDB

Criação do índice do Amazon DocumentDB

A criação de índices no Amazon DocumentDB exige que várias decisões sejam tomadas:

  • Com que rapidez ele precisa ser concluído?

  • A coleção pode ficar inacessível enquanto a construção está ocorrendo?

  • Quanto do poder computacional de uma instância pode ser alocado para a construção?

  • Que tipo de índice deve ser criado?

Esta seção ajuda você a responder a essas perguntas e fornece os comandos e exemplos de monitoramento para criar um índice do Amazon DocumentDB em sua coleção de clusters baseada em instâncias.

Diretrizes

As diretrizes a seguir incluem limites básicos e compensações de configuração ao criar novos índices:

  • Suporte à versão do Amazon DocumentDB - Embora a indexação de um único trabalhador seja suportada em todas as versões do Amazon DocumentDB, a indexação de vários trabalhadores é suportada somente nas versões 4.0 e 5.0 do Amazon DocumentDB.

  • Compensação de desempenho - Aumentar o número de trabalhadores no processo de criação do índice aumenta a utilização da CPU e a IO de leitura na instância primária do seu banco de dados Amazon DocumentDB. Os recursos necessários para criar um novo índice não estarão disponíveis para sua carga de trabalho em execução.

  • Clusters elásticos - A indexação paralela não é suportada nos clusters elásticos do Amazon DocumentDB.

  • Máximo de trabalhadores - O número máximo de trabalhadores que você pode configurar depende do tamanho da sua instância primária no cluster de banco de dados. É metade do número total de vCPUs na instância primária do seu cluster de banco de dados. Por exemplo, você pode executar no máximo 32 trabalhadores em uma instância db.r6g.16xlarge que tenha 64 vCPUs.

    nota

    Não há suporte para trabalhadores paralelos em classes de instância 2xlarge e inferiores.

  • Mínimo de trabalhadores - O número mínimo de trabalhadores que você pode configurar é um. A configuração padrão para criação de índices em clusters baseados em instâncias é de dois trabalhadores. No entanto, você pode reduzir o número de trabalhadores para um usando a opção “threads de trabalhadores”. Isso executará o processo com um único trabalhador.

  • Compactação de índice - O Amazon DocumentDB não oferece suporte à compactação de índices. O tamanho dos dados para dados e índices armazenados poderá ser maior do que ao usar outras opções.

  • Indexação de várias coleções - Metade das vCPUs na instância primária do seu cluster de banco de dados pode ser usada para trabalhadores configurados que realizam a criação de índices em várias coleções.

  • Tipos de índice - Consulte esta postagem no blog para obter uma explicação completa dos tipos de índice compatíveis no Amazon DocumentDB.

Conceitos básicos

Para iniciar a criação do índice em uma coleção, use o createIndexes comando. Por padrão, o comando executará dois trabalhadores paralelos, o que aumenta a velocidade do processo de criação do índice em duas vezes.

Por exemplo, o processo de comando a seguir demonstra como criar um índice para o campo “user_name” em um documento e aumentar a velocidade do processo de indexação para quatro trabalhadores:

  1. Crie índices usando dois trabalhadores paralelos no cluster:

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx"}]})
  2. Para otimizar a velocidade do processo de criação do índice, você pode especificar o número de trabalhadores usando a opção “threads de trabalho” ("workers":<number>) no db.runCommand createIndexes comando.

    Aumente a velocidade do processo para quatro trabalhadores paralelos:

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "workers":4}]})
    nota

    Quanto maior o número de trabalhadores, mais rápido a criação do índice progride. No entanto, quanto maior o número de trabalhadores, maior o aumento da carga nas vCPUs e na E/S de leitura da sua instância primária. Garanta que seu cluster esteja suficientemente provisionado para lidar com o aumento da carga sem degradar outras cargas de trabalho.

Status do andamento da indexação

O processo de criação de índices funciona inicializando, escaneando coleções, classificando chaves e, finalmente, inserindo chaves por meio de um construtor de índices. O processo tem até seis estágios quando você o executa em primeiro plano e até nove estágios quando você o executa em segundo plano. Você pode visualizar métricas de status, como porcentagem de conclusão, número total de blocos de armazenamento digitalizados, chaves classificadas e chaves inseridas, etapa por etapa.

Monitore o progresso no processo de indexação usando o comando db.currentOp() no shell mongo. Uma conclusão de 100% da última etapa mostra que todos os índices foram criados com sucesso:

db.currentOp({"command.createIndexes": { $exists : true } })

Tipos de criação de índice

Os quatro tipos de criação de índices são:

  • Primeiro plano - A construção do índice em primeiro plano bloqueia todas as outras operações do banco de dados até que o índice seja criado. A construção em primeiro plano do Amazon DocumentDB é composta por cinco estágios.

  • Primeiro plano (exclusivo) - As compilações de índice de primeiro plano de um único documento (exclusivo) bloqueiam outras operações de banco de dados, como compilações regulares de primeiro plano. Ao contrário da construção básica em primeiro plano, a compilação exclusiva usa um estágio adicional (chaves de classificação 2) para procurar chaves duplicadas. A construção em primeiro plano (exclusiva) é composta por seis estágios.

  • Plano de fundo - A criação do índice em segundo plano permite que outras operações do banco de dados sejam executadas em primeiro plano enquanto o índice está sendo criado. A construção em segundo plano do Amazon DocumentDB é composta por oito estágios.

  • Plano de fundo (exclusivo) - As compilações de índice em segundo plano de um único documento (exclusivo) permitem que outras operações do banco de dados sejam executadas em primeiro plano enquanto o índice está sendo criado. Ao contrário da construção básica em segundo plano, a compilação exclusiva usa um estágio adicional (chaves de classificação 2) para procurar chaves duplicadas. A construção de fundo (única) é composta por nove estágios.

Etapas de construção do índice

Estágio Primeiro plano Primeiro plano (exclusivo) Contexto Plano de fundo (exclusivo)

Inicializando

1

1

1

1

índice de construção: inicializando

2

2

2

2

índice de construção: coleção de digitalização

3

3

3

3

índice de construção: chaves de classificação 1

4

4

4

4

índice de construção: chaves de classificação 2

5

5

índice de construção: inserindo chaves

5

6

5

6

validação: índice de digitalização

6

7

validação: classificação de tuplas

7

8

validação: coleta de digitalização

8

9

  • inicialização - createIndex está preparando o construtor de índices. Essa fase deve ser muito breve.

  • índice de construção: inicialização - O criador de índices está se preparando para criar o índice. Essa fase deve ser muito breve.

  • índice de construção: coleção de varredura - O construtor de índices está realizando uma varredura de coleção para coletar chaves de índice. A unidade de medida é “blocos”.

    nota

    Se mais de um trabalhador estiver configurado para a criação do índice, ele será exibido nesse estágio. O estágio de “coleta de digitalização” é o único estágio que usa vários trabalhadores durante o processo de criação do índice. Todos os outros estágios exibirão um único trabalhador.

  • índice de construção: chaves de classificação 1 - O construtor de índices está classificando as chaves de índice coletadas. A unidade de medida é “chaves”.

  • índice de construção: chaves de classificação 2 - O construtor de índices está classificando as chaves de índice coletadas que correspondem às tuplas mortas. Essa fase existe apenas para a criação de índices exclusivos. A unidade de medida é “chaves”.

  • índice de construção: inserindo chaves - O criador de índices está inserindo chaves de índice no novo índice. A unidade de medida é “chaves”.

  • validando: índice de varredura - createIndex está examinando o índice para encontrar chaves que precisam ser validadas. A unidade de medida é “blocos”.

  • validando: classificando tuplas - createIndex está classificando a saída da fase de varredura do índice.

  • validando: escaneando a coleção - CreateIndex está escaneando a coleção para validar as chaves de índice encontradas nas duas fases anteriores. A unidade de medida é “blocos”.

Exemplo de saída de compilação de índice

No exemplo de saída abaixo (criação do índice em primeiro plano), o status da criação do índice é mostrado. O campo “msg” resume o progresso da compilação indicando o estágio e a porcentagem de conclusão da construção. O campo “trabalhadores” indica o número de trabalhadores usados durante esse estágio da criação do índice. O campo “progresso” mostra os números reais usados para calcular a porcentagem de conclusão.

nota

Os campos “currentIndexBuildNome”, “msg” e “progresso” não são compatíveis com o Amazon DocumentDB versão 4.0.

{ "inprog" : [{ … "command": { "createIndexes": "test", "indexes": [{ "v": 2, "key": { "user_name": 1 }, "name": "user_name_1" }], "lsid": { "id": UUID(“094d0fba-8f41-4373-82c3-7c4c7b5ff13b”) }, "$db": "test" }, "currentIndexBuildName": user_name_1, "msg": "Index Build: building index number_1, stage 6/6 building index: 656860/1003520 (keys) 65%", "workers": 1, "progress": { "done": 656861, "total": 1003520 }, … ], "ok" : 1 }