Hot Partition Detector
Cosmos requiere partition key. Mala elección = una partición carga 60% de los docs + 90% del RU = throttle en peak. Hoy el DBA se entera cuando la app cae. El Hot Partition Detector corre un $group por partition key, mide doc count + RU estimado per partition, plotea en un heatmap coloreado (cool blue → hot red) y dispara alerta cuando la top partition tiene > 40% del total.
Dónde vive en la app: Tools → Cosmos DB → Hot Partition Detector
Qué hace
- Aggregation $group + $bsonSize contra la collection elegida.
- Heatmap visual con colores progresivos (cool → hot) por doc count.
- Top-20 partitions con share % + RU/día estimado.
- Skew alert: severe (>40%) / moderate (>20%) / ok (<20%).
- Sugerencia textual de partition key alternativa basada en cardinalidad + uniformidad.
Paso a paso
- 1
Abra el detector y elija la collection
Tools → Cosmos DB → Hot Partition Detector. Ponga el namespace (ej: `app.orders`) y el path del partition key (ej: `tenantId`).
- 2
Scan
Corre agg en ~5-30s dependiendo del tamaño. Limit 200 partitions; para collections muy grandes, repita por sub-range.
- 3
Lea el heatmap
Cada celda = un valor de partition key. Color = doc count relativo. Hover muestra el valor exacto.
- 4
Decida
Si se detecta severe skew, considere: (a) partition key compuesto (`tenantId+region`), (b) hash key sintética (`hash(naturalKey) mod N`), (c) split lógico de la collection. Use el WHAT-IF Lab para simular el cambio antes.
Casos de uso reales
Cliente enterprise dominando
SaaS B2B descubrió que el cliente "ACME Corp" tenía 73% de los docs de la collection `events`. Migró al composite `tenantId+eventBucket` (bucket = hash(eventId) mod 10). Distribución final: mayor partition 4.2%.
Timestamp como partition key (anti-pattern)
Equipo usaba `date` como partition key. Heatmap mostró el último día cargando 90% del throughput. Migraron a `tenantId` + ordenamiento por date en la query. p99 -45%.
FAQ
¿No funciona para collections > 10M docs?
Funciona, pero $group se vuelve caro. Considere correr contra un sample $sample (10k docs) para estimación rápida.
¿Puedo testear antes de cambiar partition key?
Sí — el WHAT-IF Lab tiene mutation kind `change-partition-key` que simula el impacto en el workload real.