Skip to main content

Por qué esto importa


Toda entidad de Midaz admite metadatos: pares clave-valor personalizados que extienden el modelo de datos estándar. Las consultas que filtran una colección grande por un campo de metadatos pueden volverse lentas sin un índice. Un índice de metadatos es un índice de MongoDB sobre una clave de metadatos específica. Convierte un escaneo costoso de la colección en una búsqueda indexada rápida. Esto importa más en producción, donde los volúmenes de transacciones son altos y filtras u ordenas por valores de metadatos.

Cómo funciona


Cuando creas un índice de metadatos, Midaz construye un índice de MongoDB sobre el campo metadata.<key> de la colección de la entidad. A partir de ahí, cualquier consulta que filtre por la clave de metadatos usa el índice. MongoDB encuentra los documentos directamente, sin un escaneo completo de la colección. Los índices son:
  • Por entidad: cada índice se aplica a un tipo de entidad específico (por ejemplo, transaction, operation).
  • Por clave: cada índice cubre una sola clave de metadatos.
  • Unicidad opcional: puedes exigir que ningún par de documentos comparta el mismo valor para la clave de metadatos indexada.
  • Disperso de forma predeterminada: el índice incluye solo los documentos que tienen la clave de metadatos. Esto ahorra almacenamiento y acelera las escrituras.

Tipos de entidad admitidos


Midaz admite índices de metadatos para estas entidades:

Creación de un índice de metadatos


Usa el endpoint Crear un índice de metadatos:
Parámetros: Respuesta:

Listado de índices de metadatos


Usa el endpoint Listar índices de metadatos. Devuelve todos los índices de todos los tipos de entidad con sus estadísticas de uso:
El campo stats.accesses muestra cuántas consultas usaron el índice desde que empezó la recopilación de estadísticas. Úsalo para encontrar índices sin uso que puedas eliminar de forma segura.

Eliminación de un índice de metadatos


Usa el endpoint Eliminar un índice de metadatos:
La eliminación surte efecto de inmediato. Afecta el rendimiento de las consultas de cualquier operación que usara el índice. Antes de eliminar un índice, confirma que ninguna consulta crítica dependa de él.

Consideraciones de rendimiento


Cuándo crear índices:
  • Filtras con frecuencia las transacciones o las operaciones por una clave de metadatos específica (por ejemplo, tier, channel, partner_id).
  • Las consultas de listado sobre una colección grande son lentas cuando filtran por metadatos.
  • Necesitas exigir unicidad en un campo de metadatos (por ejemplo, IDs de referencia externa).
Cuándo no crear índices:
  • Rara vez consultas por la clave de metadatos. El índice solo consume almacenamiento y ralentiza las escrituras.
  • La colección es lo bastante pequeña para que los escaneos completos sean rápidos.
  • Quieres agregar un índice de forma especulativa, “por si acaso”.
Límites: Midaz no impone un límite propio sobre la cantidad de índices de metadatos por entidad. En su lugar, se aplica el límite de índices por colección de MongoDB. Crear un índice sobre una clave que ya tiene uno devuelve el error 0132 (Índice de metadatos ya existe). Mantén deliberada la cantidad de índices: lista los índices y elimina los que tengan un valor bajo o cero en accesses.
Empieza con índices sobre las claves de metadatos que consultas en producción. Usa el campo stats.accesses del endpoint de listado para confirmar que las consultas usan cada índice. Elimina los índices que ninguna consulta usa.

Páginas relacionadas