Workload Replay
Capture um snapshot de workload do profiler, replay contra um cluster target, depois rode mutações "what-if" (drop um índice, adicionar um índice hipotético, mudar shard key) para ver o impacto antes de tocar em produção.
O que é
Um workspace de 4 tabs: Capture (grava do profiler ativo), Snapshots (gerencia capturas salvas), Replay (roda um snapshot contra um cluster diferente), What-if (aplica uma mutação hipotética e mede o delta em nReturned, docsExamined, ms). Snapshots persistem em localStorage para que você possa replay semanas depois.
Quando usar
Antes de dropar um índice "parece não usado" — replay o workload da semana passada com o índice dropado e confirme que nenhuma query degrada. Antes de shardar uma collection quente — replay com shard keys hipotéticas e escolha a melhor distribuição. Antes de um refactor grande — capture, refatore em dev, replay para verificar que queries ainda funcionam.
Como abrir
- No app desktop do NoSqlStudio, abra o menu Tools → Workload Replay, ou pressione Ctrl+Alt+Shift+X.
- Uma tab de workspace abre com 4 tabs: Capture / Snapshots / Replay / What-if.
- Escolha a tab Capture para começar a gravar da sua conexão profiler ativa.
Trabalhando com ele
- Capture — escolhe uma conexão profiler-enabled. Grava toda entry system.profile num snapshot. Stop captures a qualquer momento.
- Snapshots — lista de capturas salvas com timestamp, cluster source, e contagem de queries. Exporte como JSON para compartilhar.
- Replay — escolha um snapshot + uma conexão target. Engine re-executa toda query contra o target e agrega deltas de timing. Use isso para validar que dev/staging combina com comportamento de produção.
- What-if — escolha um snapshot + um target + uma mutação hipotética (drop index X, add index Y em shape Z, troca shard key). Engine emite um whatIfReport com métricas before/after per-query — pretty-printed e exportável.
Limitações (v1)
- Capture só vê o que o profiler capturou — defina profiler level para 2 (todas as ops) para cobertura completa antes de gravar. Default level 1 (só slow ops) perde queries rápidas.
- Replay contra um target — certifique-se de que o target tem a mesma shape de dataset; do contrário, timings são sem sentido.
- Mutações what-if são aplicadas in-memory só no target — elas NÃO persistem. Re-rodar o mesmo what-if contra o mesmo target é idempotente.