O Uso Do Xml Na Integração De Banco De Dados Relacionais
Por Eduardo Feltrin | 19/11/2007 | TecnologiaEduardo Feltrin Marques
Aglaê Pereira Zaupa
Universidade do Oeste Paulista
(UNOESTE)- FIPP (Faculdade de Informática de Presidente Prudente)
feltrin@fipp.unoeste.br
aglae@unoeste.br
ABSTRACT. The need for data
exchange arising from different sources see growing respect, just by the large
traffic of information that is generated both in conventional systems such as
web. These data, usually generated by people, are written in several ways, and
that in some cases, a single object of the real world can be represented in
different ways. The objective of the integration of data is to allow the access
integrated to several heterogeneous and independent sources of information,
through a global vision.
With
the specification of standard XML, it started to be used for exchange of data
as it is able to add to its contents that describe information (metadata), thus
enabling the representation of data that could not be represented by the model
relational used by most DBMSs. With the XML standard then it is possible to
create material views of the data stored on a local SQL and use this vision for
the most varied purposes, so the XML (eXtensible Markup Language) has been
characterized as a pattern of exchange and integration of data so that, the
systems integration of data are used as a common model.
This article aims to show how to use the XML standard to integrate
Relational Database
RESUMO. A necessidade da troca de dados advindos de diferentes fontes vêem crescendo relativamente, justamente pelo grande tráfego de informação que é gerado tanto em sistemas convencionais como web. Tais dados, usualmente gerados por pessoas, são escritos de várias maneiras, sendo que, em alguns casos, um mesmo objeto do mundo real pode ser representado de várias formas. O objetivo da integração de dados é permitir o acesso integrado a várias fontes de informação heterogêneas e independentes, através de uma visão global.
Com a especificação do padrão XML, o mesmo passou a ser utilizado para intercâmbio de dados, uma vez que é capaz de agregar a seu conteúdo informações que o descrevem(metadados), possibilitando assim a representação de dados que não poderiam ser representadas através do modelo relacional utilizado pela maioria dos SGBDs. Com o padrão XML é possível então a criação de visões materializadas dos dados armazenados em um SGBD local e utilizar esta visão para os mais variados fins, por isso o XML (eXtensible Markup Language) vem se caracterizando como um padrão de troca e integração de dados, de forma que, os sistemas de integração de dados a têm utilizado como modelo comum.
Este artigo visa mostrar como se pode utilizar o padrão XML na integração de Dados de Bancos Relacionais
Palavras-Chave: XML, Banco de Dados, Integração
1- INTRODUÇÃO
A XML (eXtensible Markup Language, ou Linguagem Extensível de Marcação) foi criada em 1996, por especialistas do World Wide Web Consortium (W3C), órgão de regulamentação dos padrões utilizados na internet. Ela fornece um formato estruturado para descrição de dados e foi criada como um subconjunto simplificado do padrão SGML (Standard Generalized Markup Language, ou Linguagem Padrão de Marcação Generalizada).
Características de flexibilidade e portabilidade vêm fazendo com que, nos últimos anos, a XML seja aceita como um padrão para representação, intercâmbio e manipulação de dados em aplicações para as mais diversas áreas de negócios. Representação de dados em aplicações de gerenciamento de conteúdo, aplicações de transações bancárias e de publicação de conteúdo em intranets são alguns exemplos de uso da XML.
O crescimento na utilização da XML levou a um aumento significativo no volume de dados nesse formato que são armazenados, transportados e recuperados por aplicações no mundo todo. Um exemplo que ilustra essa nova demanda é a troca de dados entre dois sistemas de bancos de dados diferentes, usando documentos XML para o intercâmbio dos dados.
Essa nova realidade faz surgir novos questionamentos a respeito de onde e como armazenar esses dados, e qual a melhor maneira de integrar as tecnologias já existentes de sistemas de bancos de dados (principalmente no modelo relacional) com a XML. Também surgiram novas tecnologias para armazenamento de XML a serem consideradas, como os bancos de dados nativos de XML.
Esse trabalho de pesquisa apresenta um panorama das formas mais adotadas atualmente para a integração de dados de diversas bases relacionais em um mesmo local no formato XML.
O capítulo 2 traz um breve histórico da XML, a definição do que é a XML, e expõe alguns conceitos básicos sobre ela.
O capítulo 3 mostra algumas técnicas de integração de dados de diversas bases relacionais em um documento XML..
2- XML
O XML é uma linguagem derivada da SGML e foi idealizada por Jon Bosak, engenheiro da Sun Microsystems. O autor era conhecedor e usuário de SGML e apresentou ao W3Consortium, sua idéia de explorar o SGML em aplicações voltadas para internet. Em 1996 foi criado o XML, inicialmente como uma versão simplificada da SGML e em fevereiro de 1998, o XML tornou-se uma especificação formal, reconhecida pela W3C.
Segundo a W3 Consortium, dados semi-estruturados são dados dispostos em representações rígidas, sujeitas a regras e a restrições impostas pelo esquema que os criou. Programas que produzem tais dados os armazenam em disco, para que possam ser utilizados em formato binário ou texto.
Os dados semi-estruturados representam hoje um componente importante de ambientes heterogêneos como a internet e o padrão XML, por permitir a criação de uma marcação flexível, aceita bem variações na estrutura características desse tipo de dado.
Tabela 1 – Exemplo de um texto livre e o seu correspondente XML
Alunos |
<?xml version= “1.0”?> |
Eduardo Feltrin Marques |
<alunos> |
Rua Prudente, 100 |
<entrada> |
São Paulo – SP 01000-000 |
<nome>Eduardo Feltrin Marques</nome> |
Brasil |
<endereço> |
18 3100-0000 (preferido) |
<rua>Rua Prudente,100</rua> |
18 3200-0000 |
<cidade>São Paulo</cidade> |
< estado>SP</estado> |
|
Jose Almeida |
<cep>01000-000</cep> |
<pais>Brasil</pais> |
|
|
</endereço> |
|
<telefone preferido=”true”>18 3100-000</telefone> |
|
<telefone>18 3200-0000</telefone> |
|
<email>eduardo@bits.com.br</email> |
|
</entrada> |
|
<entrada> |
|
<nome><prim>Jose</prim></nome> |
|
<sobren>Almeida</sobren> |
|
<email>jalmeida@fipp.unoeste.br</email> |
|
</entrada> |
|
</alunos> |
2.1 - Documentos XML
Um documento XML é um texto (em formato Unicode) com tags de marcação (markup tags) e outras informações. Os documentos XML são sensíveis à letras maiúsculas e minúsculas. Um documento XML é bem formatado quando segue algumas regras básicas. Tais regras são mais simples do que para documentos HTML e permitem que os dados sejam lidos e expostos sem nenhuma descrição externa ou conhecimento do sentido dos dados XML. Documentos bem estruturados:
- tem casamentos das tags de início e fim
- · as tags de elemento tem que ser apropriadamente posicionadas
Existem 6 tipos de itens de marcação que podem ocorrer no XML:
- Elementos
- Referências a entidades
- Comentários
- Instruções de processamento
- Seções marcadas
- Tipos de documentos
Elementos : São a mais comum forma de marcação. Delimitados pelos sinais de menor e maior, a maioria dos elementos identificam a natureza do conteúdo que envolvem, alguns elementos podem ser vazios, neste caso eles não têm conteúdo.
Referências a Entidades: A fim de introduzir a marcação em um
documento, alguns documentos foram reservados para identificar o início da
marcação. O sinal de menor, < por exemplo, identifica o início de uma marca
de inicio ou término. Em XML, entidades são usadas para representar estes
caracteres especiais. As entidades também são usadas para referenciar um texto
freqüentemente repetido ou alterado e incluí-lo no conteúdo de arquivos
externos. Cada entidade deve ter um nome único.
Comentários: Comentários iniciam com <!-- e terminam com
-->. Os comentários podem conter qualquer dado, exceto a literal
"--". Você pode colocar comentários entre marcas em qualquer lugar em
seu documento. Comentários não fazem parte de um conteúdo textual de um
documento XML. Um processador XML não é preciso para reconhecê-los na
aplicação.
Instruções de Processamento: Instruções de processamento (PIs)
são formas de fornecer informações a uma aplicação. Assim como os comentários,
elas não são textualmente parte de um documento XML, mas o processador XML é
necessário para reconhecê-las na aplicação.
Seções Marcadas: Em um documento, uma seção CDATA instrui o
analisador para ignorar a maioria dos caracteres de marcação. Considere um
código-fonte em um documento XML. Ele pode conter caracteres que o analisador
XML iria normalmente reconhecer como marcação (< e &, por exemplo). Para
prevenir isto, uma seção CDATA pode ser usada.
2.1.1 - Documentos Bem-formados
São documentos que atendem à sintaxe XML usada dentro do documento. Por exemplo, em casos de não incluir marcas de fechamento ao inserir elementos no documento, esquecer de incluir a declaração de documento XML no início do documento, se incluir caracteres que não possam ser analisados sintaticamente ou sejam inválidos, você não possuirá um documento XML bem-formado.
Documentos bem-formados são na realidade, mais do que simples documentos que seguem a sintaxe XML. Além disso, os considerados bem-formados devem atender às seguintes condições:
- Nenhum atributo pode aparecer mais do que uma vez em uma única marca de início;
- Não pode incluir referências a entidades externas em um atributo de string;
- Deve-se declarar todas as entidades exceto aquelas incluídas como parte da linguagem XML;
- Não pode se referir a uma entidade binária no corpo do conteúdo;
- Não pode criar entidades de texto ou de parâmetros recursivas seja direta, seja indiretamente;
- As entidades paramétricas devem ser declaradas antes para que se possam usá-las em um documento;
- Quaisquer marcas não - vazias devem ser aninhadas adequadamente;
- O nome na marca de fim de um elemento deve coincidir com o tipo de elemento da marca de início;
- Não podemos incluir um (<) no texto substitutivo de qualquer entidade;
2.1.2 - Documentos Válidos
Um documento bem-formado não é válido a menos que ele contenha uma DTD apropriada. O documento também precisa obedecer as restrições dessa declaração.
Cada documento XML válido deve iniciar com um cabeçalho que deve conter as seguintes informações:
- Uma descrição das regras estruturais que o documento deve seguir;
- Uma lista de recursos externos ou entidades externas que criem qualquer para específica do documento;
- Quaisquer declarações dos recursos internos ou entidades internas;
- Quaisquer notações ou recursos não-XML que devem ser enumerados no documento;
- Listas de qualquer recurso não-XML que possam ser encontradas no documento.
2.2 – Linguagens de definição de esquemas
Algumas abordagens para definição de estruturas para documentos XML bastante conhecidas são DTD (Document Type Definition) e XML Schema.
2.2.1 – DTD
Comumente, atribui-se à uma DTD a responsabilidade do uso de uma linguagem oficial para delimitar a estrutura e os possíveis valores nos documentos XML. Basicamente uma DTD define um vocabulário comum que documentos xml referenciados devem obedecer.
As regras a serem especificadas em uma DTD devem iniciar sempre com os símbolos <! (menor e exclamação) seguido de um marcador básico obrigatoriamente escrito com letra maiúscula e terminado com um sinal de maior. Uma DTD pode ser definida como um mecanismo de descrição de objetos (elementos, atributos, etc.) que podem aparecer no documento, normalmente iniciado com elementos. A declaração de um elemento é iniciada com a marcação básica ELEMENT, já um atributo será com a marcação ATTLIST. Após o marcador básico deve aparecer o nome do elemento ou atributo seguido por uma palavra-chave especial que define qual é o tipo de dado do elemento/atributo ou por um modelo de conteúdo (tipos e filhos do elemento). Toda declaração de elemento termina com um sinal de maior.
Uma DTD também permite a delimitação da ordem em que os elementos deverão ser apresentados no documento XML. São dois os delimitadores disponibilizados pela sintaxe da DTD. O primeiro é “,” que se comporta como o operador and das linguagens de programação, onde os elementos devem aparecer no documento XML na mesma ordem que são declarados na DTD. O segundo delimitador é “|”, se assemelham ao operador or das linguagens de programação, e que significa o elemento/atributo é composto e que ou um ou outro elemento podem formar o conteúdo deste elemento/atributo composto.
2.2.2 – XML Schema
Um esquema XSD (XML Schema Definition) define estruturas XML declarando elementos, sua ordem, restrições de conteúdo, atributos, grupos reusáveis, novos tipos de dados, enfim declarando tudo que for necessário para estabelecer o que uma instância de um documento XML, em conformidade com este esquema pode, ou deve ter [Mau05].
XML Schema foi criado pela Microsoft, mas atualmente é uma recomendação da W3C e provavelmente irá substituir a DTD porque são mais fáceis de aprender, são extensíveis a futuras adições, suportam tipos de dados, são escritos em XML e suportam os namespaces [Mat02].
Existem dois tipos básicos de elementos em XML Schema: elementos simples (simpleType) e elementos complexos (complexType), a diferença entre eles é que os tipos complexos permitem elementos em seu conteúdo e podem carregar atributos[Mat02].
Simples é um tipo básico que pode armazenar uma unidade de informação de um determinado tipo que pode ser: string, float, date, double, timeDurations, etc.
Complexo é um tipo que define a estrutura de um elemento, características dos sub-elementos, atributos, cardinalidade dos sub-elementos e obrigatoriedade dos atributos.
3- INTEGRAÇÃO DE DADOS
Um dos principais requisitos para a integração de sistemas de informações é a existência de um mecanismo que possa mediar e compatibilizar a troca de informações entre sistemas que utilizam diferentes formas de representações. As novas tecnologias associadas a linguagem Extensible Markup Language (XML) possibilitam o desenvolvimento de estruturas de mediação que atendem a este requisito. Integrar diversas fontes heterogêneas de dados é um desafio que a anos vem fomentando pesquisas e surgimento de novos padrões a fim de tornar transparente o acesso a estas fontes para os usuários e desenvolvedores de aplicações [Fer02].
Este artigo tem a finalidade de mostrar uma técnica usada para integrar diversas bases de dados relacionais em uma única base XML.
Para realizar tal operação é necessária a utilização de uma técnica apropriada que faça essa integração de dados de tal forma que não seja perdida ou deixada de lado nenhuma informação relevante contida em qualquer uma das bases de dados que serão integradas.
3.1 – CASAMENTO DE ESQUEMAS
A tarefa de casar esquemas, independentemente da técnica utilizada, pode ser vista como uma generalização de uma operação fundamental, chamada casamento (Match). Essa operação recebe como argumentos dois esquemas e produz um conjunto de casamentos entre elementos desses esquemas. Considerando-se, por exemplo, a existência de dois esquemas, S e T, sendo S composto por um conjunto de elementos s1, s2.....sn e T composto por t1, t2.....tn, um casamento s1 ↔ t1 é um valor que indica o grau de similaridade entre esses dois elementos. Normalmente este valor está contido no intervalo [0; 1], onde 1 representa o maior grau de similaridade possível. As informações nesta seção foram retiradas de [Mer07].
Para efeitos de classificação, considera-se que o casamento pode ser implementado de diferentes maneiras, envolvendo o uso de um conjunto de algoritmos de casamento ou casadores (matchers). A forma como os algoritmos são utilizados permite imaginar a solução do problema em dois níveis. No primeiro, são considerados os casadores individuais, ou seja, apenas um algoritmo é aplicado. No segundo, diversos algoritmos individuais são combinados, pelo uso de uma das seguintes alternativas:
- Utilização de diferentes tipos de estratégias (por exemplo, busca por igualdade de nomes ou tipos) em um casador híbrido;
- Combinação dos resultados dos casadores individuais em um casador composto.
Os casadores individuais são classificados de acordo com o seguinte critério:
- Instância versus esquema: as abordagens de casamento podem considerar dados das instâncias ou somente dos esquemas;
- Elemento versus estrutura: os casamentos podem ser feitos considerando-se apenas elementos atômicos ou então estruturas complexas compreendendo diversos desses elementos;
- Linguagem versus restrição: um casador pode usar uma abordagem baseada em lingüística (nomes de atributos, por exemplo) ou em restrições, tais como chaves e relacionamentos;
- Cardinalidade: o processo de casamento pode resultar no casamento de um ou mais elementos de um esquema com um ou mais elementos do outro esquema;
- Informações auxiliares: além das informações contidas em cada esquema, algumas abordagens utilizam estruturas auxiliares, tais como dicionários, esquemas globais, decisões tomadas em processos de casamento anteriores e intervenção do usuário.
O processo de casamento de esquemas possui duas funções importantes, uma é definir como os esquemas a serem casados interagem com os algoritmos de casamento e a outra é estabelecer critérios a serem usados no processo de casamento propriamente dito. A figura 9 mostra a visão geral do processo de casamento.
Figura 9 – Visão Geral do Processo de Casamento
O processo de casamento de esquema é dividido em três etapas:
- Conversão de Esquemas: o usuário interage com o sistema fornecendo os esquemas que ele deseja que sejam casados. Estes esquemas estão em seu formato original, e precisam ser transformados em uma representação comum para que os casadores possam compreendê-lo. Esta representação comum, ou esquema canônico, é composto por um conjunto de nós e arcos conectando estes nós. Cada nó do esquema canônico possui um valor que o identifica exclusivamente dentro do grafo a que ele pertence. Os nós tabela de um esquema relacional são identificados simplesmente pelo seu nome, já os nós atributos do esquema relacional são identificados pela concatenação dos seus nomes com o nome da tabela a que eles pertencem.
- Execução dos Casadores: alimenta os algoritmos de casamento de esquema com os dois esquemas canônicos provindos da etapa anterior. O objetivo de cada algoritmo é inferir um valor de similaridade entre cada par de nós, sendo que cada par é composto por um nó XML e um nó relacional. É importante salientar uma restrição adotada neste processo, somente podem ser casados os nós atômicos. Esta restrição está relacionada com o fato de que somente os nós atômicos podem conter informações. Os nós atômicos XML correspondem a elemento PCDATA e atributos, enquanto nós atômicos relacionais correspondem a colunas de tabela. Os demais nós dos esquemas tem função puramente estrutural. O resultado da execução de cada casador é um conjunto de triplas (ni; nj ; simij), onde ni é um nó atômico XML, nj é um nó atômico relacional e simij é a similaridade obtida para o par. Os casadores são executados em seqüência, sendo que o resultado da execução de um casador é uma combinação das similaridades por ele computadas e das similaridades computadas pelo casador anterior.
- Filtro dos Resultados: tem por objetivo eliminar casamentos com base em alguma evidência que os caracteriza como casamentos incorretos. Um dos filtros utilizados envolve restrições de cardinalidade. Considera-se neste processo que os casamentos entre os esquemas possuem cardinalidade local e global 1:1, ou seja, um nó de um esquema pode ser casado com apenas um nó de outro esquema. A restrição de cardinalidade 1:1 funciona da seguinte forma: dando-se as opções de casamento (n1; n2; sim12) e (n1; n6; sim16), pode-se eliminar a opção que apresentar a menor similaridade para n1.
Os esquemas XML e relacional são representados nesta técnica como grafos acíclicos. Os casadores usam estes grafos para realizar as comparações entre os nós de ambas as representações. A Figura 10 mostra a descrição de um esquema relacional, juntamente com o grafo gerado para ele.
Figura 10 – Esquema Canonico Relacional
A Figura 11 mostra a descrição de um esquema xml, juntamente com o grafo gerado para ele.
3.1.1 – TÉCNICAS DE CASAMENTO LINGÜISTICO
Um casador lingüístico possui um algoritmo de reconhecimento dos caracteres em comum entre duas cadeias, e uma métrica que permite computar a similaridade com base nos caracteres em comum.
A técnica apresentada para o casamento lingüístico visa combater uma deficiência encontrada nas demais técnicas existentes. Essa deficiência advém de casos onde as cadeias comparadas são compostas por termos, e a maior diferença entre elas é a ordem em que os seus termos aparecem. Além disso, os termos em cada cadeia não são separados por espaços em branco. Esse tipo de cadeia pode ser encontrado tanto em esquemas XML como em esquemas relacionais. Em ambos os esquemas, os nomes dos conceitos não podem conter espaços em branco.
Existem técnicas que possibilitam inferir a similaridade entre duas cadeias verificando os termos que elas têm em comum, onde um termo é uma seqüência de caracteres adjacentes. São as técnicas baseadas em termos. Sabendo quais são os termos das duas cadeias, podem-se utilizar diversas métricas que computem a similaridade com base nos termos em comum (Dice, Ledit, Overlap, Jaccard, ...). Nessas técnicas, a identificação dos termos é trivial: cada conjunto de caracteres separado por espaço - ou seja - uma palavra - é um termo.
A métrica a ser utilizada deve ser baseada em termos, uma vez que o objetivo do algoritmo é fornecer termos em comum entre duas cadeias. No entanto, as métricas existentes apresentam problemas quando aplicadas ao problema em questão, principalmente pela forma como os termos são formados.
3.1.2 – CASADORES ESTRUTURAIS
São apresentados nessa técnica quatro tipos de casadores estruturais. São eles o casador de nomenclatura, o casador de relação, o casador de vizinhança e o casador de cardinalidade.
3.1.2.1 – CASADOR DE NOMENCLATURA
Uma das formas mais tradicionais de inferir a similaridade entre dois elementos é através da comparação dos seus nomes. Na verdade, essa etapa é fundamental no processo de casamento de esquemas, e geralmente precede a execução de etapas mais elaboradas, que utilizam essa similaridade inicial para computar novos valores de similaridade. Este casador procura estender o processo de casamento baseado em nomes através do uso de padrões de nomenclatura que podem existir entre os nós dos esquemas a serem casados.
Dentro do contexto do casamento entre elementos atômicos XML com colunas de tabelas, é particularmente interessante estudar as relações que os nomes de elementos atômicos têm com as colunas de tabelas. Para traduzir as colunas do banco em elementos XML, foram concebidas três alternativas distintas, segundo [Mer07]:
- PADRÃO EQUIV: Os nomes dos elementos XML coincidem com os nomes das colunas a qual eles se referem. Ambos os nomes representam o mesmo conceito e são escritos exatamente da mesma forma.
- PADRÃO TABELA: Alternativa de projeto considera que os nomes de elementos atômicos assumem nomes de tabelas do banco. Essa situação pode ocorrer quando se está modelando um elemento XML que represente a coluna mais representativa de uma tabela (se existir uma coluna mais representativa).
- PADRÃO CONCAT: O nome de um elemento atômico é uma concatenação do nome da coluna que ele representa com o nome da tabela desta coluna.
Convém ressaltar que podem existir mais formas de determinar como os nomes dos elementos XML são formados a partir de um esquema relacional. O estudo sobre formas alternativas de nomenclatura pode ser alvo de trabalhos futuros. Dado um par de elementos que se deseja casar, verifica-se a ocorrência de um dos três padrões de nomenclatura expostos acima. Essa verificação envolve o uso de técnicas de casamento lingüístico que retornam um valor de similaridade para cada um dos padrões analisados. O padrão com o maior valor de similaridade é escolhido vencedor, e esse valor de similaridade é atribuído ao par dos elementos casados.
Assim, para tornar o algoritmo de casamento aqui descrito genérico, admite-se que várias técnicas lingüísticas possam ser aplicadas. O agrupamento dos resultados de cada técnica pode seguir duas abordagens distintas: a abordagem otimista e a pessimista: Na abordagem otimista, o maior valor de similaridade entre as técnicas é escolhido, e os demais são descartados. Esta abordagem é considerada otimista, pois ela procura maximizar o valor de similaridade. Já na abordagem pessimista o menor valor de similaridade entre as técnicas é escolhido.
A principal diferença entre as abordagens otimista e pessimista é que com o uso da primeira alternativa os casamentos possuem graus de similaridade sempre maiores, ou pelo menos iguais, aos casamentos obtidos com o uso da segunda alternativa. Uma conseqüência disso é que a primeira abordagem tende a apresentar similaridades altas para casamentos incorretos. Por outro lado, a abordagem otimista pode descartar casamentos corretos que não atingiram um valor alto de similaridade.