Por qué esto es importante
Cada entidad en Midaz admite metadata — pares clave-valor personalizados que extienden el modelo de datos estándar. Las consultas que filtran una colección grande por un campo de metadata pueden volverse lentas sin un índice. Un índice de metadata es un índice de MongoDB sobre una clave específica de metadata. Transforma un escaneo costoso de colección en una búsqueda rápida por índice. Esto importa sobre todo en producción, donde los volúmenes de transacciones son altos y filtras u ordenas por valores de metadata.
Cómo funciona
Cuando creas un índice de metadata, Midaz construye un índice de MongoDB sobre el campo
metadata.<key> de la colección de la entidad. Después de eso, cualquier consulta que filtre por la clave de metadata usa el índice. MongoDB encuentra los documentos directamente, sin un escaneo completo de la colección.
Los índices son:
- Por entidad: cada índice apunta a un tipo específico de entidad (por ejemplo,
transaction,operation). - Por clave: cada índice cubre una única clave de metadata.
- Unicidad opcional: puedes requerir que dos documentos no compartan el mismo valor para la clave de metadata indexada.
- Sparse por defecto: el índice incluye solo los documentos que tienen la clave de metadata. Esto ahorra almacenamiento y acelera las escrituras.
Tipos de entidades soportadas
Midaz admite índices de metadata para estas entidades:
Crear un índice de metadata
Usa el endpoint Create a Metadata Index:
Respuesta:
Listar índices de metadata
Usa el endpoint List Metadata Indexes. Devuelve todos los índices de todos los tipos de entidad con sus estadísticas de uso:
stats.accesses muestra cuántas consultas usaron el índice desde que comenzó la recolección de estadísticas. Úsalo para encontrar índices sin uso que puedes eliminar de forma segura.
Eliminar un índice de metadata
Usa el endpoint Delete a Metadata Index:
La eliminación surte efecto de inmediato. Afecta el rendimiento de las consultas de cualquier operación que usó el índice. Antes de eliminar un índice, asegúrate de que ninguna consulta crítica dependa de él.
Consideraciones de rendimiento
Cuándo crear índices:
- Filtras con frecuencia transacciones u operaciones por una clave de metadata específica (por ejemplo,
tier,channel,partner_id). - Las consultas de listado sobre una colección grande son lentas cuando filtran por metadata.
- Necesitas aplicar unicidad sobre un campo de metadata (por ejemplo, IDs de referencia externos).
- Rara vez consultas por la clave de metadata — el índice solo cuesta almacenamiento y ralentiza las escrituras.
- La colección es lo suficientemente pequeña como para que los escaneos completos sean rápidos.
- Quieres agregar un índice de forma especulativa, “por si acaso”.
0132 (Metadata Index Already Exists). Mantén deliberado el número de índices: lista los índices y elimina los que tengan accesses bajos o en cero.
Páginas relacionadas
- Metadata — Cómo funciona la metadata en todas las entidades de Midaz.
- Create a Metadata Index — Referencia de API.
- List Metadata Indexes — Referencia de API.
- Delete a Metadata Index — Referencia de API.

