Gerenciar í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á.

Gerenciar í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 workload em execução.

  • Clusters elásticos: a indexação paralela não tem suporte 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 v CPUs 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 v. CPUs

    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 do v CPUs 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 de índices em uma coleção, use o comando createIndexes. 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 operadores usando a opção “threads de trabalhadores” ("workers":<number>) no comando db.runCommand createIndexes.

    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 na E/S v CPUs e 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 workloads.

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 } })
nota

A visualização do status do progresso da indexação só é suportada no Amazon DocumentDB 5.0.

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 }

Manutenção do índice do Amazon DocumentDB usando reIndex

reIndex é um comando usado para reconstruir um índice. Geralmente é usado quando um índice se torna corrompido ou ineficiente. Com o tempo, os índices podem acumular espaço não utilizado devido a muitas atualizações, inserções ou exclusões, levando à degradação do desempenho. A reindexação ajuda a remover esse espaço não utilizado e a restaurar a eficiência do índice.

Diretrizes de reIndex

  • reIndex é atualmente compatível somente com Amazon DocumentDB 5.0.

  • O Amazon DocumentDB oferece suporte a reindex de um único índice em segundo plano, permitindo vários operadores. O índice antigo pode ser usado por consultas quando o processo reIndex está em execução.

  • O Amazon DocumentDB oferece suporte à indexação de relatórios de progresso por meio de currentOp. Você pode ver estágios de criação de índice semelhantes ao Etapas de construção do índice visualizado durante a criação do índice. A única diferença é que reIndex sempre tem oito estágios, independentemente de ser único ou não. Não há o estágio “criação de índice: chaves de classificação 2”.

  • reIndex pode ser executado simultaneamente com qualquer comando, exceto comandos relacionados a índices na mesma coleção: createIndexes, dropIndexes, collMod e renameCollection.

  • reIndex atualmente não é compatível com índices textuais, geoespaciais, vetoriais e parciais.

Criação de reIndex

Use o seguinte comando para recriar seu índice:

db.runCommand({ reIndex: "collection-name", index: "index-name"})

Opcionalmente, você também pode controlar o número de operadores atribuídos ao processo de reconstrução:

db.runCommand({ reIndex: "collection-name", index: "index-name", workers: number })