PUC – BD3 Prof. Elvira Uchôa IBM DataBase 2 DB2 versão 7.2 Versão original em 02/05/2002 Versão 3 em 09/05/02 Carlos Henrique P. de Oliveira Rafael Vieira Siqueira A. 0. Introdução: 0a. O DB2 Desde a fundação do e-business, o software DB2 é o primeiro sistema de gerenciamento de banco-de-dados relacional multiplataforma, multimídia e pronto para Web. O DB2 é o bastante para atender as necessidades de grandes corporações e flexível para servir a média e pequena empresa com negócios em e-business. Escalonamento inigualável. O DB2 suporta milhões de usuários e terabytes de dados em aplicativos de e-business de ponta, em todo o mundo. Além disso utiliza da tecnologia da Internet para facilitar o acesso, disponibilidade e segurança da informação. O DB2 dá poderes a seus funcionários externos ao colocar as informações sobre a empresa ao alcance de todos. O resultado é de mais de 60 milhões de usuários de DB2 e mais de 300 mil corporações pelo mundo inteiro utilizando a solução da IBM para gerenciamento de dados. 0b. Arquitetura do DB2 O DB2 tem arquitetura DRDA - Distributed Relational Database Architecture (Arquitetura de Banco-de-dados Relacional Distribuído). Esta arquitetura define formatos e protocolos para prover acesso transparente à dados remotos. DB2 opera nos ambientes MVS/XA e MVS/370. O DB2 aproveita das vantagens de tecnologia de novos e já existentes hardware e software. DB2 foi projetado para utilizar a arquitetura XA, incluindo endereçamento virtual de 31-bits e armazenamento real de alta capacidade. Tabelas Grandes – A arquitetura DB2 possibilita que tabelas sejam realmente grandes, até 64 bilhões de bytes em tamanho. Essas tabelas podem ser divididas em partes menores para serem reorganizadas e recuperadas individualmente para facilitar sua administração. Recuperação Integrada – DB2 engloba um mecanismo de recuperação integrado. Possui log de discos, recuperação automática em reinicializações e serviços mais comuns com funções de recuperação. A recuperação do DB2 é em integral coordenada com a recuperação do IMS/VS e CICS/OS/VS. DB2 comunica com ambos IMS/VS e CICS/OS/VS para que inconsistências em potencial possam ser resolvidas sem perda de dados. Segurança – Além de flexível engloba um mecanismo de autorização e acesso. Suporte à fragmentação somente horizontal - Hash partitioning (balanceamento) e Partition maps (paralelismo). A fim determinar onde uma relação será fragmentada, o administrador seleciona "uma chave de partição" que seja incorporada em uma função Hash junto com o número das divisões desejadas, já o partition maps oferece paralelismo. Suporte à particionamento – Para tornar tabelas com grande tamanho administráveis, DB2 suporta “espaço de tabelas” (table spaces) particionáveis. Uma table space pode ser dividida em partições com valores padrões de bases de dados. Partições também podem ser reorganizadas ou recuperadas independentes, reduzindo o tempo que a table space inteira fica indisponível. Particionamento também possibilita que dados ativos sejam armazenados em dispositivos rápidos e dados inativos em dispositivos mais lentos. 0c. Produtos DB2 oferecidos pela IBM DB2 Universal Database Personal Edition Fornece um sistema de gerenciamento de banco de dados relacional de usuário único para seu desktop OS/2, Linux ou Windows DB2 Universal Database Workgroup Edition Um banco de dados DB2 de vários usuários para aplicativos e dados compartilhados em uma configuração de grupo de trabalho ou departamento em LAN's com base em PC DB2 Universal Database Enterprise Edition Um banco de dados DB2 de vários usuários para configurações complexas e grandes necessidades de banco de dados, desde plataformas Intel até UNIX e dos processadores únicos até os maiores SMP's. DB2 Universal Database Enterprise Extended Ed Fornece um mecanismo de alta performance para manipulação de dados complexos em configurações de servidor SMP e MPP agrupado para Windows NT**, Ambiente Operacional Solaris da Sun e AIX. DB2 Connect Personal Edition Fornece ao seu desktop OS/2, Linux ou Windows acesso transparente, por conexão direta, aos dados armazenados no DB2 em servidores S/390* ou S/400*. DB2 Connect Enterprise Edition Estende a função Connect para plataformas UNIX e estações de trabalho cliente em um grupo de trabalho, departamento ou em uma configuração de LAN. DB2 Connect Unlimited Edition É um modelo de utilização ilimitada com base nos direitos de milhões de unidades de serviço (MSU, millions of service units) por hora do DB2 Universal Database for OS/390. DB2 Personal Developer's Edition Fornece todas as ferramentas necessárias para que um desenvolvedor de software construa ferramentas e aplicativos de negócios para produtos DB2 Personal Edition. DB2 Universal Developer's Edition Fornece todas as ferramentas necessárias para que um desenvolvedor de software construa aplicativos cliente/ servidor a serem executados no DB2 Universal Database. 1. Projeto de BD-Distribuído 1a. Suporte à fragmentação O DB2 somente suporta a fragmentação horizontal, podendo ser através de Hash partitioning ou Partition maps. No Hash partitioning é utilizada uma função hash que gera para cada linha um código único, assim os dados são fragmentados de forma que a distribuição seja balanceada. No Partition maps a fragmentação é feita sobre os valores de determinadas colunas. 1b. Mecanismos de replicação A IBM fornece três produtos: DataPropagator (Produto em foco), DataJoiner ou IMS DataPropagator. O Data Propagator é uma ferramenta para dados relacionais e pode ser usado entre qualquer versão do DB2. Já o DB2 DataJoiner é pode ser usado com SGBDS de diversos fabricantes. Componentes O DB2 DataPropagator consiste em 3 principais componentes: administration interfaces, change-capture mechanisms e o Apply Program. - As interfaces de administração são usadas para criar tabelas de controle que armazenam o critério de replicação. - Após configurar o ambiente de replicação, o mecanismo de change-capture captura as alterações ocorridas nas tabelas de origens através do log, e as armazena em tabelas temporárias. - O Apply Program lê essas tabelas e aplica as modificações as tabelas de destino ou lê diretamente das tabelas de origem. Tabelas de controle São usadas para que os componentes de replicação possam se comunicar e também para gerenciar as tarefas de replicação. Servidores Lógicos Todo componente de replicação reside em um servidor lógico. Existem 3 tipos: - Source server - Contém o change-capture mechanism, as tabelas de origem que se desejam replicar, e as tabelas de controle que são usadas pelo programa de captura e pelo Apply Program. - Target server - Contém as tabelas de destino. - Control server Program. - Contém as tabelas de controle para o Apply Apply Program Inicialmente faz a leitura diretamente da tabela de origem para popular a tabela de destino. Se for desejado que as modificações sejam copiadas o Apply Program o faz lendo as modificações armazenadas nas tabelas temporárias. Geralmente roda no Target Server, mas ele pode rodar em qualquer servidor lógico. Cada Apply Program está associado a um Control Server, que contém as tabelas de controle com as definições das regras de replicação. As tabelas de controle podem ser usadas por mais de uma instância do Apply Program. Por exemplo, se você tem um Source Server e dois Targets Servers, você pode separar os Apply Programs em cada Target Server. As duas instâncias da aplicação podem compartilhar as tabelas de controle, que possuirá informações específicas para cada instância. Schedule for applying updates A sincronização pode ser síncrona, ou assíncrona. Existem três formas de sincronização assíncrona: Por tempo determinado, por evento ou por comando do administrador. Configurações de Replicação - Data distribution Nesta forma de replicação a uma única tabela origem, que é read/write, as demais tabelas destino são read-only. - Data consolidation Nesta configuração diversos servidores consolidam seus dados em uma tabela destino. Neste caso podem haver conflitos. - Update anywhere Neste caso tanto as tabelas de origem como as tabelas de destino são read/write. Neste caso podem haver conflitos. - Occasionally connected Assim como o update anywhere todas as tabelas são read/write porém você tem a flexibilidade de sincronizar de acordo com a demanda. Essa configuração é recomendada para a sincronização de dados com computadores portáteis pois não necessitam de uma conexão contínua. Resolução de conflitos A resolução padrão de conflito considera que se ocorre um conflito entre a origem e o destino, a origem ganha. É aconselhado modelar a aplicação de forma que não ocorram conflitos. Para isso é sugerido que se utilize o update anywhere nas seguintes condições: – Fragmentação por chave – Fragmentação por tempo Há a opção de ignorar os conflitos e rejeitar qualquer alteração conflitante. 2. Controle do Ambiente Distribuído 2a. Gerenciamento de View Não foram encontradas informações sobre esse tópico durante a pesquisa. 2b. Controle de Segurança Pode ser especificado o tipo de autenticação. - SERVER O login e o password são validados no servidor do DDCS. CLIENT O login e o password são validados no cliente do DDCS. DCS O login e o password são validados no “host system”. Há snapshot de tabelas com permissões e direitos dos usuários sobre os bancos que são realizados para garantir autenticação e acesso em servidores distribuídos. 2c. Controle de Integridade Não foram encontradas informações sobre esse tópico durante a pesquisa. 3. Transparência 3a. Transparência de distribuição A ferramenta DataJoiner contém a funcionalidade Distributed Database Connection Services (DDCS), que permite aos clientes de sua LAN acessar transparentemente dados armazenados em hosts como se estivesse utilizando um banco de dados centralizado. O DDCS Utiliza o padrão DRDA (Distributed Relational Database Architecture) e possui a uma interface gráfica para o controle. 3b. Transparência de replicação O DB2 suporta a transparência de Replicação. 3c. Transparência de fragmentação O DB2 suporta a transparência de Fragmentação. 4. Processamento Distribuído de Consulta 4a. Suporte ao processamento distribuído de consulta As informações dos tópicos a seguir cobrem esta parte. 4b. Tipo de otimizador de consulta utilizado A IBM vem aperfeiçoando e melhorando há 25 anos o otimizador de consulta, que é baseado em custo e em regras. O DB2 suporta OLAP e níveis múltiplos de processamento de consultas em paralelo (a granularidade da otimização caracteriza-se por suportar várias queries ao mesmo tempo). Os planos de acesso podem ser estáticos e usados diversas vezes, e também pode ser dinâmicos conforme a obtenção das estatísticas. O otimizador de consultas do DB2 estima para o calculo do custo as características do ambiente de hardware: velocidade da CPU, velocidade de I/O, banda de rede, uso e alocação de buffer e também características do dado, tamanho da tabela, o esquema de particionamento, indexes. A unidade de custo é denominada “timeron”. É uma unidade de custo abstrata, e quanto menor o valor do “timeron”, melhor e mais rápido é o resultado obtido com o plano de acesso. 4c. Mecanismos de otimização de consulta distribuída Os registros de estatísticas são produzidos quando o DB2 é inicializado, interrompido, em intervalos de tempo especificados no ZPARM, quando Performance ou Statistics traces são inicializados e quando o DB2 executa o checkpoint. Por padrão, o intervalo de tempo entre geração de estatísticas no DB2 é de 30 minutos, mas pode ser gerado manualmente com o comando “runstat”. Há algumas ferramentas para uso no DB2 que permitem visualizar detalhes do plano de acesso, como o “Explain” e até mesmo graficamente, como o “Visual Explain”. Exemplo do “Visual Explain” – Repare o custo medido em “timeron” e as opções monitoradas possíveis como “Data Joiner” e “Parallelism”. 5. Processamento Distribuído de Transação 5a. Suporte ao processamento distribuído de transação - Localmente “Transaction logging” (log de transação) é o processo utilizado pelo DB2 para registrar as modificações realizadas no banco-de-dados, no momento que são realizadas. Cada vez que uma alteração é feita a uma tupla em uma tabela, os registros que refletem a modificação são documentados para um log-buffer, que é simplesmente uma área da memória. No DB2, quando uma transação termina pela execução do COMMIT ou ROLLBACK, quando um mecanismo do sistema operacional administra a memória, ou quando o log torna-se cheio, todos os registros associados com as transações, páginas de memória ou buffer são imediatamente escritos do log na memória para logs em disco. O processo de transaction logging do DB2 garante que todos os registros de uma transação completa não serão perdidos devidos a falhas de sistemas. Dois métodos de log de transação são oferecidos junto ao DB2: Circular e Arquivamento. Cada um destes métodos oferece um nível de capacidade de restauração diferente. Tão logo o banco-de-dados esteja ativado e o log de transação ativo, o banco de dados inicia sua operação. Caso o Gerenciador do DB2 não encontre um log para usar, ele suspenderá o processamento até que um log torne-se disponível. - Distribuído O responsável por coordenar transações entre banco-de-dados múltiplos é o Transaction Manager em conjunto com o Transaction Processing (TP) Monitor. Há suporte para TP Monitor de terceiros, como é o caso do monitor de ambiente processador de transação, o TxSeries CICS. Por padrão, quando não é especificado ferramenta a parte, o Transaction Manager usa o próprio TP Monitor nativo do DB2. 5b. Protocolo de recuperação O DB2 “two-phase commit” é implementado através do DB2 Connect. Além disso, aplicações executando em servidores (por exemplo, DB2 para aplicações MVS/ESA) usando SNA pode acionar o processo “two-phase commit” envolvendo servidores e banco-de-dados DB2. A garantia de integridade centralizada junto a distribuída, somada ao protocolo Two-Phase-Commit que garante a integridade, torna o DB2 um banco distribuído altamente confiável. 6. Suporte a acesso a dados de SGBD Heterogêneo O DB2 roda em hardware IBM ou não-IBM, tais qual SUN e HP, com sistemas Unix, Windows, Linux, NUMA-Q e OS/2. Também há suporte de conectividade com sistemas de handheld Windows CE, Linux e Palm OS. Replicação e acesso de dados entre BD heterogêneos DataPropagator DataPropagator é principal produto da IBM para solução em replicação. A sua arquitetura assíncrona é baseada em três componentes principais independentes, que se comunicam por meio de tabelas de controle de replicação. Interface de administração - O DataJoiner Replication Administration tool (DJRA) é usado para definir as configurações de replicação, definir um banco-dedados para replicação, registrar tabelas de origem, entre outras funções. Mecanismo de captura de alteração - No caso do DB2 como origem da replicação, o mecanismo captura dados alterados lendo o log de transações DB2. No caso da origem da replicação não-IBM, triggers de captura emula a função de captura. Os dados alterados capturados são armazenados em tabelas dedicadas de dados alterados. Execução - O mecanismo de execução faz a leitura dos dados alterados nas tabelas dedicadas de dados alterados e executa a replicação no destino. DataPropagator possibilita replicação bidirecional (Update Anywhere), somente apenas em replicações de DB2 para DB2. Para outros banco-de-dados a replicação bidirecional não é possível com o DataPropagator. DataJoiner DataJoiner é a solução gateway que possibilita acesso transparente há bancode-dados IBM ou não-IBM, relacionais ou não-relacionais. Dados heterogêneos podem ser acessados como se fossem um banco-de-dados DB2. Usuários e aplicações de DB2 podem utilizar sintaxe SQL e API para acessar dados armazenados em origem heterogênea. Com esta funcionalidade é possível referenciar origem de dados múltiplas em uma única expressão SQL. Isso mostra que o DataJoiner além de ser usado para replicação entre sistemas heterogêneos, também pode ser usado para acesso á dados distribuídos. A solução IBM de DataPropagator e DataJoiner é uma solução complexa, porém suporta uma enorme variedade de SGBDs em praticamente todas as principais plataformas e ainda oferece uma variedade de opções de configurações. 7. Bibliografia 7a. Livros A guide to DB2 Autor: Date, C. J. – 1985 7b. Sites na Internet DB2 Product Family - Family Overview - IBM Software www.ibm.com/bd2/ DB2 Documentation http://bebi.novosoft.ru/sqllib/doc/html/db2q0/frame3.htm#db2q019 http://www.pdc.kth.se/doc/SP/manuals/db2-7.1/html/db2d0/frame3.htm#db2d010 http://www.pdc.kth.se/doc/SP/manuals/db2-7.1/html/db2d0/frame3.htm#db2d005 Pearson Techonology Group - DB2 Developer's Guide http://www.pearsonptg.com/book_detail/0,3771,0672318288,00.html DB2 Explains Itself: A Roadmap to Faster Query Runtime http://www.inquiry.com/techtips/db2_pro/10Min1101/gn1101-2.asp