Por que isso importa
Toda entidade no Midaz aceita metadados: pares personalizados de chave-valor que estendem o modelo de dados padrão. Consultas que filtram uma coleção grande por um campo de metadados podem ficar lentas sem um índice. Um índice de metadados é um índice do MongoDB em uma chave de metadados específica. Ele transforma uma varredura cara da coleção em uma busca rápida por índice. Isso importa mais em produção, onde os volumes de transações são altos e você filtra ou ordena por valores de metadados.
Como funciona
Quando você cria um índice de metadados, o Midaz cria um índice do MongoDB no campo
metadata.<key> da coleção da entidade. Depois disso, qualquer consulta que filtra pela chave de metadados usa o índice. O MongoDB encontra os documentos diretamente, sem uma varredura completa da coleção.
Os índices são:
- Por entidade: cada índice tem como alvo um tipo de entidade específico (por exemplo,
transaction,operation). - Por chave: cada índice cobre uma única chave de metadados.
- Unicidade opcional: você pode exigir que nenhum documento compartilhe o mesmo valor para a chave de metadados indexada.
- Esparso por padrão: o índice inclui apenas os documentos que têm a chave de metadados. Isso economiza armazenamento e acelera as escritas.
Tipos de entidade compatíveis
O Midaz oferece suporte a índices de metadados para estas entidades:
Criando um índice de metadados
Use o endpoint Create a Metadata Index:
Resposta:
Listando índices de metadados
Use o endpoint List Metadata Indexes. Ele retorna todos os índices de todos os tipos de entidade com suas estatísticas de uso:
stats.accesses mostra quantas consultas usaram o índice desde o início da coleta de estatísticas. Use-o para encontrar índices não utilizados que você pode excluir com segurança.
Excluindo um índice de metadados
Use o endpoint Delete a Metadata Index:
A exclusão tem efeito imediato. Ela afeta o desempenho de consultas de qualquer operação que usava o índice. Antes de excluir um índice, confirme que nenhuma consulta crítica depende dele.
Considerações de desempenho
Quando criar índices:
- Você filtra transações ou operações com frequência por uma chave de metadados específica (por exemplo,
tier,channel,partner_id). - Consultas de listagem em uma coleção grande ficam lentas quando filtram por metadados.
- Você precisa aplicar unicidade em um campo de metadados (por exemplo, IDs de referência externa).
- Você raramente consulta pela chave de metadados. O índice apenas consome armazenamento e deixa as escritas mais lentas.
- A coleção é pequena o suficiente para que varreduras completas sejam rápidas.
- Você quer adicionar um índice de forma especulativa, “só por precaução”.
0132 (Metadata Index Already Exists). Mantenha a contagem de índices deliberada: liste os índices e exclua qualquer um com accesses baixo ou zero.
Páginas relacionadas
- Metadados: como os metadados funcionam em todas as entidades do Midaz.
- Create a Metadata Index: referência da API.
- List Metadata Indexes: referência da API.
- Delete a Metadata Index: referência da API.

