Você está na página 1de 37

Workshop PostgreSQL

Implementao, Administrao e Tunning


Caso Importao SIASG x SIASGnet-DC
(ADABAS x PostgreSQL)

Jeres Caldeira Gomes


jeres.gomes@serpro.gov.br

OBJETIVO

Compartilhar os resultados obtidos na demanda de


transposio dos dados legados do SIASG-SIDEC para
o SIASGnet-DC, discutindo questes sobre a utilizao
do SGBD PostgreSQL no projeto.

Workshop PostgreSQL

Tpicos
> O DBA e o SGBD

Ambiente de Trabalho

> PostgreSQL (SGBD Livre)

Problemas

> Ferramentas de apoio

Soluo

PDI Pentaho
> Tcnicas
Extrao
Carga Data Staging Area
Transformao
Carga Etapa Final

Tunning do SGBD
Tunning do Modelo
Tunning da Aplicao
> Processo de Importao
Implementao
> Administrao do SGBD

> Processo de Importao

Esquemas

Individual

Catlogo do Sistema

> Processo de Importao

> Execuo do Processo

Completa

> Controle do Processo

> Infraestrutura

> Lies Aprendidas

Workshop PostgreSQL

O DBA e o SGBD
> O DBA responsvel por:
> Implementar;
> Administrar;
> Cooperar para que o desempenho do SGBD seja aceitvel.
> A SUPDE possui poucos casos de DBAs responsveis por Administrao e
Tunning de servidores de bancos de dados em ambientes produtivos.
> Entender essas matrias, mesmo que superficialmente, coopera com o
processo de implementao e a qualidade final do produto de software.

Workshop PostgreSQL

PostgreSQL (SGBD Livre)

Quem poder nos ajudar!?


Algumas dvidas (receios) iniciais:
>Suporte interno
- Reinventar a roda
- Fazer uma roda que no sirva em lugar nenhum
>Ambiente produtivo (suporte)
>Verso (8.1, 8.2, 8.3, 8.4, 9.0...)
>Treinamento
>Documentao : )
>Ferramentas de apoio...
Workshop PostgreSQL

Ferramentas de apoio
Alm das ferramentas de linha de comando...

Power Architect

Shell Script

Workshop PostgreSQL

Ferramentas de apoio: PDI Pentaho

pan.sh -norep
-file=SIASG-UNIDADE-GESTORA.ktr
-log=log_15-SIASG-UNIDADE-GESTORA.txt level:basic
Workshop PostgreSQL

Tcnicas

A importao foi baseada em um processo ETL:


>Extrao dos dados existentes no Grande Porte
>Transformao dos dados recebidos para que os mesmos
obedecessem o padro do novo modelo.
>Carga em duas etapas:
- Carga dos dados em esquema temporrio (staging area)
- Carga dos dados no modelo final

ADABAS

Arquivos TXT

Workshop PostgreSQL

Staging
Area

Transformao

Base
Final

Tcnicas: Extrao
Arquivos de Marcao Fixa
SIDEC (DDM)
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100

Arquivos contendo 20, 80 e 180 GB.

Workshop PostgreSQL

Tcnicas: Carga Primeira etapa


Arquivo de marcao fixa
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100
01100001100110011100011100011000111000011100

PDI Pentaho

Workshop PostgreSQL

PostgreSQL (DDM)
Esquema Temporrio

Tcnicas: Carga Primeira etapa

A utilizao de um Esquema Temporrio (Data Staging Area) foi til


para:
> Verificar, classificar, validar e filtrar os dos dados;
> Tratamento preliminar de alguns dados;
> Conferncia do resultado da execuo da importao;
> Garantir que a regra de negcio extrada dos programas Natural foi
interpretada e aplicada corretamente;
> Agilidade das verificaes.
> Aproximao do modelo legado do paradigma relacional;

Workshop PostgreSQL

Tcnicas: Transformao
SIDEC (DDM)

Esquema Temporrio

CarregarBase()

Workshop PostgreSQL

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()

...

Tcnicas: Carga Final


SIDEC

Divulgao de Compras

Esquema Temporrio

Esquema Definitivo

CarregarBase()

Workshop PostgreSQL

Processo de Importao Individual

Carga de compras ou grupo de compras individuais.


> CarregarCompra(<chave da compra>)
> RecarregarCompra(<chave da compra>)
Processo utilizado em dois momentos:
> Testes especficos da aplicao
> Recarregar compras (por problemas ou testes)

Workshop PostgreSQL

Processo de Importao Completa

Carga dos dados de todas as compras existentes no


esquema auxiliar.
> criarbase.sh
> carregar_ddm.sh

PDI + SHELL

> carregar_ddm_erro.sh
> carregar_siasgnet.sh
> carregar_siasgnet_dc.sh

Workshop PostgreSQL

PSQL + SHELL

Infraestrutura: Ambiente de Trabalho

Primeiro ambiente

Servidor 1
2 CPUs
4 GB Memria.
100 GB de HD

Carga do esquema Siasgnet em 30 min.

Servidor 2
1 CPU
3 GB Memria.
350 GB de HD (disco lento)
Segundo Ambiente

Servidor 3
4 CPUs
8 GB Memria.
150 GB de HD
Workshop PostgreSQL

Carga do esquema Siasgnet em 2 min.

Infraestrutura: Ambiente de Trabalho

Sistemas Gerenciadores de Bancos de Dados so grandes


consumidores:
> Memria
> IO
> Processamento

OBS.: Recursos Insuficientes podem fazer com que voc


melhore a qualidade de suas instrues e transaes.
Workshop PostgreSQL

Infraestrutura: Equipamentos X configuraes

Bons equipamentos com configuraes inadequadas


ocasionam alguns equvocos:
> M impresso sobre a capacidade do SGBD
> M impresso do funcionamento da aplicao
> Investimento em hardware desnecessrio

OBS.: Configurao Incorreta pode fazer com que voc


melhore a qualidade de suas instrues e transaes.
Workshop PostgreSQL

Infraestrutura: Soluo Tunning do SGBD


Servidor: 2 CPUs / 4 GB Memria. / 100 GB de HD
Principais caractersticas da demanda:
- Grande volume de inserts
- Tratamento de grande massa de dados
postgresql.conf
Parmetro

Padro

Customizado

Aplicao

shared_buffer
work_mem
maintenance_work_mem
wal_buffers
fsync
checkpoint_segments
autovacuum

24 MB
1 MB
16 MB
64 kb
ON
3
ON

1 GB
32 MB
100 MB
2 MB
OFF
10
ON

De 25% a 40% (alocao de blocos em m.)


Order, merge, distinct...
Vacuum, create, alter...
Memria para LOG - possvel recuperao
Sincronismo entre WAL e Disco (Desenv!!!)
Nmero mximo de arquivos de LOG
Execuo automtica do vaccum

Workshop PostgreSQL

Infraestrutura: Soluo Tunning do Processo


Carga Individual
Os ndices devem existir previamente.
Nesse caso processo fica mais rpido.

Compra

Carga Completa
Os ndices devem ser criados
De acordo com a evoluo do processo.

Aviso

Compra
Aviso

CSL
Verso

Evento

CCL

Verso
CSL

Item

CCL
Evento

...

Os relacionamentos fazem parte da estratgia!


Workshop PostgreSQL

Item
...

Infraestrutura: Soluo Tunning do Processo

Comer o boi aos bifes

Imagem: http://www.artesnacozinha.com.br

Workshop PostgreSQL

Processo de Importao: Implementao


Administrao do consumo de recursos do servidor.

Script
Principal
(.sh)

Gerar bloco
de instrues

Script
Auxiliar
(.sql)

...
Config.

...
...
> Segmentao de etapas
> Otimizao da execuo
> Configurao Centralizada
Workshop PostgreSQL

Executar blocos
de instrues

Begin;

Commit;

Processo de Importao: Implementao

Quanto menor a transao:


> menor ser o consumo de recurso
> mais rpido ser a execuo

> Siasgnet
> ddm

> * resultado menos acoplado

Quanto maior a transao:


> menor nmero de processos adicionais
> maior chance de acoplao
> * maior consumo de recurso
> * maior tempo de execuo
> * maior complexidade no controle
> * maior complexidade na refao
Workshop PostgreSQL

> siasgnet_dc

Processo de Importao: Implementao


Efetuar a carga completa e tratar erros individualmente (recarregar).

Carga individual
200 compras
0,025 %

Carga completa
796.619 Compras

Workshop PostgreSQL

> Excluir a compra


> Verificar o erro
> Tratar o original
> Recarregar a compra

Processo de Importao: Implementao

As funes foram escritas utilizando PL/PGSQL.


Percepes da linguagem:
> Recursividade
> Sobrecarga
> Cursores
> Tratamento de erros / Controle de Exceo
> SQL nativo da linguagem
> Fcil aprendizagem
> Ampla documentao

Workshop PostgreSQL

Administrao do SGBD: Esquemas

dbd_42010_siasgnet

Esquemas

public

ddm

Workshop PostgreSQL

siasgnet_sp

siasgnet

siasgnet_irp

siasgnet_dc

Administrao do SGBD: Catlogo do Sistema

Qualquer informao do SGBD pode ser adquirida atravs do catlogo. Esses dados
podem ser importantes para automatizar e facilitar tarefas.

pg_attribute

pg_class

pg_namespace

Workshop PostgreSQL

pg_constraint

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

Extrao Grande Porte...........07:00:00


Transferncia 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

Workshop PostgreSQL

Execuo do Processo
Onde efetuar a execuo final?
PRODUO

2
1
Extrao

3
Servidor
Aplic. Prod.

Executar

4
Servidor
BD prod.

Executar

4
Servidor 2
(disco rpido)

6
Restore

Qware
2

3
Servidor 1
(Espao HD)

DESENVOLVIMENTO

Workshop PostgreSQL

5
Backup

Execuo do Processo
Onde efetuar a execuo final?
Ambiente de
DESENVOLVIMENTO

Ambiente de
PRODUO

SUPTI
(CTA)

SUPCD
(BSA)

38 horas
Suporte local
Total Acesso ao ambiente

Workshop PostgreSQL

30 horas
Suporte via SUPCD
Acesso:
- leitura (via aplicao)
- alteraes via solicitao / email

Execuo do Processo
Em desenvolvimento!

Principal motivao: fator surpresa.


Ambiente de
DESENVOLVIMENTO

Ambiente de
PRODUO

SUPTI
(CTA)

SUPCD
(BSA)

BAKCUP

38 horas + 1 h (backup)
Suporte local
Total Acesso ao ambiente

17/08 18/08
Extrao
ddm

18/08/2011
Transf. Arq.
Carga ddm e dc

Workshop PostgreSQL

RESTORE

30 horas
Suporte via SUPCD
Acesso:
- leitura (via aplicao)
- alteraes via solicitao / email
19/08/2011
Fim Carga dc
Verificaes

20/08/2011
Backup
Restore

21/08/2011
Domingo

22/08/2011
Abertura
em Produo

Controle do Processo
O processo precisaria ser executado em uma determinada janela de
tempo. Isso motivou algumas questes:
> 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 concludas?
> O que podemos otimizar?
GRUPO
1
1
1
1
2
3
3
3

PROCESSO
INCIO
CARGA: unidade_gestora
25/7 10:51
CARGA: compra_com_licitacao
25/7 10:52
CARGA: compra_sem_licitacao
25/7 10:58
CARGA: resultado_compra
25/7 11:18
tabela_cidades para Municipio 26/7 10:14
Compras originais
26/7 10:17
Subrogacao
26/7 11:51
Versoes das compras
26/7 11:52
...
Grupo 1: ddm
Grupo 2: siasgnet
Grupo 3: siasgnet_dc

Workshop PostgreSQL

FIM
25/7
25/7
25/7
25/7
26/7
26/7
26/7
26/7

10:52
10:58
11:18
15:07
10:14
11:51
11:51
12:14

statusCarga(...,...)

TEMPO
00:01:00
00:06:04
00:20:29
03:49:09
00:00:00
01:34:12
00:00:00
00:22:49

Nmeros ps Implantao*
Importao do legado:
796.619 compras
6.421.550 itens

Compras novas (2 meses aps implantao):


57.831 compras
498.897 itens
Mdia de 1.279 compras em dias teis
Pico de 1.617 compras em um nico dia
Atualmente (08/2013 - BD com 64 GB):
Mdia 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
Estimativa de crescimento: 500 MB por ms
* Consultas efetuada entre 25/10/2011 e 01/08/2013.

Workshop PostgreSQL

Lies Aprendidas

> Comer o boi aos bifes facilita a digesto.


> Seguir um processo de implementao, por mais simples que seja
evita retrabalho.
> Tarefas de importao de dados precisam ser comentadas e
documentadas requisitos so importantes.
> Toda parte importante, por menor que seja.
> Sem recurso apropriado o trabalho dispendioso, demorado,
cansativo e desmotivante.
> O PostgreSQL se demonstrou um SGBD respeitvel.

Workshop PostgreSQL

Economia dos cofres pblicos

Economia em comparao com SGBDs proprietrio.


Clculo simples:

Licena x tempo = R$ ...$$$.$$$,$$

Workshop PostgreSQL

Dvidas, perguntas e sugestes

?!

Você também pode gostar