Ir para o conteúdo principal

[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 diminuição do espaço em disco ocupado pela base de dados da aplicação, atendendo a Estória de Usuário propostas em: https://app.pipefy.com/open-cards/435477806.

RESULTADOS ESPERADOS

Com este estudo espera-se:

  1. Identificar uma ou mais soluções que possibilitam a diminuição do espaço em disco ocupado pela base de dados da aplicação;
  2. Identificar riscos inerentes a cada solução identificada e a legalidade da proposta;
  3. Fornecer subsídio para os próximos estudos;
  4. Definir plano de execução;

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;
P3) Não existe material documentado sobre esta situação;

ENVOLVIDOS

  • Coordenadoria de Análise e Gestão de Dados
  • Coordenadoria de Infraestrutura
  • Adriano B. Sol Sol

ESCOPO DE ATUAÇÃO

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, sendo a análise da estrutura e impacto demonstradas a seguir.

ANÁLISE DA ESTRUTURA (Relacionamento Lógico)

Os relacionamentos de primeiro grau das duas tabelas propostas são os seguintes:

image-1627489864596.png

ANÁLISE DO IMPACTO (Armazenamento Utilizado)

O uso de espaço em disco das tabelas ordenadas pelo tamanho(KB) de forma decrescente trás as duas tabelas propostas ao topo do relatório, mostrando assim todo o grande armazenamento reservado para elas e a quantidade de registros(Records).

image-1627490341093.png

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

 

DISCUSSÃ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