Cadastre-se Revistas DevMedia Cursos
 

Space de SALVIO PADLIPSKAS
Busca Autor


Últimas 20 atualizações de SALVIO PADLIPSKAS

Artigo - Desenvolvendo uma estratégia eficiente de Backup & Restore em ambientes transacionais

Desenvolvendo uma estratégia eficiente de Backup & Restore em ambientes transacionais

Sálvio Padlipskas

Na área de administração de banco de dados, a definição e implementação da política de Backup & Restore serve para garantir a disponibilidade contínua da informação em tempo hábil para a tomada das decisões corporativas, principalmente quando ocorrem contratempos.

Esse artigo propõe como desenvolver, inicialmente, uma política do processo de Backup corporativo. Para alcançar esse resultado, detalham-se as etapas necessárias para garantir uma estratégia consistente de backup e recover em bancos de dados transacionais, podendo ser incorporada em qualquer ambiente corporativo que armazena desde pequenos volumes de informações até ambientes críticos. Exemplos desses ambientes são leilões on-line e bolsa de valores, onde o tempo e o uso da informação pode fazer a diferença entre a prosperidade e a ruína.

Estratégia de backup

O ponto chave para o desenvolvimento de uma boa estratégia de backup está diretamente associada à disponibilidade do dado para a empresa. O bom senso deve imperar nesse momento, pois de nada adianta ter um ambiente “supersônico” de backup e restore instalado, quando na verdade o que a empresa precisa é simplesmente ter um “teco-teco” ativo e operante.

O resultado a ser alcançado é manter os ambientes de desenvolvimento, teste, integração, homologação e produção disponíveis e atualizadas para uso constante. As equipes envolvidas: DBA, DataCenter (responsável pela execução e checklist do processo) e a gerência da empresa devem estar sempre atualizados em relação às informações geradas pelo processo de backup.

O alicerce dessa estratégia está baseado em três fases bem conhecidas:

1.    Catalogar servidores de banco de dados / aplicações;

2.    Levantamento dos requisitos do ambiente;

3.    Implementação do processo de Backup & Recover.

Catalogar servidores de banco de dados / aplicações

Os servidores de banco de dados e suas respectivas aplicações devem ser mapeados para que seja possível identificar o grau de importância da disponibilidade dos dados. Nessa fase, o papel da equipe de desenvolvimento e das áreas afins que se utilizam da informação é primordial para desenvolver estratégias globais (por servidor) e distintas (para cada aplicação) de procedimentos de backups.

O resultado final do material desenvolvido deve ser aprovado pela área técnica e de negócio, e as informações atualizadas a respeito dos backups realizados devem ser disponibilizadas para as pessoas interessadas.

A Tabela 1 exibe um exemplo de servidores, aplicações e objetos que devem participar de um determinado procedimento de backup.

 

30-05-2007tabela01.JPG
Tabela 1.
Servidores e Aplicações mapeadas em um procedimento de backup.

Dependendo da quantidade de aplicações existentes, é necessário conhecer quais fazem parte do servidor e suas principais características.

A Tabela 2 realiza um ranking das aplicações ordenadas por importância de disponibilidade nos servidores.

 

30-05-2007tabela02.JPG 

Tabela 2. Ranking de aplicações ordenadas por disponibilidade nos servidores.

A tabela indica as prioridades de disponibilidade de acesso das aplicações do banco de dados a ser analisado. Percebe-se claramente que a empresa optou por dar preferência ao ambiente de desenvolvimento em termos de disponibilidade, indicando que muitas customizações são implementadas no ambiente de produção sem passar pelas fases essenciais TEIN e HOMO (nomes dados para os ambientes de Teste e Homologação) devido às constantes mudanças exigidas pelo mercado para alavancar as vendas.

Um ponto extremamente positivo nessa fase é a documentação fornecida para cada servidor de banco de dados. O nível de detalhamento pode ser enriquecido de itens importantes como: Sistema Operacional utilizado, versão do banco de dados, versão das aplicações, linguagens de programação utilizada no desenvolvimento das aplicações, entre outros.

Nessa fase têm-se os servidores e as aplicações que irão participar do processo de backup. O volume de dados a ser manuseado por aplicação é de extrema importância para desenvolver uma estratégia que adeque a necessidade da empresa ao tempo de recuperação dos dados.

Levantamento dos requisitos do ambiente

Essa fase delimita o escopo do projeto a ser desenvolvido, proporcionando definir qual é o tempo limite de indisponibilidade para cada ambiente e identificando quais são os tipos de backups a serem implementados. Para definir corretamente a atuação das pessoas envolvidas nessa etapa do processo, os requisitos podem ser assim divididos:

1.    Requisitos operacionais;

2.    Requisitos de negócios;

3.    Requisitos técnicos.

 

Os requisitos operacionais de um ambiente de banco de dados afetam a definição da estratégia de Backup & Recover. Ao levar em conta esses requisitos, determine se um banco de dados está disponível para operações contínuas. Por exemplo: caso seja necessário ter um banco de dados trabalhando 24 horas por dia e 7 dias por semana, ou seja, de forma ininterrupta, desenvolva um procedimento de backup que possibilite o mínimo de  incomodo para os usuários que estão conectados.

Questões importantes são definidas nessa fase. A volatilidade dos dados no database; a freqüência de atualizações ocorridas nas tabelas e índices; o agendamento e a documentação das alterações realizadas na estrutura dos objetos bem como com qual freqüência o ambiente sofre intervenção do DBA são aspectos importantíssimos de serem abordados. Por exemplo: se os dados forem altamente voláteis ou até mesmo se o ambiente é extremamente instável, será necessário criar uma estratégia para tornar o backup freqüente.

No requisito de negócio é importante reconhecer qual é o impacto negativo do período de inatividade do banco de dados para o negócio. A idéia é reduzir o tempo do MTTR (Mean Time To Recover – Tempo Médio de Recuperação) para garantir que o banco de dados esteja indisponível o menor tempo possível.

Nos requisitos técnicos, a configuração e parametrização do banco de dados fornecem informações indispensáveis no desenvolvimento da estratégia de backup. Os recursos do ambiente, como o espaço físico disponível em disco para Backup & Recover podem ser limitados. Por exemplo: caso seja necessário armazenar imagens físicas dos arquivos de dados em disco, o esp

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
31/05/2007 21:03:00





Artigo - Documentação de programas fontes

Documentação de programas fontes

 

Olá amigo(a),

 

Como toda obra bem planejada, o código fonte de um programa desenvolvido deve conter regras para que as futuras customizações possam ser realizadas sem colocar em risco o tempo de implementação. Os pontos a serem atacados são:

 

·       Padronização no nome do programa a ser desenvolvido

·       Documentação inicial do programa

·       Documentação das principais variáveis utilizadas

·       Padronização do nome das variáveis e parâmetros

·       Documentação de pontos importantes no decorrer do código

 

As principais metodologias de programação existentes atualmente indicam que cerca de 50% do código fonte deve estar documentado. É iminente que esse tipo de preocupação está relacionada ao entendimento do programa desenvolvido por toda a equipe, fazendo com que o conhecimento não fique centralizado apenas no autor do código.

 

No exemplo abaixo temos um programa fonte escrito em linguagem Oracle PL/SQL escrito com metodologia de programação.Nesse exemplo, a cada execução de um programa no banco de dados, o seu respectivo nome e a data/hora de execução são armazenados em uma tabela de log, o mesmo acontecendo no término de sua execução. Sendo assim, tem-se o tempo total de execução do programa. Isso é muito útil para saber o a quantidade de vezes e o tempo médio de execução de cada programa. Veja como esse programa está bem documentado.

 

create or replace procedure prc_inicio

(

p_num_seq_log    out number,

p_nom_processo   in varchar2

) is

begin

--------------------------------------------------------

-- Objetivo    : A cada programa a ser executado, a data

--                  de início é registrada junto com o nome

--                  do programa. Quando o processo finalizar,

--                  a procedure prc_fim entra em ação para

--                  armazenar a data de término

-- Autor        : Gustavo Padlipskas

-- Criado em : 01/10/2005

-- Parâmetros: p_num_seq_log -> É o número do log gerado

--                                         para indicar que o pro-

--                          

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
01/03/2007 07:09:00





Artigo - Tuning – técnica de Reescrita de Consultas

Tuning – técnica de Reescrita de Consultas

 

 

1)     Objetivo: Ajuste de instruções SQL (Select, Insert, Update e Delete) pela técnica de Reescrita de Consultas

 

Olá amigos(as) !

 

Com a freqüente implementação de novas aplicações que fazem acesso ao banco de dados, uma preocupação constante da equipe de suporte é como manter o acesso aos dados com desempenho. Esse artigo trata de uma das melhores técnicas existentes para alcançar desempenho, chamada Reescrita de Consultas.

 

A justificativa

O principal motivo para que seja aplicada essa técnica é que as consultas SQL representam uma das principais origens de perda de desempenho. De acordo com uma pesquisa conduzida pela Oracle Corporation, tipicamente um DBA (Database Administrator) consome cerca de 55% de seu tempo realizando atividades de tuning. A figura 1 ilustra a distribuição de tempo por atividade de um típico DBA.

19-02-pic02.JPG 
FIGURA 1 - Distribuição de tempo por atividade do DBA

O monitoramento e ajustes de consultas SQL é a atividade que consome maior tempo do DBA por sua complexidade e por representar a maior parte dos acessos realizados no SGBDR, sendo que muitas não alcançam o desempenho esperado, devido a terem sido escritas pensando-se no resultado a serem obtidos, e não no melhor caminho para obtê-los. Fatores como falta de experiência em desenvolvimento, baixo nível de conhecimento técnico, prazos de entregas subdimensionados e falta de monitoramento individual contribuem para que as consultas sejam ineficientes, o que determina a análise freqüente das consultas.  

O otimizador constrói o plano de execução a partir da consulta SQL, tendo uma margem limitada de opções sobre os operadores utilizados. Uma consulta SQL mal escrita leva o otimizador a utilizar um caminho que nem sempre é o mais adequado, o que gera um plano de execução que normalmente compromete o desempenho. Em ambientes nos quais existem inúmeras consultas construídas dessa forma e que são executadas freqüentemente, a conseqüência acaba sendo drástica, dificultando o uso eficiente da maior parte dos recursos disponíveis e deixando de atender em tempo outros processos críticos cujas execuções são rápidas e necessitam de prioridade.

Assim sendo, existem inúmeras técnicas utilizadas pelos grandes mestres para se alcançar desempenho. A justificativa para se usar a técnica de reescrita de consultas, que na opinião de muitos deles é a 1ª em termos de menor impacto,  é simples : fazer com que o ajuste apenas afete a consulta específica, não se propagando para outras aplicações que acessam as tabelas envolvidas na instrução SQL. Um bom exemplo de propagação global de ajustes é a famosa “criação de índices”, que após ser criado, está disponível para ser usado por todas as aplicações que fazem uso da tabela ajustada. O impacto nesse caso pode ser positivo como também negativo (o que ocorre em muitas situações).

 

Como fazer ?

De forma bem simplificada, os principais critérios adotados  são :

 

1)     Monitorar as sessões ativas que estão sendo executadas no banco de dados

2)     Separar as consultas que estão “agarrando”, ou seja, com execuções

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
19/02/2007 10:32:00





Artigo - Separação dos dados transacionais x históricos

Separação dos dados transacionais x históricos

por Sálvio Padlipskas

 

Olá amigos(as) !

 

Dias atrás em 28/11/2006 – sábado, estávamos no evento InterCon2006 falando sobre a importância de manter o bom desempenho em termos de acesso feito ao banco de dados.  Um dos temas mais excitantes e que agradou a toda comunidade que estava presente, foi a “separação dos dados transacionais x históricos”.

 

Nesse artigo iremos abordar a importância e como fazer uma distribuição dos dados a fim de garantir acessos heterogêneos feitos pelas aplicações, garantindo a cada tipo de usuário um desempenho proporcional a sua complexidade.

imagem.JPG
 

A justificativa

O principal motivo para que seja aplicada essa técnica é o trafegar a informação de forma objetiva, evitando realizar muitas leituras dos blocos de dados, que é a unidade básica de leitura do banco de dados. Essa técnica é o mapa do tesouro para aplicações críticas como leilões on-line ou bolsa de valores, ou para aquelas que trabalhem com alta disponibilidade ou com grande volume de dados.

 

O resultado é simples : Garantir o bom desempenho, pois o banco de dados irá acessar um menor número de blocos de dados, diminuindo assim o tempo para processar a consulta.

 

Outras justificativas seriam: Menor tempo de backup e restore do banco de dados transacional, diminuição do tempo de recuperação do banco de dados entre outros.

   

Como fazer ?

De forma bem simplificada, os passos a seguir devem ser executados :

 

1)     Separar fisicamente os banco de dados em duas ou mais máquinas

2)     Duplicar o banco de dados (com linhas e suas respectivas interações com outros databases)

3)     Criar um mecanismo de sincronismo entre os banco de dados, de acordo com a criticidade e o objetivo da aplicação

 

Uma ressalva. Até aqui os dados estão “duplicados”, porém com sincronismo. Isso quer dizer que se criarmos um usuário HISTÓRICO e fazer com que ele acesse o banco de dados de histórico descrito no item 2 apenas apontamos para a base histórico.

 

 

Pa

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
07/11/2006 15:11:00





Artigo - As vantagens do uso de padronização em objetos no banco de dados

As vantagens do uso de padronização em objetos no banco de dados

 

Olá amigo(a),

 

A padronização de objetos em banco de dados é utilizada em larga escala em projetos onde são utilizados modelos de qualidade como: CMMI, PMI, ISO9005, entre outros. Muitas das empresas que não possuem esse tipo de metodologia implementada, constantemente buscam novas práticas de gerenciamento para diminuir seus custos diretos de desenvolvimento e manutenção de software.

 

Atualmente, o custo com as manutenções feitas nos aplicativos customizáveis, isto é, aqueles em que os desenvolvedores possuem o código fonte em mãos, corresponde a um dos grandes vilões no orçamento da área de desenvolvimento de software, deixando muitos gerentes de "cabelo em pé". O problema se agrava ainda mais quando estas manutenções são destinadas aos retrabalhos, e não para o desenvolvimento de novas funcionalidades.

 

A idéia do artigo dessa semana é demonstrar através de exemplos práticos como diminuir o custo na fase de desenvolvimento e manutenção do software por meio da definição de padrões no modelo de dados físico. O objetivo a ser alcançado é facilitar o entendimento dos desenvolvedores para que na fase de programação; a identificação das tabelas do sistema, seus atributos (colunas), os relacionamentos existentes e as constraints (restrições) sejam claras e precisas, facilitando o manuseio aos dados e consequentemente diminuindo o tempo de análise e programação.

 

O problema

 

Como início do trabalho, o exemplo abaixo trata de um modelo de dados sem padronização, que exige análise por parte do desenvolvedor para realizar a programação da aplicação.

 

10-10pic01.JPG 

Figura 1. Modelo de dados de vendas sem padronização dos nomes de tabelas e colunas.

 

Análise do Problema – Parte 1

Analisando cuidadosamente os nomes das tabelas e suas respectivas colunas, percebe-se claramente a dificuldade que o desenvolvedor irá ter para realizar o desenvolvimento da aplicação, ou até mesmo necessite fazer uma manutenção, como a formatação (máscara) de uma coluna na tela. Para iniciar o trabalho, o desenvolvedor terá que verificar cuidadosamente o dicionário de dados para identificar qual é o significado de cada coluna, bem como o nome das tabelas.

Indo um pouco mais além, o script desse modelo de dados é executado no ambiente de banco de dados, conforme mostra a figura 2:

 

10-10pic02.JPG 

Figura 2. Um script que cria tabelas sem utilizar padrões.

 

Análise do Problema – Parte 2

 

O script gerado acima contém um dos principais problemas encontrados atualmente na modelagem de dados: “A ausência de identificar as constraints  (Primary Key, Foreign Key,

NOT NULL entre outras)”

 

Sem as restrições (constraints) nomeadas de forma correta, a dificuldade para realizar um suporte em tempo hábil será muito grande, pois a mensagem de erro exibida não será significativa.  Isso é claramente visível no exemplo da figura 3, que irá inserir 2 linhas na tabela, sendo que a 2ª linha tem o mesmo código da chave primária da 1ª. , ocorrendo em uma mensagem de erro com o nome SYS_COO112132, ou seja, indecifrável.

 

10-10pic03.JPG 

Figura 3. Inserindo 2 linhas em uma tabela com o mesmo valor da PK (chave primária)

 

O simples exemplo citado acima demonstra que quando mais tabelas que não estejam

utilizando um padrão de nomenclatura, a complexidade de se realizar manutenção aumenta consideravelmente, afetando diretamente o custo de manutenção/desenvolvimento do software.

 

A solução

 

Modelo de dados utilizando padrões

 

Agora utilizaremos o mesmo exemplo da figura 1, porém utilizando uma padronização simples.

 

10-10pic04.JPG 

Figura 4. Modelo de dados de vendas com padronização dos nomes de tabelas e colunas.

 

Analisando cuidadosamente os nomes das tabelas e suas respectivas colunas,  percebe-se

que o desenvolvedor encontra um nome significativo para as colunas e tabelas, facilitando

seu trabalho, para realizar a formatação (máscara) das colunas na tela, bem como realizar

a programação para a entrada de dados.

 

Realizando a implementação física desse modelo no ambiente de banco de dados, tem-se o seguinte script executado na figura 5:

 

10-10pic05.JPG 

Figura 5. Um script que cria tabelas utilizando padrões nos nomes de : tabelas, colunas e constraints.

 

Apesar do script gerado conter mais linhas do que o exemplo da figura 2, ocorreu uma

definição adequada de  todos os nomes de tabelas, colunas e restrições existentes na aplicação, facilitando a identificação interna dos objetos criados no banco de dados.

Para realizar um teste prático, foi utilizado o mesmo comando insert da figura 3.


10-10pic06.JPG 

Figura 6. Inserindo 2 linhas em uma tabela com o mesmo valor da PK (chave primária)

 

A mensagem de erro exibida na figura 6 (que é o mesmo erro da figura 3) está muito mais

clara: PK_DEPTO, ou seja, violação da PK (Primary Key). Para realizar o suporte, o desenvolvedor conseguirá identificar facilmente o problema somente pela mensagem de erro exibida e resolve-lo em um menor tempo do que o exemplo do modelo com falta de padronização.

 

Considerações finais

 

A tabela 1 (abaixo) contém algumas sugestões para criar nomes de colunas e restrições no banco de dados na fase de implementação física no banco de dados.

 

Sugestão de padrões para criar nomes de colunas no modelo físico

Identificação

Descrição do atributo

Tipo de dado utilizado

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
10/10/2006 18:17:00





Artigo - Boas Vindas - Salvio

Boas Vindas

 

Olá amigos,

 

É com imensurável alegria e satisfação que iniciamos nossa coluna no site da SQLMagazine, que abordará diversos artigos relacionados a área de banco de dados e dicas relacionadas as áreas de análise e programação de sistemas computacionais.

 

Para ficarmos longe da monotonia, entrevistas e dicas de consagrados profissionais "OraSauros" enriquecerão essa coluna, garantindo uma excelente fonte de conhecimento.

 

Como o lema sempre foi "ler, aprender, praticar e replicar", sejam bem-vindos e sintam-se à vontade para enviar seus comentários, dúvidas, críticas e sugestões para o e-mail salvio@fiap.com.br, compartilhando nossos conhecimentos para agregar valor a outros membros da nossa comunidade.

 

Em breve, será disponibilizado o primeiro artigo sobre a "importância da padronização dos nomes dos objetos na fase de desenvolvimento do MER (Modelo Entidade e Relacionamento)".

 

Aguardo seu e-mail.

Um grande abraço e que nossos caminhos sejam iluminados pela sabedoria e humildade.

Salvio Padlipskas

-->">
28/09/2006 20:40:00





 

Sálvio Padlipskas (salvio@fiap.com.br) é professor titular da FIAP na área de Banco de Dados. Atua há 16 anos nas áreas de : Análise de Sistemas e Administração de Banco de Dados. É mestre pelo IPT/USP, na área de Engenharia de Software. Profissional certificado Oracle, atualmente trabalha no Grupo Ultra como DBA Oracle.
Arquivo de atualizações
 2007
 2006

Estatísticas do Autor:
Número de posts: 6
Características dos posts deste autor:
Conteúdo:
Utilidade:
13 0
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group