[SEI][SPIKE] Realizar análise para redução do espaço em disco ocupado pelo SEI
CENÁRIO ATUAL
O Sistema Eletrônico de Informação é parte do projeto Governo Sem Papel, mantido pelo Estado de Rondônia, sendo utilizado para a geração e tramitação de processos entre secretarias. Economizando milhões em papel e impressão e acelerando o fluxo dos trâmites.
PROBLEMA
Com a ampla adoção pelas secretarias uma grande quantidade diária de dados é gerada. A versão utilizada possuí problemas conhecidos de performance e otimização e não pode ser atualizada devido a entraves burocráticos. O crescimento da utilização de recursos, principalmente de disco, gera dificuldades para a manutenção de logs, rotinas de backup, lentidão na aplicação e até mesmo alto custo para armazenamento.
OBJETIVO
Sendo definido o cenário atual e explicitado o problema, tem-se como objetivo primário a identificação de uma ou mais soluções que possibilitam a diminuição do espaço em disco ocupado pela base de dados da aplicação, assim como os riscos inerentes a cada solução identificada e a legalidade da proposta.
PREMISSAS
P1) Com os entraves burocráticos, hoje não é possível realizar correção via software, sendo necessárias a utilização de rotinas de banco;
P2) Mais de 90% do volume de dados estão concentrados nas tabelas dbo.versao_secao_documento e dbo.documento_conteudo;
ENVOLVIDOS
- Coordenadoria de Análise e Gestão de Dados
- Coordenadoria de Infraestrutura
- Adriano B. Sol Sol
ESCOPO
Dado nosso objetivo proposto, e considerando as premissas PRE1 e PRE2, definimos pelo escopo deste estudo apenas as tabelas dbo.versao_secao_documento e dbo.documento_conteudo;
SOLUÇÕES PROPOSTAS
Para as propostas listadas a seguir, são considerados o escopo definido na seção anterior.
S1) Exclusão dos dados repetidos - #IDEIA_TIAGO. Sendo necessária as seguintes validações
V1. Estabilidade da Aplicação - será necessário validar se as chaves removidas não impactarão em erros inesperados, procurando por marcadores que informam a quantidade de versões, por exemplo.
V2. Validação de Integridade - a maioria das transações possuem validação de integridade (para evitar operações fraudulentas). É necessário um estudo para identificar se não existem validadores de integridade nos registros, como Verificação de Somatória, Verificadores de Dispersão, entre outros.
S2) Atualização dos registros - Esta proposta consiste na atualizado dos registros de histórico de versão do documento assinado e visualizado por uma mensagem padrão, diminuindo consideravelmente. Sendo necessária a validação V2 da proposta S1.
S3) Expurgo - O expurgo consiste na remoção dos dados para uma outra tabela, ficando como histórico. Operações como movimentação das bases de dados levariam em conta apenas os dados que não foram expurgados, se tornando mais rápidas. Os backups nessas tabelas de expurgo poderiam ser menos recorrentes. A economia ocorreria na frequência dos backups e nos snapshots da aplicação. Sendo necessária as mesmas validações da proposta S1.
S4) Particionamento das Tabelas - embora não culmine para uma efetiva redução no espaço em disco, essa solução permite uma possível melhoria na performance. Para isso, é necessário um estudo visando identificar as chaves de partição e a granularidade.
O particionamento de tabelas só é efetivo se as consultas se aproveitarem dessa solução.
MAPA DE RISCO
PROPOSTA |
ABORDAGEM |
RISCO |
EFICIÊNCIA |
COMPLEXIDADE |
P1 |
Exclusão |
Alto |
Alta |
Altíssima |
P2 |
Atualização |
Médio/Alto |
Média |
Altíssima |
P3 |
Expurgo | Médio | Média/Alta | Média/Alta |
P4 |
Particionamento |
Nulo |
Necessita de Estudo |
Alta |
VALIDAÇÃO
APLICAÇÃO
CRONOGRAMA
Solicitar ambiente de testes para a Coordenadoria de Infraestrutura.
REFERÊNCIAS
https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms177411(v=sql.105)?redirectedfrom=MSDN
https://dba.stackexchange.com/questions/62707/is-table-partitioning-improving-performance-is-it-worth-it