Relação de Produtos

Propaganda
Bancos de Dados Distribuídos
Sybase
Alunos:
Roberto Costa Flores
Rodrigo Cunha Pinho
Sybase
 Introdução
A Sybase Corporation, fundada no ano de 1984, atua basicamente no mercado de softwares de
infra-estrutura com arquitetura aberta para ambientes coorporativo , incluindo:





Bancos de dados
Ferramentas de desenvolvimento
Integração da comunicação em ambientes cliente/servidor
Portais coorporativos
Servidores Wireless e portáteis
As soluções da Sybase para ambiente coorporativo conseguem reunir todas as plataformas
existentes e, segundo a empresa, garantir que todas elas consigam trabalhar em conjunto.
(“Everything Works Better When Everything Works Together”).
A chave é a Arquitetura aberta
O uso de da arquitetura aberta faz com que todas as plataformas possam conviver sem problemas,
preservando assim todos os invenstimentos efetuados anteriormente em infra-estrutura. Isso evita
as chamadas “armadilhas proprietárias” (situações onde a arquitetura do software ou do hardware
são fechadas, ou seja, possuem o seu funcionamento restrito à dispositivos e programas do
próprio fabricante) e aumenta a eficiência e performance das aplicações.
Esta arquitetura aberta permite que sejam integradas:








Plataformas;
Servidores de aplicação;
Componentes;
Bancos de Dados;
Aplicações;
Processos;
Corretores de texto;
Aplicações Wireless.
Divisão do mercado de DDBMS (SGBDD)
Segundo uma pesquisa realizada em 1999, o mercado de sistemas de bancos de dados
distribuídos estava dividido da seguinte forma:





IBM – 32.3%
Oracle – 29.4%
Microsoft – 10.2%
Informix – 4.4%
Sybase – 3.5%
Esta liderança na época da IBM referia-se especificamente à duas plataformas:
mainframe e AS/400. Em todas as outras plataformas, a Oracle liderava o mercado.
Relação de Produtos
Abaixo, a divisão de produtos disponíveis:
 Análise de funções de distribuição do Sybase
1. Projeto de Banco de Dados Distribuído
 Suporte à fragmentação
O Sybase resolve a questão da fragmentação através da implementação de views (não
atualizáveis), ou seja, não possui fragmentação. Os tipos de fragmentações horizontal e vertical
são suportados somente para bancos de dados centralizados (ver figura abaixo), onde são
efetuadas utilizando-se cláusulas simples de consulta ou então, para cenários mais complexos,
stored procedures.
 Mecanismos de Replicação
As funções de replicação são implementadas no Sybase através do Sybase Adaptive Server
Enterprise (ASE). O produto provê, além dos mecanismos de replicação de dados em um mesmo
banco de dados, a capacidade de acesso a mais de 25 diferentes bancos de dados corporativos.
O processo de replicação de dados no Sybase possui vários componentes. São eles:
 Replication Server – programa que mantém os dados replicados na rede local e processa as
transações de dados recebidas pelos outros sites componentes do sistema de banco de dados
(através de seus próprios replication servers). Basicamente transmite os dados (originários do
servidor primário de banco de dados) para os sites de destino, assegurando que cada um deles
terá uma cópia atualizada dos dados e, assim, garantindo a consistência do banco de dados.
Utiliza técnica Store-and-Foward para replicação dos dados. (ver abaixo)
 SQL Server (ou Data Server) – é o Sybase Data Server. Gerencia bancos de dados contendo
dados primários ou originais (primary data) ou dados replicados. Trabalha com servidores
heterogêneos, ou seja, suporta diversas plataformas. Recebe e processa as consultas em um
banco de dados e envia as respostas aos clientes requisitantes.
 Replication Agent (ou Log Transfer Manager - LTM) – componente que transfere
informações do log de transação do banco de dados para o Replication Server. Ou seja,
detecta alterações efetuadas (insert, updates ou deletions) e, após extrair a transação completa
referente à estas alterações, a transmite ao Replication Server, que irá replicá-la aos demais
sites.
 Client Application – processo ou aplicação utilizado pelo usuário, conectado ao data server.
 Replication Server Manager (RSM) – ferramenta que permite a monitoração e
administração do sistema de replicação.
 Replicated Functions – permite que chamadas de stored procedures do SQL Server sejam
replicadas assincronamente entre os bancos de dados, utilizando um objeto de replicação
denominado Function Replication Definitions. Este método pode significar um aumento de
performance se compararmos com o método normal de replicação. Isso explica-se porque os
dados alterados são encapsulados em uma simples função de sincronização, que pode
executar stored procedures que atualizam diretamente ou não os dados. Podemos ainda
replicar chamadas de stored procedures do servidor primário para o de replicação (applied
funtion) ou vice-versa (request function), através do comando sp_setrepproc.
Exemplo de um processo de replicação





O site de origem realiza uma transação de alteração (update command) no banco de dados;
O Replication Agent (ou LTM) detecta a alteração no banco de dados primário e informa ao
Replication Server (processo servidor de replicação) localizado no site primário;
O Replication Server, então, comunica as alterações à todos os sites de replicação;
Os Replication Servers de cada site destinatário recebem os dados e atualizam o LTM da
localidade;
Os dados são finalmente replicados/atualizados nos sites de destino.
Figura: Replicação de dados utilizando Replication Server
Re-sincronização (Asynchronous Store-and-Forward)
O agente de replicação do Sybase (Replication Server) possui uma função embutida de resincronização é ativada se as alterações efetuadas no banco de dados primário não for replicada
para outros sites, em virtude de indisponibilidade dos mesmos (queda da comunicação, etc).
Esta característica, denominada “Asynchronous Store-and-Forward”, garante que as
modificações efetuadas sejam armazenadas e, assim que os links de conexão entre os sites forem
reestabelecidos, sejam encaminhadas aos sites em questão.
Autonomia
O sistema de replicação utilizado pelo Sybase garante autonomia para todos os sites, provendo
total independência de dados nas operações do dia a dia. Isso porque todos eles guardam a versão
original dos dados alterados e/ou criados (tendo assim controle absoluto dos dados alterados em
sua localidade) e possuem também réplicas atualizadas dos dados atualizados nos outros sites,
mesmo que ocorra uma interrupção na comunicação entre ambos.
Alternando o Banco de dados primário
Fazendo uso da diferença de time-zone entre os sites componentes do sistema de banco de dados,
o Sybase permite que, assim que as operações no site primário sejam terminadas (final do dia),
um outro site seja eleito como site primário
Tipo de fragmento replicado
O Sybase trabalha com fragmentos de cópias. Usa a replicação baseada em transações
(Transaction-Based Replication). Isto significa que o sistema de replicação transmite apenas
transações, e não todos os dados contidos na tabela, reduzindo assim o overhead do servidor.
Desta maneira, alterações efetuadas podem ser replicadas tão logo sejam efetuadas no servidor de
origem.
Forma de replicação
O Sybase trabalha com as duas formas de replicação:


Síncrona (event-driven) - A replicação é efetuada tão logo os dados sejam alterados em seu
servidor primário (origem). Apesar de diminuir a performance, garante sempre um banco de
dados consistente para os usuários. É implementada pelo mecanismo de replicação
transacional.
Assincrona (prescheduled) – A replicação é realizada em espaços de tempo prédeterminados. É implementada no Sybase através do SQL Anywhere, que utiliza o
mecanismo de replicação por merge.
Propriedade do dado replicado
O Sybase trabalha com dados atualizados pelo site principal (primary site), ou seja, utiliza a
propriedade Master/Slave. Entretanto, todos os sites podem ser eleitos como primários, uma vez
que existem situações onde um site poderá estar fora do ar, ou fora de funcionamento (devido à,
por exemplo, procedimento de backup/restore). Por essa razão, cada site tem o seu Replication
Agent que é responsável por detectar alterações realizadas em tabelas existentes dentro do próprio
servidor local e, assim, avisar ao Replication Server para que este possa replicá-las aos demais
servidores do sistema de banco de dados. Isto, logicamente, quando o referido site for o primário
(ou primary) no momento.
Desta maneira, a possibilidade de termos dados inconsistentes é bastante reduzida, uma vez que
somente o site primário pode realizar as alterações.
Além disto, cada site pode ser considerado como primário para um conjunto diferente de dados.
Mecanismos de Replicação
O Sybase utiliza dois mecanismos principais de replicação:


Replicação Transacional – utilizada quando as informações são replicadas de modo síncrono.
Para isto, todos os servidores precisam estar conectados (nenhum dos servidores que
receberão as réplicas poderão estar inativos). O replication agent do servidor gerador das
alterações (Publisher) avisará o replication server sobre as mesmas, e este as replicará
automaticamente para os demais sites (Subscribers);
Replicação por Merge – utilizada quando o existe indisponibilidade de um ou mais
servidores. Para garantir a autonomia dos sites, os mesmos continuam a trabalhar
normalmente até que todos eles estejam ativos e disponíveis. Neste momento, os bancos são
atualizados realizando-se um merge entre as informações de todos os sites. Os sites se
alternam como banco de dados master (publisher), enquanto os outros possuem o papel de
subscriber (sincronizam-se a partir do master). Embora não seja regra, o Replication Server
fica localizado no banco de dados master, acelerando assim o merge entre os servidores.
2. Controle do Ambiente Distribuído
 Controle de Segurança
Através de seus Adaptive Servers (ASA ou ASE **), a Sybase oferece serviços de segurança que
incluem:
 Autenticação para usuários, clientes e servidores;
 Integridade dos dados;
 Criptografia dos dados;
Exemplo de mecanismo de segyrança suportado pelos Adaptive Servers: CyberSAFEKerberos
(plataforma Unix).
A figura a seguir exemplifica como uma aplicação cliente utiliza um mecanismo de segurança
para assegurar uma conexão segura com Adaptive Server.
Uma conexão segura entre clientes e servidores pode ser utilizada para:


Autenticação de logins – o cliente valida o login através do mecanismo de segurança. Este
retorna uma “credencial”, que contém relevantes informações sobre segurança. Neste
momento, o cliente envia a credencial para o Adaptive Server que a autentica utilizando
mecanismo de segurança. Se a credencial for válida, uma conexão segura é estabelecida entre
o cliente e o Adaptive Server.
Proteção de Mensagens – Utilizando o mecanismo de segurança, o cleinte prepara o pacote
de dados que será enviado ao Adaptive Server. Dependendo do tipo de serviço de segurança
que for requisitado, o mecanismo de segurança irá encriptar os dados ou criar uma assinatura
criptografada associada aos dados em questão. O cliente envia o pacote de dados ao Adaptive
Server, que utiliza o mecanismo de segurança para validá-los. Somente após isto, o Adaptive
Server iá retornar os dados da forma como foram requisitados, como por exemplo, de forma
encriptada.
Serviços de Segurança e Adaptive Server
Dependendo do tipo de mecanismo escolhido, o Adaptive Server poderá permitir que o uso dos
seguintes serviços de segurança (exemplos de sintaxe dos comandos utilizados nos dois primeiros
itens):

Confidencialidade das mensagens – dados encriptados através da rede;
sp_configure configuration_parameter, [0 | 1]

Integridade das mensagens – verifica possíveis modificações nos dados trafegados;
msg integrity reqd





Autenticação Mútua – verifica identidade do cliente e do servidor. Isto deve ser requerido
pelo cliente (não podendo ser feito pelo Adaptive Server)
Detecção de intrusos – verifica se os dados foram interceptados por indivíduos não
autorizados;
Checagem de ordem – verifica a ordem dos dados trafegados;
Checagem de mensagem original – verifica a origem da mensagem;
Procedimento de segurança remota – estabelece autenticação mútua, confidencialidade das
mensagens (com encriptação) e integridade das mensagens para procedimentos remotos de
comunicação.
Obs: Os Adaptive Server’s atuam como clientes quando conectados com um outro servidor.
Executam um procedimento de conexão remota (RPC – remote procedure call), como mostra a
figura abaixo:
Para listarmos todos os mecanismos de segurança suportados pelo Adaptive Server, devemos
executar a seguinte query: select * from syssecmechs
O resultado retornado será parecido com este:
sec_mech_name available_service
------------------------------ -------------------dce unifiedlogin
dce mutualauth
dce delegation
dce integrity
dce confidentiality
dce detectreplay
dce detectseq
Checando Permissões
A checagem das permissões de acesso no Sybase é realizada pelo SQL Server (ou Data Server),
que analisa se o usuário requisitante (da query) possui as permissões necessárias para acessar o(s)
objeto(s) referenciado(s). Caso o usuário não possua permissão, um erro é gerado e o
processamento da query é interrompido.
Privilégios de Objetos de Bancos de Dados
O usuário que cria um objeto de banco de dados (tabela, view ou stored procedure) tem
automaticamente a propriedade sobre os mesmos e, consequentemente, todas as permissões de
acesso garantidas sobre eles.
Em contra-partida, todos os outros usuários (inclusive o administrador do banco de dados) ficam
automaticamente sem permissões sobre estes objetos. Somente as terão quando forem autorizados
pelo proprietário do objeto ou algum outro que já tenha sido autorizado pelo mesmo.
As seguintes permissões de criação de objetos (por padrão) são dadas ao proprietário e não
podem ser transferidas para outros usuários:
alter table; drop table; create index; create trigger; truncate table; update statistics
Já as permissões abaixo podem ser dadas e revogadas à outros usuários:
select, insert, update, delete, references, and execute
Concedendo e revogando permissões de acesso à objetos de Banco de Dados
Existem dois tipos de permissões para objetos de banco de dados:
• Permissões de acesso à objetos – para utilizar comandos de acesso aos objetos.
• Permissões de criação de objetos – para criação de objetos. Só podem ser concedidos pelo
administrador do sistema ou pelo proprietário do banco de dados.
Exemplos de sintaxe para permissões de acesso (grant command):
grant {all [privileges]| permission_list}
on { table_name [( column_list)]
| view_name[( column_list)]
| stored_procedure_name}
to {public | name_list | role_name}
[with grant option]
revoke [grant option for]
{all [privileges] | permission_list}
on { table_name [( column_list)]
| view_name [( column_list)]
| stored_procedure_name}
from {public | name_list | role_name}
[cascade]
Verificação de permissões concedidas
Para determinar as permissões de acesso de um determinado usuário à um determinado objeto,
executamos o seguinte comando: (no exemplo, verificamos as permissões do usuário Judy ao
objeto titles)
sp_helprotect titles, judy
grantor grantee type action object column grantable
------- ------ ----- ------ ------ ------ ------dbo judy Grant Select titles All
FALSE
dbo judy Grant Update titles advance
FALSE
dbo judy Grant Update titles notes
FALSE
dbo judy Grant Update titles price
FALSE
dbo judy Grant Update titles pub_id
FALSE
dbo judy Grant Update titles pubdate
FALSE
dbo judy Grant Update titles title
FALSE
dbo judy Grant Update titles title_id
FALSE
dbo judy Grant Update titles total_salesFALSE
dbo judy Grant Update titles type
FALSE
Obs: A coluna grantable indica que o usuário não pode conceder nenhuma permissão de acesso à
estes objetos para nenhum usuário (opção FALSE).
Tipos de usuários e suas permissões
O sistema de acesso do Adaptive Server reconhece os seguintes tipos de usuários:
• System Administrators – Lida com tarefas que não são específicas das aplicações. Único que
possui permissão de criar novos bancos de dados.
• System Security Officers – Executa tarefas relacionadas à segurança, incluindo administração
do sistema de auditoria, administração de logins e senhas, segurança de rede, etc. Pode acessar
qualquer banco de dados para habilitar a auditoria.
• Operators – Pode realizar operações de backup e restore dos bancos, sem precisar ser o
proprietário do mesmo.
• Database Owners – Juntamente com o System Admnistrators, podem conceder permissões de
criação de objetos para outros usuários.
• Database object owners – Proprietários (criadores) dos objetos existentes no banco de dados.
• Other users (also known as “public”) – No final da cadeia, estes usuários precisam ter direitos
concedidos por outros usuários hierarquicamente superiores.
Tipos de objetos existentes em um banco de dados







Tabelas
Tipos de Dados
Regras
Stored Procedures
Triggers
Views
Indices
 Controle de Integridade
A integridade transacional dos dados é garantida através do uso do Replication Server.
Diferentemente de uso de trigger ou de snapshots (que não assegura integridade dos dados, uma
vez que trabalha com cópias individuais de tabelas, não garantindo as propriedades ACID), o
Replication Server transfere as transações, e não grupos de tuplas ou colunas alteradas pelas
mesmas. Com isso, garante a entrega de informações sempre consistentes.
Características do Sybase para garantir a proteção da integridade dos dados e das
transações






A replicação da transação mantém a integridade transacional de todas as informações
distribuídas
Sites primários (de onde as informações são distribuídas) mantém o controle total sobre os
dados tranmitidos
Dados são enviados para os servidores locais
Replication Server interage com diferentes bancos de dados, utilizando Replication Agents e
EnterpriseConnect Data Access para integrar todos os bancos de todos os fornecedores.
Realocação dos dados é transparente para o usuário
Dados são acessados localmente, garantindo assim a transparência para os usuários.
No Sybase, temos a implementação de controle de integridade de chaves primárias através do
Adaptive Server, que é o responsável pela inclusão dos registros.
3. Suporte a acesso a dados de SGBD Heterogêneo
O acesso a banco de dados heterogêneos é garantido no Sybase através do OmniConnect, um dos
produtos “middleware” da empresa (outros exemplos de produtos “middleware” da Sybase são o
próprio Replication Server e o Open Server)
O OmniConnect garante independência de plataforma, permitindo que os usuários acessem dados
de bancos de outros fabricantes. Além disso, permite que eles trabalhem com estes dados dentro
do próprio Sybase.
O OmniConnect permite que os usuários construam aplicações que acessem dados residindo em
diferentes plataformas de bancos de dados. Isso resolve o problema da interoperabilidade.
Um outro produto disponibilizado pela Sybase com as mesmas funções do OmniConnect é o
DirectCONNECT.
O DirectCONNECT Anywhere foi desenhado para trabalhar com vários tipos de drivers ODBC,
conseguindo assim comunicar-se com distintos bancos de dados. Podemos conectar qualquer
aplicação cliente com qualquer DirectConnect (com exceção do DirectConnect para Oracle)
usando o Sybase 3.01 DirectConnect ODBC driver. Criado pela Intersolv (agora chamada de
Merant), este diver é provido pela Sybase juntamente com o DirectConnect.
Como qualquer driver ODBC pertencente ao ASE (Adaptive Server Enterprise), este driver
também funciona com o protocolo Sybase Open Client. Para isto, as versões 10 ou 11 do Open
Client devem ser instaladas na mesma máquina do DirectConnect.
Outro produto da Sybase que garante acesso de escrita e leitura, em tempo real, à bancos de dados
de outros fabricantes é o Enterprise Data Studio.
OmniConnect conecta bancos de dados de vários fabricantes
O OmniConnect também provê, entre outras coisas, integridade referencial através de bancos de
dados heterogêneos.
OmniConnect, juntamente com o EnterpriseConnect, provê acesso transparente a vários bancos
de dados, incluindo:









Oracle
Ingres
Informix
Rdb
IBM databases:
o DB2 for MVS
o DB2/400
o DB2/2
o DB2 for VM (SQL/DS)
Microsoft SQL Server
Adaptive Server Enterprise
SQL Anywhere(TM)
Mainframe data:
o ADABAS
o IDMS
o IMS
o VSAM
O Sybase utiliza ainda a tecnologia de “gateways” para acesso à outras plataformas, como por
exemplo o Mainframe.
Configurando o ODBC DNS (Data Source Name)
Data Source Name – Nome arbitrário para o DirectConnect ODBC DSN. Campo
obrigatório.
Description – Opcional. Descrição do ODBC DSN.
Server Name – Nome do servidor para o DirectConnect, como está definido para o
Open Client (no arquivo SQL.INI). É um campo obrigatório.
Database Name – Nome do banco de dados que queremos conectar. (na figura, está
em branco). É um campo opcional.
Abaixo, um exemplo de como o Sybase, através do DirectCONNECT, se conecta com outros
bancos de dados:

DirectConnect for Informix
Data Source Name – Nome definido para o Informix ODBC DSN. Este nome será
configurado também no campo Connection Spec 1, na configuração do
DirectConnect for Informix.
Host Name – Nome da máquina onde o banco Informix está instalado.
Server Name – Nome do servidor Informix.
Database Name – O nome do banco de dados Informix que queremos nos conectar,
utilizando o ODBC DSN.
4. Transparência
 Transparência de Distribuição
A transparência é uma outra propriedade que, no Sybase, também é garantida pelo produto
OmniConnect, que mantém um catálogo global dos objetos existentes no banco de dados
contendo o mapeamento físico dos mesmos. Os usuários, ao acessarem este catálogo global,
enxergam todos os dados como se estivessem contidos em uma única localidade. Isto permite que
o OmniConnect tenha acesso aos dados mantendo a atual localização dos mesmos transparente
para os usuários. É a chamada transparência de distribuição.
Com isso, não é necessário que os usuários coloquem na consulta, por exemplo, o nome do
servidor onde o objeto está localizado.
Funções adicionais: amplo acesso corporativo e transparência de idiomas
Essa transparência de distribuição fornecida pelo OmniConnect auxilia o desenvolvimento de
aplicações e o suporte ao acesso corporativo. Além de tornar os dados disponíveis para qualquer
usuário (em qualquer momento), permite que as aplicações sejam desenvolvidas
independentemente de onde estejam armazenadas fisicamente.
O OmniConnect provê também transparência de idioma e de procedimentos armazenados (stored
procedures). Isto reduz custos com treinamento para desenvolvedores e usuários, uma vez que a
única linguagem que os mesmos devem conhecer é o T-SQL. Esta é linguagem é traduzida pelo
OmniConnect, que também converte os dados para serem “entendidos” pelo ambiente do Sybase.
Toda essa tradução de parâmetros ocorre de forma transparente para o usuário.
 Transparência de Replicação
A transparência de replicação para os usuários é garantida também pela utilização do Replication
Server. Se o usuário estará trabalhando com, por exemplo, uma determinada tabela, não estará
preocupado se a mesma é uma réplica ou não. Quem estará tratando isto será o Replication Server
da localidade, em conjunto com o Replication Server do site primário.
Um outro produto que também implementa a transparência de replicação no Sybase, mais focado
para usuários móveis (mobile users) é o SQL Anywhere Studio.
 Transparência de Fragmentação
O Sybase não implementa transparência de fragmentação.
5. Processamento Distribuído de Consulta
 Suporte ao processamento distribuído de consulta
O Sybase implementa o processamento distribuído de consulta através do CIS (Component
Integration Services). Trata-se da camada do software que extende o conceito dos Adaptive
Servers aos dados externos. Esta “camada” é utilizada pelo OmniConnect e pelo ASE (Adaptive
Server Enterprise) para prover métodos de acesso às tabelas localizadas em outros sites. Além
disso, provê a transformação da sintaxe SQL (portanto, a interação com o servidor remoto de
dados será efetuado utilizando a linguagem nativa – álgebra relacional).
Como a performance é um a principal preocupação da maioria dos usuários de bancos de dados
distribuídos, o CIS direciona esta preocupação focando-se em dois aspectos principais do
processamento distribuído de consultas:
a. Decomposição da consulta
Processo de análise de uma simples consulta SQL (depois de verificar a existência de erros –
“Parsing”) para determinar a quantidade máxima de processamento que poderá ser efetuada por
um servidor remoto.
Por exemplo, se a cláusula order de uma consulta não puder ser efetuada por um servidor remoto,
o resultado da ordenação terá que ser feito localmente. Irá gerar mais trabalho, pois os resultados
terão que ser armazenados em uma tabela local, armazenados e, somente após isto, apresentados
ao usuário requisitante da consulta.
Estes aspectos são tratados pelos mecanismos de otimização global do CIS, que é extendido ao
otimizador local de consultas do Adaptive Server Enterprise (ASE), para incluir informações
sobre dados remotos.
Para isso, CIS avalia as “árvores de consultas” em dois estágios na fase de otimização do
processamento:
I. Pré-otimização – ocorre antes de o otimizador de consultas ser chamado para analisar as
várias mudanças representadas pela consulta;
II. Pós-otimização – ocorre após a otimização, mas antes da geração e execução do plano de
acesso. Determina a quantidade de processamento que será efetuada por um servidor
remoto e pelo servidor local (site que emite a consulta).
b. Otimizador de consulta
Quando existem transações distribuídas implícitas na sintaxe da consulta, os principais objetivos
do otimizador é:


Determinar custo de acesso para cada servidor remoto;
Determinar estratégia de junção.
Estatísticas de distribuição de tabelas remotas
Sem termos informações sobre custos de acesso à tabelas remotas, é imposível selecionar uma
estratégia ótima de consulta. Por isso, temos que obter estatísticas de distribuição. Isto é feito pelo
Adaptive Server (e OmniConnect) através do comando update statistics.
Se o objeto estiver em uma tabela remota, os dados associados (com os indices) são requisitados e
processados localmente, como se fossem originados de indices locais. O histograma de
distribuição resultante é armazenado no catálogo local para posterior uso pelo otimizador de
consultas.
Outras considerações


Eficientes execuções de consultas distibuídas devem requere que as tabelas remotas sejam
acessadas apenas durante o tempo de processamento da consulta
Em muitos casos, otimizações locais em um site remoto são efetuadas juntando várias tabelas
(deste mesmo site) e realizando-se uma subconsulta remotamente. Somente o resultado desta
subconsulta é transmitido pela rede.
 Tipo de otimizador de consulta utilizado e mecanismos de otimização de consulta
distribuída
A otimização de consulta no Sybase também é implementada através do Adaptive Server. O tipo
de otimizador implementado no Sybase é baseado em custos, o que significa que ele se baseia
em estatísticas mantidas pelo servidor para escolher o melhor caminho de acesso para a realização
da consulta.
As estatísticas são um atributo das colunas, e não indices. São agora estatísticas baseadas em
colunas. Com isso, podemos ter estatísticas para qualquer coluna da tabela. Com isso, temos
como definir quais serão as colunas que estarão participando de um indice e, com isso, otimizar o
tempo de pesquisa.
Considerando o exemplo abaixo, como um indice composto em (country e population) e sem
estatísticas para a coluna população.
select * from cities
where country = "UK"
and population > 10000000
Antes da versão 11.9.2 do Sybase, o Adaptive Servers usuaria heurística para estimar o plano de
acesso, na falta de dados de distribuição para a coluna população. Isso poderia causar um plano
ruim de acesso. Este limitante foi resolvido, pois agora toda coluna pode ter suas estatísticas
próprias.
Outra funcionalidade do otimizador de consultas no Sybase é o Cluster Ratios, que provê uma
uma medida mais realística do agrupamento das informações (clustering), permitindo que o
otimizador faça uma melhor estimativa de I/O que será necessário para a realização da consulta.
Uma outra ferramenta é o OPTDIAG, que visualiza, escreve e simula estatísticas armazenadas
nas tabelas de sistema (system tables). Provê uma consistente interface para o usuário em relação
à otimização de consultas. Mostra para o usuário as seguintes opções:





Resumo das informações da tabela, como número de linhas (por exemplo);
Estatísticas de indices, incluindo por exemplo o número de “folhas”;
Custer Ratios de linhas é páginas;
Informações sobre as colunas das tabelas, incluindo histrograma de dados, últimas estatísticas
atualizadas e densidade;
Seleção de desnsidade de default (valores heurísticos)
O OPTDIAG implementa também simulações de estatísticas nas tabelas de sistema. Além disto,
ignora custo quanto ao tráfego de rede e realiza otimização global e local.
Portanto, o Sybase utiliza o otimizador de consultas baseado em custos, apesar de suportar o tipo
baseado em heurísticas. Utiliza também mecanismos de otimização local e global (para sites
remotos).
6. Processamento Distribuído de Transação
 Suporte ao processamento distribuído de transação
O protocolo 2PC habilita que aplicações cliente coordenem transacões através de dois ou mais
Adaptive Servers e as trate como se fosse transações locais. Garante também que todos ou
nenhum dos bancos de dados participantes dos Adaptive Servers sejam atualizados
O Sybase utiliza transações denominadas SYB2PC, ou seja, transações que utilizam o protocolo
Two-Phase Commit para asegurar que as transações serão comitadas ou desfeitas (rollback),
como se estivéssemos tratando apenas de uma unidade lógica.
Assim como quase todos os mecanismos do Sybase, as transações SYB2PC são implementadas
pelo Adaptive Server.
Transações de prepare que são coordenadas pelo protocolo SYB2PC são efetuadas ou desfeitas
dependendo do status de commit da transação master. Durante a recuperação, o Adaptive Server
inicia um contato com o serviço de commit para determinar o status de commit da transação
master (principal) e, de acordo com isso, commita ou desfaz a transação de prepare. Se o
Adaptive Server não conseguir comunicação com este serviço de commit, ele espera um
determinado tempo t e, caso não obtenha retorno, desfaz a transação.
O Adaptive Server não tem procedimentos de recuperação de outros bancos de dados no sistema
de banco de dados.
Completando transações heuristicamente
O Adaptive Server inclui comandos como dbcc complete_xact para facilitar a complementação
heurística das transações. O comando resolve uma transação, commitando ou desfazendo-a,
liberando assim os recursos utilizados pela transação.
Este mecanismo deve ser utilizado com precauções, uma vez que pode causar resultados
inconsistentes para uma consulta distribuída, pois pode ir de encontro à decisão tomada pelo
Adaptive Server coordenador ou pelo protocolo de transação utilizado.
 Protocolo de recuperação (recovery)
Durante um “crash recovery” a Adaptive Server deverá solucionar transações que estiverem no
estado de prepare. O método utilizado para transações de prepare depende do método de
coordenação ou do protocolo de coordenação utilizado para gerenciar transações distribuídas:

Transações coordenadas com MSDTC
Durante a recuperação, o Adaptive Server inicializa contato com o MSDTC para determinar o
status de commit da transação master e, com isso, resolver se commita ou desfaz a transação de
prepare. Se não conseguir contato com o MSDTC, o procedimento de recuperação espera até que
o contato seja reestabelecido. Outros procedimentos de recuperação não são efetuados até que
esta comunicação seja reestabelecida.

Transações coordenadas pelo Adaptive Server
O servidor local espera até que o Adaptive Server coordenador faça contato e indique que a
transação de prepare deve ser commitada ou desfeita. Para acelerar o processo, o Adaptive Server
recupera cada uma das transações no estado em que estavam antes da ocorrência da falha.
Utilizando este método, o servidor pode deixar o banco online mesmo quando o Adaptive Server
coordenador ainda não tiver resolvido o que fazer com a transação de prepare.

Transações coordenadas pelo SYB2PC
Transações de prepare que são coordenadas pelo protocolo SYB2PC são efetuadas ou desfeitas
dependendo do status de commit da transação master. Durante a recuperação, o Adaptive Server
inicia um contato com o serviço de commit para determinar o status de commit da transação
master (principal) e, de acordo com isso, commita ou desfaz a transação de prepare. Se o
Adaptive Server não conseguir comunicação com este serviço de commit, ele espera um
determinado tempo t e, caso não obtenha retorno, desfaz a transação. O banco de dados não fica
online durante este procedimento de recuperação.
 Controle de concorrência
Gerenciamento das transações
O Replication Server depende dos servidores de dados para provêr os serviços de transação que
irão proteger os dados distribuídos. No Sybase, estes servidores que armazenam os dados
primários provêem todo o controle de concorrência necessário para um sistema de banco de dados
distribuídos. Se uma transação falha para, por exemplo, atualizar uma tabela com os dados
primários, o Replication Server não distribui as transações para outros sites. Os dados somente
são atualizados quando nenhuma falha ocorre nas transações.
O Replication Server utiliza controle de concorrência otimizado para manter a consistência dos
dados replicados. Este método possui algumas vantagens em um sistema de replicação:


Promove alta disponibilidade dos dados, porque não trava os mesmos durante a transação
distribuída
Requer menos recursos de sistema para processar uma transação
Transações Replicadas Falhadas
A modificação do dado pode falhar na atualização da cópia replicada do dado em outro site. A
primeira versão é “a cópia oficial”, e as atualizações que forem realizadas no primeiro BD são
replicadas nos sites que possuem cópias dos dados.
Algumas rasões para a possível falha na tabela replicada são:
Usuário acessando o banco com um login sem permissão para atualizar a tabela replicada
A tabela principal e a replicada estão inconsistentes após o recovery do sistema
Atualização do dado direto na réplica da tabela
Entre outras...
Quando uma transação falha, o servidor de réplicas recebe um ERRO do servidor com erro. Os
erros dos servidore\s de dados são mapeados para que uma ação possa ser disparada no intuito de
corrigir o erro. O padrão no caso de falha na transação, é escrever uma mensagem no log do
servidor e posteriormente suspender a conecção. Após a causa da falha ser consertada, você pode
reestabelecer a conecção e o servidor replicado irá tentar executar a transação e continuar
executando a próxima transação.
O processo de resolução do problema na transação pode ser feito manualmente ou então
automaticamente encapsulando-se a logica para efetuar a transação rejeitada em um programa de
aplicação.
Transações que modificam os dados em diversos servidores de dados e banco de dados
Uma transação que modifique o dado em mais de um servidor pode requerer um maior controle
de concorrência.
De acordo com a propriedade de atomicidade de uma transação, se um servidor onde está o dado
falhar em uma atualização por exemplo, todos os outros servidores que possuirem esse dado
devem ter a capacidade de aplicar o “rollback”.
Há exatamente um Replication Agent para cada banco de dados primário. Se uma transação
simples atualiza diversos bancos primários, a transação é replicada em multiplas transações,
sendo uma para cada banco de dados primário. Você pode também escolher por encapsular a
transação em uma simples stored procedure que funciona como uma unidade atômica para
subescrever os diversos sites.
Bibliografia:




Gorelik, Y. Wang, and M. Deppe. Sybase Replication Server. Proceedings 1994
ACM SIGMOD Conference , Minneapolis, Minnesota, May 1994, page 469.
Flexible Update Propagation for Weakly Consistent Replication
Karin Petersen, Mike J. Spreitzer, Douglas B. Terry, Marvin M. Theimer, and
Alan J. Demers (*)
Computer Science Laboratory - Xerox Palo Alto Reasearch Center - Palo Alto,
California 94394 U.S.A
Universidade da California
www.sybase.com
Download