• Nenhum resultado encontrado

Workshop PostgreSQL. Implementação, Administração e Tunning Caso Importação SIASG x SIASGnet-DC (ADABAS x PostgreSQL)

N/A
N/A
Protected

Academic year: 2021

Share "Workshop PostgreSQL. Implementação, Administração e Tunning Caso Importação SIASG x SIASGnet-DC (ADABAS x PostgreSQL)"

Copied!
37
0
0

Texto

(1)
(2)

Workshop PostgreSQL

Implementação, Administração e Tunning

Caso Importação SIASG x SIASGnet-DC

(ADABAS x PostgreSQL)

(3)

OBJETIVO

Compartilhar os resultados obtidos na demanda de

transposição dos dados legados do SIASG-SIDEC para

o SIASGnet-DC, discutindo questões sobre a utilização

do SGBD PostgreSQL no projeto.

(4)

Tópicos

Ambiente de Trabalho

Problemas

Solução

Tunning do SGBD

Tunning do Modelo

Tunning da Aplicação

> Processo de Importação

Implementação

> Administração do SGBD

Esquemas

Catálogo do Sistema

> Execução do Processo

> O DBA e o SGBD

> PostgreSQL (SGBD Livre)

> Ferramentas de apoio

PDI Pentaho

> Técnicas

Extração

Carga – Data Staging Area

Transformação

Carga – Etapa Final

> Processo de Importação

Individual

(5)

O DBA e o SGBD

> O DBA é responsável por:

> Implementar;

> Administrar;

> Cooperar para que o desempenho do SGBD seja aceitável.

> A SUPDE possui poucos casos de DBAs responsáveis por Administração e

Tunning de servidores de bancos de dados em ambientes produtivos.

> Entender essas matérias, mesmo que superficialmente, coopera com o

processo de implementação e a qualidade final do produto de software.

(6)

PostgreSQL (SGBD Livre)

Quem poderá nos ajudar!?

Algumas dúvidas (receios) iniciais:

>Suporte interno

- Reinventar a roda

- Fazer uma roda que não sirva em lugar nenhum

>Ambiente produtivo (suporte)

>Versão (8.1, 8.2, 8.3, 8.4, 9.0...)

>Treinamento

>Documentação : )

(7)

Ferramentas de apoio

Power Architect

Shell Script

(8)

Ferramentas de apoio: PDI Pentaho

(9)

Técnicas

A importação foi baseada em um processo ETL:

>Extração dos dados existentes no Grande Porte

>Transformação dos dados recebidos para que os mesmos

obedecessem o padrão do novo modelo.

>Carga em duas etapas:

- Carga dos dados em esquema temporário (

staging area

)

- Carga dos dados no modelo final

Arquivos TXT Transformação

(10)

Técnicas: Extração

SIDEC (DDM)

Arquivos de Marcação Fixa

Arquivos contendo 20, 80 e 180 GB.

01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100

(11)

Técnicas: Carga – Primeira etapa

Arquivo de marcação fixa PostgreSQL (DDM)

Esquema Temporário PDI Pentaho 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100 01100001100110011100011100011000111000011100

(12)

Técnicas: Carga – Primeira etapa

A utilização de um Esquema Temporário (Data Staging Area) foi útil

para:

> Verificar, classificar, validar e filtrar os dos dados;

> Tratamento preliminar de alguns dados;

> Conferência do resultado da execução da importação;

> Garantir que a regra de negócio extraída dos programas Natural foi

interpretada e aplicada corretamente;

> Agilidade das verificações.

(13)

Técnicas: Transformação

CarregarBase

()

atualizaSituacaoAvisoCCL() atualizaSituacaoAvisoCSL() atualizaSituacaoAvisoEvento() trataResultadoCompraVencDisp() trataResultadoCompraDescMaterial() trataResultadoCompraDescServico() carregaCompraOriginal() carregaSubrogacao() carregaVersaoCompra() carregaAviso() carregaAvisoCompra() carregaAvisoEvento() carregaEdital_ccl() geraAnexoItemLegado() carregaItensVersoes() vinculaBeneficioItemLicitacao() carregaLocalEntrega() replicaItensParaVersaoSemItem() atualizaQuantidadeItensVersoes() carregaPedidoDispensaEletronica() carregaItemPedidoDispensaEletronica() atualizaQuantidadeItensPde() atualizaValorTotalItemPde() AtualizaValorTotalItemCsl() carregaGrupoPrecoGlobal() carregaGruposVersoes() carregaGrupoPrecoGlobalItemLicitacao() vinculaGrupoBeneficioTipoiii() atualizaPesquisaMercadoConsistente() carregaGruposVersoesIntermediarias() ... SIDEC (DDM) Esquema Temporário

(14)

Técnicas: Carga Final

SIDEC

Esquema Temporário Divulgação de ComprasEsquema Definitivo

(15)

Processo de Importação Individual

Carga de compras ou grupo de compras individuais.

> CarregarCompra(<chave da compra>)

> RecarregarCompra(<chave da compra>)

Processo utilizado em dois momentos:

> Testes específicos da aplicação

(16)

Processo de Importação Completa

Carga dos dados de todas as compras existentes no

esquema auxiliar.

> criarbase.sh

> carregar_ddm.sh

> carregar_ddm_erro.sh

> carregar_siasgnet.sh

> carregar_siasgnet_dc.sh

PDI + SHELL PSQL + SHELL

(17)

Infraestrutura: Ambiente de Trabalho

Servidor 1

2 CPUs

4 GB Memória.

100 GB de HD

Servidor 2

1 CPU

3 GB Memória.

350 GB de HD

(disco lento)

Servidor 3

4 CPUs

8 GB Memória.

150 GB de HD

Primeiro ambiente Segundo Ambiente

Carga do esquema Siasgnet em 2 min.

(18)

Infraestrutura: Ambiente de Trabalho

Sistemas Gerenciadores de Bancos de Dados são grandes

consumidores:

> Memória

> IO

> Processamento

OBS.:

Recursos Insuficientes

podem fazer com que você

melhore a qualidade de suas instruções e transações.

(19)

Infraestrutura:

Equipamentos X configurações

“Bons equipamentos” com “configurações inadequadas”

ocasionam alguns equívocos:

> Má impressão sobre a capacidade do SGBD

> Má impressão do funcionamento da aplicação

> Investimento em hardware desnecessário

OBS.:

Configuração Incorreta

pode fazer com que você

melhore a qualidade de suas instruções e transações.

(20)

Infraestrutura: Solução Tunning do SGBD

Servidor:

2 CPUs / 4 GB Memória. / 100 GB de HD

Principais características da demanda:

- Grande volume de inserts

- Tratamento de grande massa de dados

shared_buffer work_mem maintenance_work_mem wal_buffers fsync checkpoint_segments autovacuum 1 GB 32 MB 100 MB 2 MB OFF 10 ON Padrão Customizado 24 MB 1 MB 16 MB 64 kb ON 3 ON Parâmetro De 25% a 40% (alocação de blocos em m.) Order, merge, distinct...

Vacuum, create, alter...

Memória para LOG - possível recuperação Sincronismo entre WAL e Disco (Desenv!!!) Número máximo de arquivos de LOG

Execução automática do vaccum

Aplicação

(21)

Infraestrutura: Solução Tunning do Processo

Compra CCL CSL Versão Item Evento Aviso ... Compra CCL CSL Versão Item Evento Aviso ...

Carga Individual Carga Completa

Os índices devem existir previamente.

(22)

Infraestrutura: Solução Tunning do Processo

(23)

Processo de Importação: Implementação

Administração do consumo de recursos do servidor.

Script Auxiliar (.sql) Begin; … Commit; Gerar bloco de instruções Executar blocos de instruções > Segmentação de etapas > Otimização da execução Config. ... ... ... Script Principal (.sh)

(24)

Processo de Importação: Implementação

Quanto menor a transação:

> menor será o consumo de recurso

> mais rápido será a execução

> * resultado menos acoplado

Quanto maior a transação:

> menor número de processos adicionais

> maior chance de acoplação

> * maior consumo de recurso

> * maior tempo de execução

> * maior complexidade no controle

> * maior complexidade na refação

> Siasgnet > ddm

(25)

Processo de Importação: Implementação

Carga completa 796.619 Compras Carga individual 200 compras 0,025 % > Excluir a compra > Verificar o erro > Tratar o original > Recarregar a compra Efetuar a carga completa e tratar erros individualmente (recarregar).

(26)

Processo de Importação: Implementação

As funções foram escritas utilizando PL/PGSQL.

Percepções da linguagem:

> Recursividade

> Sobrecarga

> Cursores

> Tratamento de erros / Controle de Exceção

> SQL nativo da linguagem

> Fácil aprendizagem

> Ampla documentação

(27)

Administração do SGBD: Esquemas

Esquemas

dbd_42010_siasgnet

siasgnet siasgnet_dc siasgnet_sp siasgnet_irp ddm public

(28)

Administração do SGBD: Catálogo do Sistema

pg_constraint pg_attribute

pg_namespace pg_class

Qualquer informação do SGBD pode ser adquirida através do catálogo. Esses dados podem ser importantes para automatizar e facilitar tarefas.

(29)

Execução do Processo

> O processo contemplou uma janela de tempo de 3 dias (final de semana). Tarefas envolvidas:

Extração Grande Porte...

07:00:00

Transferência dos arquivos...

02:53:00

Carga do esquema ddm...06:35:00

Carga do esquema siasgnet...00:02:44

Carga do esquema siasgnet_dc....22:00:00

TEMPO TOTAL:...

38:30:44

(30)

Execução do Processo

Onde efetuar a execução final?

Extração

PRODUÇÃO

Servidor

Aplic. Prod. BD prod.Servidor

Servidor 1

(Espaço HD) (disco rápido)Servidor 2 Qware Executar Executar Backup Restore 1 2 3 4 2 3 4 5 6

(31)

Execução do Processo

Ambiente de

DESENVOLVIMENTO PRODUÇÃOAmbiente de

SUPCD (BSA) SUPTI (CTA) 38 horas Suporte local

Total Acesso ao ambiente

30 horas

Suporte via SUPCD Acesso:

- leitura (via aplicação)

- alterações via solicitação / email

(32)

Execução do Processo

Ambiente de

DESENVOLVIMENTO PRODUÇÃOAmbiente de

SUPCD (BSA) SUPTI (CTA) 38 horas + 1 h (backup) Suporte local

Total Acesso ao ambiente

30 horas

Suporte via SUPCD Acesso:

- leitura (via aplicação)

- alterações via solicitação / email

Em desenvolvimento!

Principal motivação: fator surpresa.

(33)

Controle do Processo

GRUPO PROCESSO INÍCIO FIM TEMPO

1 CARGA: unidade_gestora 25/7 10:51 25/7 10:52 00:01:00

1 CARGA: compra_com_licitacao 25/7 10:52 25/7 10:58 00:06:04

1 CARGA: compra_sem_licitacao 25/7 10:58 25/7 11:18 00:20:29

1 CARGA: resultado_compra 25/7 11:18 25/7 15:07 03:49:09

2 tabela_cidades para Municipio 26/7 10:14 26/7 10:14 00:00:00

3 Compras originais 26/7 10:17 26/7 11:51 01:34:12

3 Subrogacao 26/7 11:51 26/7 11:51 00:00:00

3 Versoes das compras 26/7 11:52 26/7 12:14 00:22:49

...

O processo precisaria ser executado em uma determinada janela de

tempo. Isso motivou algumas questões:

> Qual o tempo para efetuar a carga completa?

> Qual o tempo para efetuar a carga de determinada etapa?

> Como podemos saber qual etapa do processo está sendo executada? > Quais etapas já foram concluídas?

> O que podemos otimizar?

Grupo 1: ddm

(34)

Números pós Implantação*

Importação do legado:

796.619 compras

6.421.550 itens

Compras novas (2 meses após implantação):

57.831 compras

498.897 itens

Média de 1.279 compras em dias úteis Pico de 1.617 compras em um único dia

Atualmente (08/2013 - BD com 64 GB):

Média de 850 compras por dia

Pico de 3.371 compras em um único dia

1.358.708 compras registradas até 01/08/2013 11.241.332 itens registrados até 01/08/2013

(35)

Lições Aprendidas

>

“Comer o boi aos bifes facilita a digestão.”

>

Seguir um processo de implementação, por mais simples que seja

evita retrabalho.

>

Tarefas de importação de dados precisam ser comentadas e

documentadas – requisitos são importantes.

>

Toda parte é importante, por menor que seja.

>

Sem recurso apropriado o trabalho é dispendioso, demorado,

cansativo e desmotivante.

(36)

Economia dos cofres públicos

Economia em comparação com SGBDs proprietário.

Cálculo simples:

(37)

Dúvidas, perguntas e sugestões

Referências

Documentos relacionados