Comece a usar o DB2 9 pureXML de maneira rápida, Parte 1: XML ao extremo

O release do IBM DB2 9 tem como característica uma diferença de arquitetura significativa das versões anteriores. Pela primeira vez, desde o lançamento, o DB2 para Linux, UNIX e Windows está fornecendo uma nova linguagem de consulta, uma nova tecnologia de armazenamento, uma nova tecnologia de indexação e outros recursos para suportar dados XML e sua estrutura hierárquica inerente. Mas não se preocupe, todos os recursos de gerenciamento de bancos de dados tradicionais do DB2 permanecem, incluindo seu suporte a SQL e estruturas de dados tabulares. Explore a tecnologia XML do DB2 9 e aprenda por que a IBM considera o DB2 um sistema de gerenciamento de bancos de dados "híbrido" ou multiestruturado (DBMS).

Observação: Este artigo, escrito originalmente em 2006, foi atualizado para incluir mudanças do produto no DB2 9.5 e 9.7.

Cynthia M. Saracco, Senior Software Engineer, EMC

C. M. Saracco trabalha com o Laboratório da IBM no Vale do Silício na organização de XML no DB2. Ela trabalha no gerenciamento de banco de dados, XML, desenvolvimento de aplicativo da Web e assuntos relacionados.


nível de autor Profissional do
        developerWorks

06/Abr/2010 (Primeira publicação 06/Abr/2010)

Introdução

O gerenciamento de novas formas de dados sempre apresenta novos desafios. Muitos chefes de TI descobriram que esse é exatamente o caso em que aparece o formato Extensible Markup Language (XML).

Infelizmente, muitas vezes as opções óbvias para o gerenciamento e compartilhamento de dados XML não têm sucesso. Os sistemas de arquivos são bons para tarefas simples, mas não se saem muito bem quando é necessário lidar com um número grande de documentos. Problemas de simultaneidade, recuperação, segurança e usabilidade se tornam difíceis de serem tratados. Os sistemas de gerenciamento de bancos de dados relacionais (DBMSs) comerciais tratam desses problemas, mas deixam a desejar em outras áreas. Eles oferecem duas opções de estruturas de bancos de dados fundamentais -- armazenamento de cada documento XML intacto como um único objeto grande ou "retalhação" em múltiplas colunas, geralmente em múltiplas tabelas. Em muitas situações, essas opções apresentam problemas de desempenho, desafios administrativos, aumento da complexidade de consulta, além de outros problemas. Finalmente, os DBMSs apenas para XML introduzem um ambiente novo, e em grande parte não comprovado, em uma infraestrutura de TI, aumentando as preocupações sobre integração, qualificações da equipe e viabilidade de longo prazo.

O release da Versão 9 do DB2 para plataformas Linux, Unix e Windows apresenta uma outra opção. Esse release suporta dados XML como um tipo de primeira classe. Para fazer isso, a IBM estendeu o DB2 para incluir:

  • Novas técnicas de armazenamento para o gerenciamento eficiente de estruturas hierárquicas inerentes em documentos XML
  • Nova tecnologia de indexação para acelerar pesquisas por/em documentos XML
  • Novo suporte a linguagem de consulta (para XQuery), um novo gerador gráfico de consultas (para XQuery) e novas técnicas de otimização de consultas
  • Novo suporte para a validação de dados XML baseado em esquemas fornecidos pelo usuário
  • Novos recursos administrativos, incluindo extensões para utilitários de bancos de dados de chaves
  • Integração com interfaces de programação de aplicativos (APIs) populares
  • Suporte a dados XML em um ambiente de armazém de dados através da adição de suporte XML para o recurso de particionamento de dados (DPF), particionamento por intervalo e armazenamento em cluster multidimensional (MDC) na V9.7

É importante observar que o suporte "nativo" do DB2 para XML foi adicionado ao seu suporte já existente para outras tecnologias, incluindo SQL, estruturas de dados tabulares e vários outros recursos DBMS. Como resultado, os usuários podem criar um objeto de banco de dados único que gerencie tanto os dados SQL "tradicionais", quanto os documentos XML. Além disso, eles podem compor uma consulta única que pesquise e integre ambos os formatos de dados.

Este artigo explora esses recursos ao investigar o suporte a XML nativo do DB2. Entretanto, primeiramente vamos considerar por que o gerenciamento adequado de dados XML é importante.


Benefícios potenciais

Com um número cada vez maior de empresas voltando-se para o XML para ajudá-las a implementar arquiteturas orientadas a serviços (SOA), trocar dados entre sistemas e aplicativos diferentes e adaptar-se às condições de negócio em mudança rápida, muitos chefes de TI experientes estão procurando maneiras de compartilhar, pesquisar e gerenciar de maneira efetiva a abundância de documentos e mensagens XML que suas empresas estão gerando. O novo suporte a XML do DB2 foi projetado para ajudar as empresas a minimizar o tempo e esforço gasto para persistir e usar seus dados XML. Por sua vez, isso pode reduzir os custos de desenvolvimento e melhorar a agilidade dos negócios.

O artigo "Use DB2 native XML with PHP" (developerWorks, outubro de 2005), por exemplo, ilustra como o novo suporte a XML do DB2 reduz a complexidade da estrutura do banco de dados e código do aplicativo necessários para dar suporte a um Web site de e-commerce. De maneira similar, "Managing XML for Maximum Return" (IBM, novembro de 2005) discute experiências prévias de clientes envolvendo cenários de testes comparativos que também indicam economias potenciais de trabalho e ciclos operacionais melhorados.

O que está por trás desses benefícios? O DB2 permite aos usuários armazenar documentos XML intactos com conhecimento DBMS integral da estrutura interna do documento. Isso elimina ou minimiza tarefas administrativas ou de programação associadas às outras alternativas. Além disso, pode acelerar pesquisas por/em documentos e permitir que os clientes acomodem prontamente as mudanças nos requisitos de negócios refletidas nos esquemas XML.


Visão geral arquitetural

O DB2 permite que aplicativos clientes trabalhem com estruturas de dados tabulares e XML através da linguagem de consulta de sua escolha -- SQL (incluindo SQL com extensões XML, geralmente chamadas de "SQL/XML") ou XQuery. Como mostra a Figura 1, os componentes no nível do mecanismo no DB2 suportam consultas especificadas em qualquer linguagem.

Figura 1. A arquitetura do novo release do DB2 9
Diagram shows DB2 client application communicating either through SQL/XML to a relational interface on the DB2 server, or through XQuery to an XML interface on the DB2 Server. On the back end are two types of storage: relational and XML.

Para gerenciar tipos de dados SQL tradicionais e dados XML de maneira eficiente, o DB2 inclui dois mecanismos de armazenamento distintos. Discutiremos a tecnologia de armazenamento pureXML® em breve. No entanto, é importante observar que o mecanismo de armazenamento subjacente usado para um determinado tipo de dado é transparente para o aplicativo. Em outras palavras, o aplicativo não necessita especificar explicitamente qual o mecanismo de armazenamento será usado ou gerenciar aspectos físicos de armazenamento, como dividir partes de documentos XML em múltiplas páginas de bancos de dados. Ele simplesmente desfruta dos benefícios de desempenho do tempo de execução do armazenamento e pesquisa de dados em um formato que seja eficiente para os dados de destino.

Vamos investigar os recursos XML do DB2 a partir de um ponto de vista do usuário.


Armazenamento lógico

Coleções de documentos XML são armazenadas em tabelas do DB2 contendo uma ou mais colunas do novo tipo de dado XML. Isso possibilita que os administradores usem instruções linguagem de definição de dados (DDL) SQL familiares para criar objetos de bancos de dados para persistir seus dados XML. No entanto, essa interface familiar mascara o fato de que o DB2 armazena os dados XML de maneira diferente, usando uma nova tecnologia para preservar a estrutura hierárquica dos dados XML e suportar pesquisas eficientes que se estendem por todos ou por parte dos dados XML originais.

Para tornar mais fácil para os usuários integrarem formatos tradicionais de dados de negócio com dados XML, os administradores do DB2 podem criar tabelas que contenham colunas tanto de tipos de dados SQL tradicionais quanto dos novos tipos de dados XML. Aqui está um exemplo dessas tabelas:

Listagem 1. Criando uma tabela com uma coluna XML
create table items (
	id 	 	int 	primary key not null,
	brandname 	varchar(30), 
	itemname	varchar(30),
	sku		int, 
	srp		decimal(7,2),
	comments	xml
)

As cinco primeiras colunas dessa tabela usam tipos de dados SQL tradicionais para controlar informações sobre cada item a venda, incluindo seu número de ID, nome da marca, nome do item, unidade de manutenção de estoque (SKU) e preço de varejo sugerido (SRP). Uma coluna "comments" contém dados XML com feedback que os clientes compartilharam a respeito do item.

Observe que a estrutura interna dos dados XML não é especificada ao criar uma tabela em uma coluna XML. Isto é intencional. Documentos XML são autoexplicativos e suas estruturas internas podem variar de maneira considerável. O único requisito do DB2 para armazenar dados XML é que eles sejam "bem formatados" -- ou seja, eles devem seguir certas regras de sintaxe especificadas em "Padrão W3C para XML" (consulte a seção de "Recursos"). A abordagem liberal do DB2 fornece flexibilidade considerável aos usuários e facilita o armazenamento de coleções de documentos XML que contenham atributos e estruturas internas diferentes por envolver requisitos de negócios ou situações nas quais certas informações estão faltando ou são irrelevantes.

No entanto, os usuários que queiram se assegurar de que os dados XML estão de acordo com suas próprias regras estruturais podem instruir o DB2 a validar seus dados antes do armazenamento. Isso é discutido de maneira bem detalhada em "Esquemas XML e validação." Fazer isso envolve, essencialmente, a criação de esquemas XML (que também fazem parte do padrão W3C XML) e o registro desses esquemas no DB2. (Consulte Recursos para obter mais informações sobre os esquemas XML).

Neste momento, você deve estar se perguntando como os usuários preenchem uma tabela do DB2 com dados XML. A resposta é simples -- eles usam um dos três mecanismos familiares do DB2 para fazer isso. Instruções INSERT em SQL assim como a facilidade IMPORT do DB2 acomodam dados XML além de outros tipos de dados. (IMPORT do DB2 emite instruções INSERT nos bastidores.) O carregamento também suporta inserções XML, o que foi adicionado no DB2 9.5. Caso esteja se perguntado por que o DB2 suporta somente inserções de dados através de SQL e não do XQuery, a resposta também é bastante simples -- a primeira versão do padrão XQuery emergente foca nas atividades de leitura de banco dados e não nas atividades de gravação. Na falta de um padrão claramente aceito, a IBM optou por oferecer a seus usuários dois meios familiares de persistir novos dados XML. (Consulte "Recursos" para obter mais informações sobre o padrão XQuery).


Armazenamento físico

Como uma questão prática, a maioria dos usuários não precisará se preocupar com a nova arquitetura de gerenciamento de armazenamento físico para dados XML do DB2. No entanto, para ajudar a entender o que o DB2 está fazendo nos bastidores, vamos discutir brevemente sua abordagem interna para o armazenamento de dados XML.

O DB2 armazena e manipula dados XML em um formato analisado que reflete a natureza hierárquica do documento XML original. Assim, ele usa árvores e nós como seu modelo para armazenamento e processamento de dados XML. Se os usuários instruírem o DB2 para validar seus dados XML contra um esquema XML registrado antes do armazenamento, o DB2 anotará todos os nós na hierarquia XML com informações a respeito dos tipos de esquema.

Dada a definição anterior de uma tabela de "itens", vamos revisar um documento XML de amostra a ser armazenado nessa tabela. Como mostra a Listagem 2 e ilustra a Figura 2, esse documento XML contém elementos múltiplos representados em uma hierarquia, incluindo um elemento Comments raiz e um ou mais elementos Comment individuais pertencendo a um determinado item. Associados a cada comentário estão um identificador de comentário, informações de clientes que podem incluir subelementos para o nome e endereço de e-mail do cliente, o texto da mensagem ou comentário do cliente e um indicador para indicar se o cliente gostaria ou não de uma resposta.

Listagem 2. Amostra do documento XML
<Comments>
   <Comment>
      <CommentID>133</CommentID>
      <Customer>
         <Name>John Doe</Name>
         <Email>johndoe@any_isp.com</Email>
      </Customer>
      <Message>Heels on shoes wear out too quickly.</Message>
      <ResponseRequested>No</ResponseRequested>
   </Comment>
   . . .
</Comments>
Figura 2. Representação hierárquica do documento XML na Listagem 2
Diagram shows Comments at top level, Comment at second level, and CommentID, Customer, Message, and ResponseRequested at third level

No armazenamento, o DB2 preservará a estrutura interna desse documento, convertendo seus nomes de tag e outras informações em valores de números inteiros. Isso ajuda a conservar espaço em disco e também melhora o desempenho de consultas que usam expressões de navegação. Por exemplo, o DB2 pode converter a tag "Comments" na Figura 2 em um "0" durante o armazenamento. No entanto, os usuários não estão cientes dessa representação interna.

Finalmente, o DB2 dividirá automaticamente as partes de um documento — ou seja, os nós da árvore do documento — em páginas de bancos de dados múltiplas, como necessário. Realmente, o DB2 pode dividir uma coleção (ou subárvore) de nós em qualquer nível da hierarquia do documento, como necessário. Em tais casos, o DB2 gera e mantém automaticamente um índice "regiões" para fornecer um meio eficiente de controle das representações físicas de todo o documento. O espaço onde esses documentos XML são armazenados chamado XML Data Object Area (XDA).

Se a opção "sequencial" for usada para a tabela de criação e todo o documento XML for pequeno o bastante para caber na página, ele será armazenado junto aos dados relacionais e não na área XDA. Se, no entanto, o documento for muito grande, o DB2 dividirá automaticamente o documento, como descrito acima. A opção sequencial foi introduzida no DB2 9.5. Também foi introduzida na versão 9.5 a capacidade de dizer "compress yes" durante a criação ou alteração da tabela e não possuir somente os dados relacionais comprimidos, mas também os dados XML em sequência. Na verdade, o DB2 foi um pouco mais longe na versão 9.7 — definindo compressão em uma tabela na versão 9.7 também comprime os documentos XML na área XDA.


Indexação

Junto com o novo suporte ao gerenciamento de armazenamento hierárquico para XML, o DB2 inclui nova tecnologia de indexação para acelerar pesquisas envolvendo dados XML. Como seus correspondentes relacionais, esses novos índices XML são criados com uma instrução DLL SQL: CREATE INDEX. No entanto, além de especificar a coluna de destino a ser indexada, os usuários também podem especificar um "xmlpattern" -- essencialmente, uma expressão XPATH sem predicados -- para identificar o subconjunto do documento XML de interesse.

Por exemplo, usando a definição de tabela "items" anterior e o documento XML de amostra correspondente mostrado na Listagem 2, um administrador pode emitir a seguinte instrução (consulte a Listagem 3) para indexar todos os identificadores de comentários (valores "CommentID") contidos na coluna "comments". Lembre-se de que o elemento CommentID em nosso documento de amostra é um filho do elemento Comment que, por sua vez, é um filho do elemento Comments raiz.

Listagem 3. Criando um índice para uma coluna XML
create index myindex on items(comments) generate key 
using xmlpattern '/Comments/Comment/CommentID' as sql double

Vale a pena observar alguns detalhes. O caminho especificado na cláusula "xmlpattern" é específico do caso. Assim, "/Comments/Comment/CommentID" não indexará os mesmos valores do elemento XML que "/comments/comment/commentid." Além disso, devido ao fato de o DB2 não necessitar de um esquema XML único para uma determinada coluna XML, o DB2 pode não saber que tipo de dado associar ao padrão especificado. Os usuários devem especificar o tipo de dado de maneira explícita, usando um dos tipos SQL suportados (VARCHAR, VARCHAR HASHED, DOUBLE, DATE e TIMESTAMP).

Finalmente, apesar de uma instrução DDL SQL ser usada para criar um índice XML, um índice sobre dados XML não é o mesmo que um índice sobre colunas de tipos de dados SQL tradicionais. Embora os detalhes sobre a tecnologia de indexação XML do DB2 estejam fora do escopo deste artigo, pode-se ter observado duas diferenças significantes:

  • Índices sobre dados XML geralmente envolvem somente um subconjunto dos conteúdos do documento (da coluna). Por contraste, índices sobre dados SQL tradicionais sempre envolvem todo o conteúdo da coluna.
  • Uma linha única em uma tabela pode resultar em múltiplas entradas de índice XML, pois um único documento XML pode conter zero, um ou mais "nós" que correspondem ao xmlpattern especificado. Por contraste, um índice não XML contém uma entrada para cada linha na tabela.

Para certos aplicativos, pesquisas de texto completas podem ser críticas. A IBM estendeu os recursos de pesquisa de texto anteriores do DB2 para incluir dados armazenados em colunas XML. Extensões na instrução CREATE INDEX permitem que administradores criem índices de texto total para ajudar a melhorar o desempenho de tais pesquisas.


Linguagem de consulta e otimização

O suporte a pureXML do DB2 inclui novos recursos de linguagem de consulta. Agora, os programadores podem pesquisar dados usando SQL ou XQuery, uma nova linguagem de consulta que suporta expressões de navegação (ou baseadas em caminhos). Realmente, os aplicativos podem empregar livremente instruções de ambas as linguagens de consulta e uma instrução de consulta única pode realmente incorporar tanto SQL quanto XQuery.

Não temos tempo para explorar os detalhes desses recursos neste artigo, então, vamos discutir alguns destaques. Caso seja um programador de SQL com nenhuma experiência com XML, você ficará aliviado ao saber que uma instrução SQL simples permitirá a recuperação de conteúdos de dados armazenados em colunas XML. Por exemplo, essas duas consultas familiares retornarão todos os dados na tabela 'items' relacionados a uma unidade de manutenção de estoque (SKU), incluindo documentos XML com comentários de clientes:

Listagem 4. Consultando dados XML com SQL
select * from items where sku = 112233

select id, brandname, itemname, sku, srp, comments from items
    where sku = 112233

Agora, vamos considerar uma situação um pouco diferente, na qual se quer recuperar somente as mensagens contidas dentro dos comentários do cliente da tabela "items" e gostaria de se fazer isso usando XQuery. Aqui está, talvez, a maneira mais fácil de formular a instrução:

Listagem 5. Consultando dados XML com XQuery
xquery db2-fn:xmlcolumn('ITEMS.COMMENTS')/Comments/Comment/Message

Devido ao fato de o DB2 suportar duas linguagens de consulta, os usuários devem prefixar instruções XQuery com a palavra chave "xquery". A função "db2-fn:xmlcolumn" é uma maneira de especificar os dados de destino a serem consultados. Ela necessita de um parâmetro especificando a coluna XML da tabela desejada -- neste caso, a coluna COMMENTS da tabela ITEMS. Restringimos ainda mais nossos dados de destino para um subconjunto específico de dados XML -- a saber, valores do elemento "Message", que é um filho do elemento "Comment", que, por sua vez, é um filho do elemento "Comments" raiz. (Consulte a Figura 2.)

A mesma consulta pode ser formulada usando expressões FLWOR comumente associadas a instruções XQuery. Expressões FLWOR -- uma maneira informal de se referir às cláusulas for, let, where, order by e return -- permitem que programadores de consultas iterem em grupos de nós dentro de documentos XML e liguem variáveis a resultados intermediários. Para essa consulta de amostra, pode-se usar expressões for e return para recuperar mensagens de comentários de clientes, como mostrado aqui:

Listagem 6. Usando cláusulas FOR e RETURN de XQuery
xquery for $y in db2-fn:xmlcolumn('ITEMS.COMMENTS')/Comments/Comment 
return ($y/Message)

Vale a pena notar que o IBM Data Studio V2.2.0.1 (o substituto grátis do Control Center) e o Optim Development Studio V2.2, sendo ambos ferramentas de desenvolvimento baseadas no Eclipse, incluem um gerador gráfico XQuery para ajudar os usuários a gerarem e testar consultas.

Tanto o SQL quanto o XQuery podem ser combinados em uma instrução única para restringir pesquisas tanto para colunas XML quanto para colunas não XML. Por exemplo, considere a seguinte instrução XQuery:

Listagem 7. Combinando SQL e XQuery em uma instrução
xquery db2-fn:sqlquery('select comments from items 
where srp > 100')/Comments/Comment/Message

A cláusula db2-fn:sqlquery restringe a entrada para a instrução XQuery mais ampla, especificamente, somente comentários de clientes associados a itens que carreguem um preço de varejo sugerido (srp) de mais de $100 são passados como entrada. Mais informações XQuery indicam que o DB2 deveria retornar somente partes "Message" de tais comentários.

Vários artigos e Web sites podem ajudá-lo a acelerar o passo no que diz respeito a extensões SQL/XML do DB2, suporte a XQuery do DB2 e padrão XQuery emergente. (Consulte "Recursos" para sugestões.)

Finalmente, esta discussão sobre linguagens de consulta pode tê-lo deixado curioso sobre um tópico relacionado: otimização de consulta. O DB2 possui dois analisadores de linguagem de consulta: Um para XQuery e outro para SQL. Ambos geram uma representação comum, com linguagem neutra e interna de consultas. Isso significa que consultas escritas em qualquer uma das linguagens possuem todos os benefícios das técnicas de otimização de consulta baseadas em custo do DB2, o que inclui a regravação de operadores de consulta e a seleção de um plano de acesso a dados de baixo custo. Além disso, o DB2 pode alavancar novos operadores de consulta e de junção, assim como novas técnicas de processamento de índices para fornecer desempenho de tempo de execução potente para consultas envolvendo documentos XML.


Esquemas XML e validação

A natureza flexível do XML às vezes preocupa profissionais de bancos de dados preocupados com a qualidade dos dados. Como já notamos, o DB2 permite aos usuários armazenar qualquer documento XML bem formatado em qualquer coluna definida no novo tipo de dado XML. Assim, uma coluna única pode conter documentos com diferentes estruturas (ou esquemas) assim como conteúdos diferentes. Quando a natureza dos dados a serem capturados não for clara ou difícil de ser prevista, tal flexibilidade pode ser de necessidade absoluta. Mas em outros casos, pode ser uma responsabilidade. Por isso o DB2 dá aos usuários a opção de registrar seus esquemas XML e instruir o DB2 a validar documentos XML contra esses esquemas antes do armazenamento.

Caso não esteja familiarizado com esquemas XML, eles são simplesmente documentos XML bem formatados que ditam a estrutura e o conteúdo de outros documentos. Por exemplo, esquemas XML especificam que elementos são válidos, a ordem na qual esses elementos devem aparecer em um documento, que tipos de dados XML são associados a cada elemento, etc. Várias ferramentas podem ajudá-lo a criar esquemas XML a partir de documentos XML existentes, incluindo os produtos Rational®.

Os usuários podem escolher armazenar diferentes documentos XML que correspondem a diferentes esquemas registrados em uma coluna única. Isso é importante pois as necessidades de negócios em expansão podem impactar a estrutura e o conteúdo de dados XML que necessitam ser capturados. Considerando nossa tabela "items" anterior, imagine que, vários meses após a implementação dessa tabela, você decidiu capturar informações adicionais na coluna XML, como mais informações de contato de clientes, um registro das ações tomadas em resposta a certos comentários, etc. O DB2 pode acomodar esses novos aprimoramentos sem obrigar os usuários a mudarem a estrutura da tabela ou qualquer aplicativo que dependa dela. Na verdade, dados existentes (baseados no esquema XML "antigo") podem permanecer no local e novos dados que estejam de acordo com um ou mais esquemas podem ser adicionados. Dessa maneira, os administradores podem suportar novos requisitos de negócios com tempo e custo mínimos de implementação. Além disso, eles não necessitam comprometer a integridade de seu XML para fazer isso -- eles podem, simplesmente, fornecer novas informações ao DB2 sobre o que é "válido" para seus dados XML.

O registro de um esquema XML no repositório interno do DB2 é simples. O DB2 fornece procedimentos armazenados para automatizar o processo ou os administradores podem emitir comandos correspondentes manualmente. É possível utilizar um esquema único para validar diversas colunas XML em várias tabelas, se for desejado.


Suporte administrativo

O novo suporte do DB2 a XML inclui extensões para ferramentas e utilitários familiares para ajudar os administradores a gerenciar e ajustar seus bancos de dados. Por exemplo, os recursos de backup e restauração -- incluindo a replicação de dados de alta disponibilidade para situações de failover -- todos os documentos de suporte armazenados em colunas XML. De maneira similar, extensões para os recursos IMPORT e EXPORT agora podem operar tanto em dados SQL tradicionais quanto em dados XML. Assim, pode-se emitir um comando IMPORT único para preencher toda a tabela "items" (ler dados XML de arquivos nativos) e emitir um comando EXPORT único para gravar todos os dados da tabela em arquivos externos. No DB2 9.5, as extensões foram adicionadas ao recurso LOAD para que se possa LOAD (carregar) grandes quantidades de documentos XML.

Além disso, a ferramenta administrativa gráfica do DB2, o DB2 Control Center, assim como seu substituto grátis, o IBM Data Studio, permite que administradores pesquisem tabelas contendo dados XML, criem e gerenciem índices baseados em XML, emitam instruções SQL/XML e XQuery e desempenhem várias outras tarefas administrativas. Já que o desempenho é sempre uma preocupação principal, recursos adequados do DB2 também foram estendidos para acomodar dados XML. Isso inclui o DB2 Snapshot Monitor, que fornece um resumo de momentos específicos ou "captura instantânea" de atividades do DB2; RUNSTATS, que coleta estatísticas sobre a natureza dos dados armazenados em um banco de dados DB2; e EXPLAIN, que relata qual caminho de acesso o otimizador de consultas selecionou para satisfazer uma determinada solicitação. O exame da saída EXPLAIN pode permitir que um administrador determine quais índices XML estão sendo usados.


Extensões de linguagem de programação

O novo suporte a XML do DB2 não seria útil se o XML armazenado em seus bancos de dados não estivesse facilmente acessível a programadores. Por reconhecer isso, a IBM implementou aprimoramentos em suas várias interfaces de linguagem de programação para suportar o acesso fácil a seus dados XML. Esses aprimoramentos incluem Java™ (JDBC), C (SQL integrado e interface de nível de chamada), COBOL (SQL integrado), PHP e ambiente .NET da Microsoft® (através do provedor DB2.NET).

Devido ao fato de a interface de programação de aplicativos (API) variar de acordo com a linguagem de programação em uso, este artigo não revisa cada uma dessas extensões. No entanto, pode-se ler um resumo sobre essas extensões em um artigo de conferência com o título "Native XML Support in DB2 Universal Database" (consulte a seção "Recursos") ou leia o artigo "Use DB2 native XML with PHP."


Suporte a armazém de dados

Com o release do DB2 9.7, o suporte a XML foi estendido a um ambiente de armazém de dados. Agora, o DPF (recurso de particionamento de dados) terá suporte total a colunas XML. Isso permite que as operações XML de análise, navegação, transformação, serialização e construção agora sejam feitas em paralelo visando benefícios de desempenho. Agora, pode-se criar ou alterar qualquer tabela para adicionar uma coluna XML a partir de qualquer partição, criar índices a partir de qualquer partição, usar os comandos de validação XML, usar SQL/XML ou XQuery ou carregar grandes volumes de dados XML em paralelo. A partir do DB2 9.7, as tabelas particionadas podem incluir dados XML e se beneficiar do armazenamento e da transferência fácil de dados fornecidos pelo recurso de particionamento de tabela. Além das consultas sobre dados relacionais, consultas sobre dados XML também podem se beneficiar da vantagem de desempenho da eliminação da partição.

Agora, as tabelas de Armazenamento em Cluster Multidimensional (MDC) também suportam dados XML. O MDC fornece um método para armazenar dados em cluster em tabelas com dimensões múltiplas. As tabelas de MDC podem melhorar de maneira significativa o desempenho de consulta e reduzir o gasto adicional com operações de manutenção de dados como a reorganização, inserção ou exclusão de dados. Agora, pode-se criar tabelas de MDC que contenham uma ou mais colunas XML, adicionar colunas XML a tabelas de MDC e criar índices sobre dados XML em tabelas de MDC. As consultas podem usar tanto índices sobre dados XML e índices de MDC para aprimorar o desempenho.

Resumo

O DB2 9 é a primeira implementação da IBM de um sistema de gerenciamento de bancos de dados híbrido ou multiestruturado. Além de suportar um modelo de dados tabulares, o DB2 também suporta o modelo de dados hierárquico nativo encontrado em documentos e mensagens XML. Os usuários podem combinar e corresponder, livremente, o armazenamento de dados SQL tradicionais e XML em uma única tabela. Eles também podem consultar e integrar ambos os formatos de dados usando SQL (com extensões XML, se desejado) e XQuery, o padrão emergente para a consulta de dados XML. Através da construção em uma infraestrutura de gerenciamento de bancos de dados comprovada, a IBM está fornecendo aos usuários do DB2 um suporte sofisticado tanto para tecnologias de DBMS relacionais quanto XML nativos.

Agradecimentos

Obrigado Grant Hutchison, Matthias Nicola e Gary Robinson por revisarem este artigo.

Recursos

Aprender

  • Web site do DB2 pureXML: Aprenda mais sobre o suporte a pureXML do DB2.
  • Wiki do DB2 pureXML: Essa é página com todas as informações a respeito do pureXML. Aqui você encontrará categorias para mais artigos, histórias de sucesso, parceiros pureXML, nosso fórum do pureXML e nosso site dedicado para quem quiser estar atualizado sobre as informações mais recentes sobre o pureXML. Fique atualizado com as mais recentes histórias de sucesso, artigos, educação e muito mais sobre o DB2 pureXML.
  • Site dedicado do DB2 pureXML: É possível se inscrever para estar em nosso site dedicado pureXML e assistir a sessões ministradas por especialistas e clientes que investigam mais afundo as funções e soluções pureXML.
  • Padrão W3C para XML: Os dados XML devem ser "bem formatados" -- eles devem se adequar a certas regras de sintaxe especificadas no padrão WC3 para XML -- para serem armazenados no DB2.
    • Esquemas XML: Também parte do padrão W3C para XML, os esquemas XML fornecem um meio para definir a estrutura, o conteúdo e a semântica de documentos XML
    • Padrão XQuery: O XQuery é uma linguagem de consulta que usa a estrutura do XML de maneira inteligente para expressar consultas em muitos tipos de fontes de dados XML.
  • System RX: One Part Relational, One Part XML (Web site da Conferência SIGMOD 2005): Escrito por 14 pesquisadores e desenvolvedores da IBM, este artigo descreve a arquitetura e os aspectos de design de um sistema de banco de dados relacional híbrido e XML chamado System RX.
  • "Firing up the Hybrid Engine" (IBM Database Magazine, 3º Trimestre de 2005): O novo DB2 híbrido da IBM coloca toda a capacidade de um mecanismo relacional para funcionar em armazenamento XML verdadeiramente nativo que está lado a lado com o repositório de dados relacional do DB2.
  • "The IBM approach to unified XML/relational databases" (IBM, março de 2005): Esse White Paper discute como a IBM fornece um banco de dados XML/relacional unificado verdadeiramente nativo, suportando o modelo de dados XML do cliente através do banco de dados até o disco e novamente de volta.
  • "DB2 Basics: An introduction to the SQL/XML publishing functions" (developerWorks, novembro de 2005): Este artigo introduz as funções de publicação SQL/XML e mostra, através de exemplos práticos, como usar essas funções.
  • "Native XML Support in DB2 Universal Database" (Ata da 31ª Conferência VLDB, 2005) fornece um resumo das extensões de linguagem de programação.
  • "Managing XML for Maximum Return" (IBM, novembro de 2005): Conheça os benefícios de negócios do suporte a XML do DB2 nesse White Paper.
  • "Use DB2 native XML with PHP" (developerWorks, outubro 2005): Conheça a eficácia do uso dos recursos de XML nativo do DB2 UDB para Linux, UNIX e Windows para simplificar o código do aplicativo e esquemas relacionais.
  • Tutorial XQuery: Aprenda os fundamentos da linguagem XQuery.
  • "XQuery from the Experts: Influences on the design of XQuery" (developerWorks, setembro 2003): O próprio pioneiro em XQuery da IBM, Don Chamberlin, discute o aparecimento da linguagem XQuery -- especificamente, a necessidade de uma linguagem de consulta para dados XML e os princípios básicos por trás dela. Esse excerto é do Capítulo 2 do livro ainda não lançado de Addison-Wesley XQuery from the Experts.
  • "An Introduction to XQuery" (developerWorks, novembro de 2005): Conheça as origens da linguagem e padrões XML relacionados. Howard Katz apresenta a especificação XQuery da W3C, que está indo em direção ao status de Recomendação.
  • Mantenha-se atualizado com os webcasts e eventos técnicos do developerWorks.
  • Seção Gerenciamento de Informações do developerWorks: Saiba mais sobre o DB2. Encontre documentações técnicas, artigos de instruções, orientação, downloads, informações sobre produtos e muito mais.
  • Aprenda sobre o DB2 Express-C, a versão gratuita do DB2 Express Edition para a comunidade.

Obter produtos e tecnologias

  • Elabore seu próximo projeto de desenvolvimento com o software de teste IBM, disponível para download diretamente no developerWorks.
  • Agora é possível usar o DB2 gratuitamente. Faça o download do DB2 Express-C, uma versão sem custos do DB2 Express Edition para a comunidade, que oferece os mesmos principais recursos de dados do DB2 Express Edition e fornece uma base sólida para construir e implementar aplicativos.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Information Management
ArticleID=480743
ArticleTitle=Comece a usar o DB2 9 pureXML de maneira rápida, Parte 1: XML ao extremo
publish-date=04062010