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, realizamos uma análise exploratória preliminar (AEP) e 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-1627911433032.png

SOLUÇÕES PROPOSTAS

Para as propostas listadas a seguir, são considerados o escopo definido na seção anterior.

S1) Exclusão dos registros repetidos - Existe uma grande quantidade de informação repetida entre as tabelas dbo.versao_secao_documento(VSD) e dbo.documento_conteudo(DC), enquanto a tabela VSD armazena partes do documento, a tabela DC armazena o documento inteiro. Com esta abordagem, nosso objetivo é identificar se é possível excluir os registros de uma das tabelas sem prejudicar a informação presente. Sendo necessária para esta abordagem 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

Para definição do mapa de risco, foram considerados os seguintes atributos:

  • ABORDAGEM - de acordo com as soluções propostas na seção anterior;
  • EFICIÊNCIA - considerando a abordagem proposta, e o contexto, considera-se eficiência a melhoria na performance e a diminuição do espaço em disco;
  • RISCO - considera-se neste atributo o risco de indisponibilidade e falhas inesperadas na aplicação;
  • RECUPERABILIDADE - probabilidade de recuperação dos registros impactados (sem considerar backup);
  • COMPLEXIDADE - complexidade de implantação da solução.

Os valores preenchidos foram definidos a partir de alinhamento entre os membros do time.

# ABORDAGEM EFICIÊNCIA RISCO RECUPERABILIDADE COMPLEXIDADE
S1 Exclusão Alta Alto Alta Altíssima
S2 Atualização Média Médio/Alto Nula Altíssima
S3 Expurgo Média/Alta Médio Alta Média/Alta
S4 Particionamento Necessita de Estudo Nulo Não Aplica Alta

DISCUSSÃO

Após a elucidação das abordagens propostas, optamos pela execução da solução proposta S1, sendo destacados os pontos fortes e fracos a seguir e a aplicação na próxima seção.

Pontos Fortes

São pontos fortes dessa abordagem a alta eficiência da proposta e a alta recuperabilidade. A alta eficiência consiste na grande quantidade de registros que serão removidos, de acordo com a análise exploratória preliminar. Por outro lado, a recuperabilidade consiste no foco da proposta de apagar apenas informações redundantes, não ocorrendo perda efetiva da informação;

Pontos Fracos

A complexidade de execução da abordagem é o seu principal ponto fraco, sendo uma atividade complexa e que necessita de simulação e teste. Outro ponto fraco esta relacionado ao risco de sermos afetados por cenários desconhecidos, como validação de conteúdo que pode estar presente na aplicação, mas não foi identificada na análise exploratória preliminar.

APLICAÇÃO

Conforme apresentado na discussão, com a abordagem de exclusão de registros redundantes sendo definida como primeiro foco de trabalho, torna-se necessária a realização de um segundo estudo técnico, com os objetivos de explorar, simular e validar a proposta, tornando-a APTA para execução em produção.

Recomenda-se a criação de um cronograma para estudo e execução da proposta. 

Pode ser interessante avaliar o tempo de execução da solução afim de definir um melhor horário de execução.

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