Digamos que eu tenha uma única tabela que armazena informações de rastreamento de dispositivos móveis (cada registro possui deviceID, informações de transação, uma coluna json com detalhes completos sobre a operação, tempo de operação, usuário, etc...), este é o banco de dados operacional . Alguns usuários podem precisar obter informações de rastreamento de um intervalo de tempo, sobre um determinado usuário ou dispositivo. Portanto, uma simples seleção com filtros não afetará a inserção de dados.
Alguns outros usuários precisarão realizar operações analíticas maiores, agregações ao longo de meses de dados coletados. Li que esse processo de análise deveria ser feito em um banco de dados analítico, para não impactar o banco de dados operacional.
Mas tenho um limite, apenas uma instância do SQLServer disponível.
Então eu deveria escrever um ETL que faça uma cópia periódica em lote dos dados em um novo banco de dados, com a mesma tabela única com mais alguns índices e sem a coluna json (para economizar espaço, porque para o tipo de análise que precisamos é inútil)
Agora minha pergunta é, dado que estamos falando de uma tabela operacional e uma tabela de análise (mais do que um banco de dados operacional e um banco de análise), e nas instalações do meu cliente terei apenas uma única instância do SQLServer, faz sentido manter ambas as tabelas dentro do mesmo banco de dados na mesma instância do SQLServer? Melhorei o desempenho ao usar uma única tabela para consultas operacionais e analíticas? Dizendo de outra forma, tenho duas opções, usando uma instância do SQLServer:
- inserir dados em uma tabela com todos os índices necessários e consultar essa tabela para rastreamento E para análise
- insira dados em uma tabela com poucos índices e copie-os para outra tabela com mais índices e um tamanho geral reduzido e consulte a primeira para rastreamento e a segunda para análise
Se você me disser que se eu colocar tudo no mesmo SQLServer, 1 e 2 não serão muito diferentes em termos de performance, vou ficar com 1 porque é mais fácil.
Se eu fizer agregações de alguns minutos na tabela analítica, a escrita na tabela operacional ficará menos lenta ou o mesmo acontecerá com a análise diretamente na tabela operacional?
Obrigado