Monday 27 November 2017

Sys xmltype storage binary options


Estou usando a coluna XMLType em algumas das minhas tabela de banco de dados oracle. Anteriormente (em 11.2.0.2) o tipo de armazenamento padrão considerado é CLOB. Então, se você emitir uma consulta para as colunas XMLType, eu posso ver o conteúdo da coluna como seqüência de caracteres XML. Mas quando eu largar e recriar todas as tabelas e inserido alguns dados, eu não poderia obter o conteúdo das colunas XMLType. É simples exibir o XMLType no valor cloumn. Eu tenho uma dúvida que se o tipo de armazenamento é chaged em XML BINARY Então eu emitir a seguinte declaração alter: Observe que já existem alguns dados presentes na tabela. Evento após quando eu excluir e inserir uma linha, o conteúdo está mostrando como XMLType. Estou usando o SQL Developer UI ferramenta. Alguém pode sugerir uma maneira de corrigir esse problema Ok, Agora decidimos que vamos armazenar o conteúdo da coluna XMLType como SECURE FILE BINARY XML. Então temos uma tabela como esta: A coluna XMLType é exibida como SYS. XMLType no desenvolvedor sql. Então, como obter o conteúdo do binário XML SELECT x. ID, x. Vid, x. details. getCLOBVal () FROM XMYTYPETESTx onde x. ID100000 A consulta acima funciona para mim finalmente. A documentação Oracle alega que armazena XMLType mais Compacto como BINARY XML do que como CLOB. Mas como faço para descobrir quanto espaço é tomado pelo xml binário Então, vsize parece ser o tamanho de algum tipo de ponteiro ou localizador LOB, e getclobval desembala o XML binário em texto. Mas o que acontece com o tamanho de armazenamento do XML binário Por favor, ajude, o tamanho da tabela é de 340GB, por isso vale a pena olhar em opções de armazenamento. Perguntou Jul 15 14 at 17:41 Bem, um segmento não tem nada a ver com uma linha como tal. Um segmento é uma tabela, uma partição de tabela, um índice, um LOB. O importante é armazenar mais de 4k dentro dele, de modo que seu lob não será armazenado na linha que significa dentro do bloco de banco de dados real da linha em si, mas é armazenado em um segmento LOB de linha quotout. Ndash gvenzl Jul 22 14 às 13:00 rep questão, não permitiu postar comentários que você queria dizer entre as perguntas como eu entendi. A única semelhança é questão de espaço de armazenamento, pensei que poderia ser útil para estimar estimativa. Você não mencionou que tipo de dados você vai armazenar como bXML. Descompacta o XML binário em texto Se XML puro, em seguida, depende do compressor que você vai usar. Geralmente lzmagzip é usado para compressão binária. Talvez eu esteja escrevendo sobre coisas óbvias, mas isso é tudo o que sei5 Usando o XML binário para Java Introdução ao XML binário para Java O XML binário foi introduzido no Oracle 11 g Release 1 (11.1). O XML binário torna possível codificar e decodificar entre texto XML e XML binário compactado. Para eficiência, as APIs DOM e SAX são fornecidas em cima de XML binário para consumo direto pelas aplicações XML. A compactação e descompressão de fragmentos de um documento XML facilitam o processamento incremental. Este capítulo pressupõe que você esteja familiarizado com o XML Parser para Java. Formato de armazenamento XML binário Uma opção de armazenamento XMLType é fornecida para permitir o armazenamento de documentos XML no novo formato binário. A nova opção de armazenamento é adicional às opções de armazenamento CLOB e objeto-relacionais existentes. As tabelas e colunas XMLType podem ser criadas usando a nova opção binária de armazenamento XML. Os dados XML no formato binário podem ser acessados ​​e manipulados por todos os operadores e funções SQL existentes e APIs PL / SQL que operam em XMLType. O XML binário é uma codificação de dados XML compatível com o esquema XML, mas pode ser usado com dados XML que não são baseados em um esquema XML. Você também pode usar XML binário para dados XML que está fora do banco de dados (em um aplicativo do lado do cliente, por exemplo). XML binário permite codificação e decodificação de documentos XML, de texto para binário e binário para texto. O XML binário é o XML persistente pós-análise com tipos de dados de banco de dados nativos. O XML binário fornece armazenamento de banco de dados mais eficiente, atualização, indexação, desempenho de consulta e extração de fragmentos do que o armazenamento não estruturado. Ele pode armazenar dados e metadados juntos ou separadamente. Processadores XML Binários Um processador XML binário é um termo abstrato para descrever um componente que processa e transforma o formato XML binário em texto e texto XML em formato XML binário. Ele também pode fornecer um cache para armazenar esquemas. A classe base para um processador binário XML é BinXMLProcessor. Um processador XML binário pode originar ou receber solicitações de protocolo de rede. Modelos para usar XML binário Existem vários modelos para usar XML binário em aplicativos. Primeiro, aqui está um glossário de termos: Glossário para XML binário Aqui está um glossário de termos para uso XML binário: doc-id. Cada documento XML codificado é identificado por um doc-id exclusivo. É um ID de utilizador global (GUID) de 16 bytes ou uma sequência opaca de bytes como um URL. Token tabela. Quando um documento XML de texto não tem um esquema associado a ele, uma tabela de token (ou símbolo) é usada para minimizar o espaço para itens repetidos. Id de vocabulário Pode ser um id de esquema ou uma identificação de URI de namespace para uma tabela de token. Schema-id. Um identificador binário opaco único para um esquema com escopo para o processador XML binário. O schema-id é exclusivo para um processador XML binário e é identificável apenas dentro do escopo desse processador XML binário. O schema-id permanece constante mesmo quando o esquema é evoluído. Um schema-id representa todo o conjunto de documentos de esquema, incluindo esquemas importados e incluídos. Versão do esquema. Cada esquema anotado tem um número de versão associado a ele. O número da versão é especificado como parte das anotações do nível do sistema. Ele é incrementado pelo processador XML binário quando um esquema é evoluído (ou seja, uma nova versão do mesmo esquema é registrada com o processador XML binário). Validade parcial. A codificação de fluxo XML binário usando esquema implica pelo menos uma validade parcial em relação ao esquema. Validade parcial implica nenhuma validação para chaves exclusivas, keyrefs, IDs ou IDREFs. Modelo autônomo Este é o cenário de uso mais simples para XML binário. Existe um único processador XML binário. O único repositório disponível é o cache local de vocabulário em memória que não é persistente e está disponível somente para a vida útil do processador XML binário. Todos os esquemas devem ser registrados antecipadamente com o Processador XML binário antes da codificação ou podem ser registrados automaticamente quando o Processador XML vê a tag xsi: SchemaLocation. Para a descodificação, o esquema já está disponível no cache de vocabulário. Se a descodificação ocorre em um processador XML binário diferente, consulte os diferentes modelos de Serviços da Web aqui descritos. Modelo Cliente-Servidor Nesse cenário, o processador XML binário está conectado a um banco de dados usando JDBC. Assume-se que o esquema é registrado com o banco de dados antes da codificação. Aqui está um exemplo de como conseguir isso: A menos que uma conexão separada seja especificada para dados (usando associateDataConnection ()) é assumido que todos os dados e metadados são armazenados e recuperados usando uma única conexão para codificação e decodificação. Modelo de Serviços da Web com Repositório Nesse cenário, há vários clientes, cada um executando um processador XML binário. Um cliente faz a codificação eo outro cliente faz a decodificação. Existe um repositório comum (que não é necessariamente um banco de dados) conectado a todos os clientes para o armazenamento de metadados. Pode ser um sistema de arquivos ou algum outro repositório. O primeiro processador XML binário garante que o esquema é registrado com o repositório antes de executar a codificação ou o esquema pode ser registrado automaticamente usando a tag xsi: schemaLocation no momento da codificação. O segundo processador binário XML é usado para a descodificação, não tem conhecimento da localização do esquema e obtém o esquema a partir do repositório. Se o primeiro processador XML binário registra um esquema eo segundo registrador de processador XML binário no mesmo repositório, o processador XML binário não compila o esquema, mas simplesmente retorna o vocabulário-id do esquema compilado existente no cache de vocabulário local. O BinXMLProcessor não é thread-safe, portanto, vários segmentos ou clientes acessando o repositório precisam implementar seu próprio esquema de segurança de thread. Modelo de Serviços da Web Sem Repositório Neste cenário, existem vários clientes, cada um executando um processador XML binário. Codificação e decodificação podem acontecer em diferentes clientes. Não existe um repositório de metadados comum. O codificador tem de garantir que os dados binários passados ​​para o próximo cliente são independentes do esquema: ou seja, tem definições de token inline. Isso pode ser conseguido configurando schemaAware false e inlineTokenDefs true. Usando o método setProperty (), durante a codificação. Durante a descodificação, não há esquema necessário. As partes do XML binário para Java A funcionalidade binária Java XML tem três partes: Codificação XML binária - O codificador XML binário converte XMLetto XML para XML binário. Decodificação binária XML - O decodificador binário XML converte XML binário em XML infoset. Gerenciamento de vocabulário XML binário, que inclui gerenciamento de esquemas e gerenciamento de token. Codificação XML binária O codificador é criado a partir do BinXMLStream. Ele toma como entrada o texto XML e fornece o XML binário codificado para o BinXMLStream de onde ele foi criado. O codificador lê o texto XML usando streaming SAX. A codificação do texto XML é baseada nos resultados da análise XML. Defina o sinalizador schemaAware no codificador que especifica se a codificação é compatível com esquema ou sem esquema. Para a codificação com reconhecimento de esquema, o codificador determina se o esquema com o URL de esquema específico foi registrado com o gerenciador de vocabulário. Para um processador baseado em repositório ou baseado em banco de dados, o codificador consulta o repositório ou o banco de dados para o esquema compilado com base no URL do esquema. Se o esquema estiver disponível no banco de dados, ele é obtido do repositório ou banco de dados no formato XML binário e registrado com o gerente de vocabulário local. O vocabulário é esquema. Defina também um sinalizador para indicar que a codificação resulta em um fluxo XML binário que é independente de um esquema. Nesse caso, o fluxo XML binário resultante contém todas as definições de token inline e não é dependente de conjuntos de token de esquema ou externo. Se a codificação estiver ciente do esquema, o codificador usará as informações de tipo de dados do objeto de esquema para uma codificação mais eficiente do fluxo SAX. Há um tipo de dados de codificação padrão associado a cada tipo de dados interno do esquema. A codificação de fluxo XML binário usando um esquema implica pelo menos uma validade parcial em relação ao esquema (para validade parcial, não há validação para chave exclusiva, keyref ou ID ou DREFs). Se os dados são conhecidos por serem completamente válidos em relação a um esquema, o fluxo XML binário codificado armazena essas informações. Oracle XML DB Developers Guide para tabelas de tipos de dados de codificação binária e seus mapeamentos a partir de tipos de dados de esquema XML Se não houver nenhum esquema associado ao XML de texto, os IDs de token de inteiro serão gerados para itens repetidos no XML de texto. A criação de uma tabela de símbolos de token e definições de token é uma técnica de compressão importante. As definições de token são armazenadas como tabelas de token no cache de vocabulário. Se a propriedade para definições de token inline estiver definida, então as definições de token estão presentes inline. Outra propriedade no codificador está especificando PSVI (Post Esquema Validated Infoset) informações como parte do fluxo binário. Se isso estiver definido como true, então as informações PSVI podem ser acessadas usando APIs de extensão XDK para PSVI no DOM. Se psvi true, então o XML de entrada é totalmente validado em relação ao esquema. Se psvi for falso, as informações PSVI não serão incluídas no fluxo binário de saída. O padrão é false. Decodificação binária XML O decodificador binário XML converte XML binário em XML infoset. O decodificador é criado a partir do BinXMLStream ele lê XML binário a partir deste fluxo e saídas de eventos SAX ou fornecer um estilo pull API InfosetReader para ler o XML decodificado. Se um esquema está associado com o BinXMLStream. O descodificador binário de XML recupera o objeto de esquema associado do cache de vocabulário usando o id de vocabulário antes da descodificação. Se o esquema não estiver disponível no cache de vocabulário e as informações de conexão ao servidor estiverem disponíveis, o esquema será obtido do servidor. Se nenhum esquema está associado com BinXMLStream. Então as definições de token podem ser inline no BinXMLStream ou armazenadas em um conjunto de token. Se os tokens de um namespace correspondente não forem armazenados no cache de vocabulário local, então o conjunto de token é obtido do repositório. Gerenciamento de vocabulário XML binário Os processadores XML binários são de diferentes tipos, dependendo de onde os metadados (conjuntos de esquemas ou conjuntos de tokens) estão localizados - processador XML binário local ou processador XML binário de repositório. Gerenciamento de Esquemas Para a persistência de metadados, é recomendável que você use o processador DB XML Binário. Neste caso, esquemas e token conjuntos são registrados com o banco de dados. O gerenciador de vocabulário busca os conjuntos de esquema ou token do banco de dados e o armazena no cache de vocabulário local para fins de codificação e decodificação. Se você precisar usar um repositório de metadados persistente que não seja um banco de dados, então você pode conectar seu próprio repositório de metadados. Você deve implementar a interface para se comunicar com este repositório, BinXMLMetadataProvider. Registro de Esquema Registre esquemas localmente com o processador XML binário local. O processador XML binário local contém um gestor de vocabulário que mantém todos os esquemas apresentados pelo utilizador durante a sua existência. O gerenciador de vocabulário associado a um processador XML binário local não prevê a persistência do esquema. Se você registrar o mesmo esquema (mesmo local de esquema e mesmo espaço de nome de destino), o esquema não será analisado eo ID de vocabulário existente será retornado. Se um novo esquema com o mesmo namespace de destino e um local de esquema diferente estiver registrado, a definição de esquema existente será aumentada com as novas definições de esquema ou resultará em erro de conflito. Identificação de esquema Cada esquema é identificado por um id de vocabulário. O vocabulário id está no âmbito do processador e é único dentro do processador. Qualquer documento que valide com um esquema é necessário para validar com uma versão mais recente do esquema. Anotações de esquema As anotações XML binárias só podem aparecer no elemento ltxsd: appInfogt em um esquema. Existem duas categorias de anotações de esquema: nível do usuário e nível do sistema. O gerente de vocabulário interpreta estes no momento do registro do esquema. Todos os outros tipos de anotações (por exemplo, anotações relacionadas ao banco de dados, são ignoradas). Anotações de Nível de Usuário Estas são especificadas pelo usuário antes do registro. EncodingType - Isso pode ser usado dentro de um elemento xsd :. Xsd: attribute ou xsd: elementos simplesType. Ele indica o tipo de dados a ser usado para codificar o valor do nó do elemento ou atributo específico. Para strings, existe apenas suporte para codificação UTF8 nesta versão. Anotações de nível de sistema O gerenciador de vocabulário adiciona estas no momento do registro, você não pode substituí-los. Token Management Token conjuntos podem ser obtidos a partir do banco de dados ou metadados repositório, em cache no local vocabulário gerente e usado para decodificação. Durante a codificação, conjuntos de tokens podem ser empurrados para o repositório para persistência. As definições de token também podem ser incluídas como parte do fluxo XML binário definindo um sinalizador no codificador. Usando o pacote binário XML do Java Uma classe BinXMLStream representa o fluxo XML binário. Os diferentes locais de armazenamento definidos para o fluxo XML binário são: InputStream - fluxo para leitura. OutputStream - fluxo para gravação. URL - fluxo de leitura. Arquivo - fluxo para leitura e gravação. BLOB - fluxo de leitura e escrita. Byte array - fluxo para leitura e escrita. Em memória - fluxo para leitura e escrita. O objeto BinXMLStream especifica o tipo de armazenamento durante a criação. Um objeto BinXMLStream pode ser criado a partir de uma fábrica BinXMLProcessor. Essa fábrica pode ser inicializada com uma conexão JDBC (para acesso remoto a metadados), pool de conexão, URL ou um PageManagerPool (para armazenamento em memória preguiçoso). BinXMLEncoder e BinXMLDecoder podem ser criados a partir do BinXMLStream para codificação ou decodificação. 1. Aqui está um exemplo de criação de um processador sem um repositório, registrando um esquema, codificando eventos XML SAX em formato binário compatível com esquemas e armazenando em um arquivo: Além de obter o ContentHandler. Você também pode obter os outros manipuladores, como: Use hdlr no aplicativo que gera os eventos SAX. 2. Aqui está um exemplo de criação de um processador com um repositório de banco de dados, decodificação de um fluxo binário ciente de esquema e leitura do XML descodificado usando API pull. O esquema é obtido a partir do repositório de banco de dados para decodificação. Use xmlreader para ler XML em um pull-style do decodificador. Codificador XML binário O codificador toma entrada XML, que é analisada e lida usando eventos SAX e exibe XML binário. Opção Sem Esquema Você pode especificar a opção sem esquema ou sem esquema antes da codificação. O padrão é a codificação sem esquema. Se a opção de reconhecimento de esquema estiver definida, a codificação será feita com base no esquema (s) especificado no documento de instância. O (s) esquema (s) anotado (s) utilizado (s) para a codificação também é necessário no momento da descodificação. Se a opção sem esquema é especificada, a codificação é independente do esquema, mas os tokens são inline por padrão. Para substituir o padrão, defina Inline-token como false. Opção Inline-token Você pode definir uma opção para criar um fluxo XML binário com definições de token inline antes da codificação. Se inlining for desligado, do que você deve garantir que os processadores para o codificador ou decodificador estão usando o mesmo repositório de metadados. A flag Inline-token é ignorada se a opção de reconhecimento de esquema for verdadeira. Por padrão, as definições de token são inline. Figura 5-1 Codificação XML binária Decodificador binário XML O decodificador binário XML toma o fluxo XML binário como entrada e gera eventos SAX como saída ou fornece uma interface de pull para ler o XML descodificado. No caso do fluxo XML binário com reconhecimento de esquema, o descodificador binário XML interage com o gerenciador de vocabulário para extrair as informações do esquema. Se o gerenciador de vocabulário não contém o esquema necessário e o processador é do tipo XML DB binário com uma conexão JDBC válida, o esquema remoto é obtido do banco de dados ou do repositório de metadados baseado no id de vocabulário no fluxo XML binário para Ser descodificado. Da mesma forma, o conjunto de definições de token pode ser obtido a partir do banco de dados ou do repositório de metadados. Figura 5-2 Registro do Esquema do Decodificador XML Binário Aqui está o fluxo deste processo: Se o vocabulário é um esquema XML, ele toma o texto do esquema XML como entrada. O anotador de esquema anota o texto do esquema com anotações de nível do sistema. O esquema já pode ter algumas anotações de nível de usuário. O esquema anotado resultante é processado pelo Construtor de Esquemas para criar um objeto de esquema XML. Esse objeto de esquema XML é armazenado no cache de vocabulário. O cache de vocabulário atribui um id de vocabulário exclusivo para cada objeto de esquema XML, que é retornado como saída. A representação DOM anotada do esquema é enviada para o codificador XML binário. Resolvendo xsi: schemaLocation Durante a codificação, se schemaAware for verdadeiro ea propriedade ImplcitSchemaRegistration for verdadeira. A primeira tag xsi: schemaLocation presente no elemento raiz de um documento de instância XML registra automaticamente esse esquema no gerenciador de vocabulário local. Todas as outras tags schemaLocation não são registradas explicitamente. Se o processador é orientado a banco de dados, o esquema também é registrado no banco de dados de forma semelhante para qualquer metadados baseados em repositório processador. Se a codificação é definida como schemaAware é false ou ImplcitSchemaRegistration é false. Então todas as tags xsi: schemaLocation são ignoradas pelo codificador. DB XML binário Um objeto DBBinXMLMetadataProvider é instanciado com uma conexão JDBC dedicada ou um pool de conexão para acessar informações de vocabulário como esquema e conjunto de token. O processador também está associado a uma ou mais conexões de dados para acessar dados XML. Um processador XML binário pode se comunicar com o banco de dados para vários tipos de operações binárias XML envolvendo armazenamento e recuperação de esquemas XML binários, conjuntos de token e fluxos XML binários. A comunicação de banco de dados está envolvida das seguintes maneiras: Extraindo o Esquema XML binário compilado usando o ID do vocabulário ou o URL do esquema Para recuperar um esquema XML binário compilado para codificação, o banco de dados é consultado com base no URL do esquema. Para decodificar o esquema XML binário, buscá-lo a partir do banco de dados com base no ID de vocabulário. Armazenando o esquema XML binário não compilado usando o URL do esquema e recuperando o id de vocabulário. Quando a tag xsi: schemaLocation é encontrada durante a codificação, o esquema é registrado no banco de dados para armazenamento persistente no banco de dados. O ID de vocabulário associado ao esquema, assim como a versão binária do esquema compilado é recuperado do banco de dados, o objeto de esquema compilado é construído e armazenado no cache local usando o ID de vocabulário retornado do banco de dados. Recuperando um conjunto de tokens binários usando o URL do namespace. Se um fluxo binário a ser descodificado estiver associado a tabelas de token para decodificação, estas são obtidas a partir do banco de dados usando a conexão de metadados. Armazenamento de conjunto de tokens binários usando URL de namespace Se o texto XML tiver sido codificado sem um esquema, ele resultará em um conjunto de token de definições de token. Essas tabelas token podem ser armazenadas persistentemente no banco de dados. A conexão de metadados é usada para transferir o conjunto de tokens para o banco de dados. Fluxo XML binário com opção de armazenamento remoto É de sua responsabilidade criar uma tabela contendo uma coluna XMLType com XML binário para armazenar o resultado da codificação e recuperar o XML binário para a decodificação. Comunicação com o banco de dados pode ser alcançado com SQLNet e JDBC. Obter o objeto XMLType do conjunto de resultados de saída da consulta JDBC. O BinXMLStream para ler os dados binários ou para escrever dados binários pode ser criado a partir do objeto XMLType. A classe XMLType precisa ser estendida para suportar leitura e escrita de dados XML binários. Armazenamento persistente de metadados Um gerenciador de vocabulário local e cache armazena informações de metadados na memória para a vida útil do BinXMLProcessor. Conecte seu próprio armazenamento de back-end para metadados, implementando a interface BinXMLMetadataProvider e conectá-lo no BinXMLProcessor. Atualmente, apenas um provedor de metadados para cada processador é suportado. Você deve codificar um FileBinXMLMetadataProvider que implementa a interface BinXMLMetadataProvider. O codificador e decodificador usa essas APIs para acessar metadados do armazenamento persistente de back-end. Configure as informações de configuração para o armazenamento persistente: por exemplo, o diretório raiz no caso de um sistema de arquivos na classe FileBinXMLMetadataProvider. Instanciar FileBinXMLMetadataProvider e conectá-lo ao BinXMLProcessor. Scripting nesta página melhora a navegação de conteúdo, mas não altera o conteúdo de qualquer maneira. HOWTO: partição de XML binário, armazenamento XMLType Apenas para começar a série 11gR2, aqui o primeiro 8220HOWTO8221 pequeno post sobre os novos recursos no Oracle 11gR2. O banco de dados 11gR2 suporta agora 3 opções binárias de particionamento XML. O particionamento tem grandes vantagens, se você estiver lidando com enormes volumes de dados XML. Essas vantagens são principalmente sobre a manutenção, por exemplo atualizar / atualizar dados, ou o índice de particionamento local que pertence à partição específica que você deseja alterar. Você pode usar esta forma de particionamento em XMLType Columns e XMLType Tables, XML Schema based ou Schema-less. XML XML binário deve ser usado, na maioria das vezes, se você estiver lidando com ambientes de conteúdo / dados orientados (baseado em XML Schema) ou documento orientado (se XML Schema menos). As seguintes 3 opções estão agora disponíveis: XML Partitioning é baseado em uma coluna ou uma coluna virtual e é definido através da função / sintaxe XMLTABLE. Você tem permissão para transmitir um conjunto de resultados / fragmento XML para a próxima sintaxe XMLTABLE aninhada, mas apenas uma vez. Consulte os Guias de Desenvolvedores XMLDB do Oracle para obter mais informações. Particionamento de intervalo O seguinte é um exemplo de uma tabela armazenada XMLType Column (baseada em XML binário), onde uma coluna é definida que será usada para particionar a tabela. Uma coluna virtual também pode ser usada para isso, mas esteja ciente de que ele deve ser indexado se você quiser evitar problemas de desempenho. List Partitioning a) Você deve usar XMLEXISTS e XMLCAST para definir suas colunas virtuais nesta versão de banco de dados 11.2 b) Você deve apoiar estas colunas virtuais através de um índice XMLIndex ou B-Tree estruturado para torná-lo razoável razoávelBinary XML Data Storage em 11g Oracle 11g Novos recursos Dicas Nas versões anteriores do Oracle, duas opções de armazenamento Extensible Markup Language (XML) estavam disponíveis: não estruturadas, ou CLOB e armazenadas e estruturadas, ou baseadas em esquema. No Oracle 11g, XML binário foi adicionado como uma nova opção de armazenamento. Armazenamento não estruturado trata um documento XML como um objeto grande e armazena o arquivo no banco de dados sem estar ciente do conteúdo. Esta opção tem o melhor desempenho de inserção e exclusão, mas o pior acesso e consumo relacional de espaço em disco. O armazenamento estruturado requer o registro prévio do esquema XML e insere um documento XML em uma estrutura objeto-relacional. Esta opção de armazenamento tem o melhor desempenho de consulta e consumo de espaço em disco, mas o maior custo durante a inserção inicial. Esse alto custo é causado porque durante a inserção, o documento é desfiado e armazenado em objetos de banco de dados criados durante o registro do esquema XML. O XML binário, a nova opção de armazenamento introduzida em 11g, armazena o documento em um formato binário pós-parse projetado especificamente para XML. Esta opção provavelmente será a melhor escolha para a maioria dos requisitos XML. O armazenamento binário adicional oferece um desempenho de inserção comparável ao armazenamento não estruturado, mas ao desempenho de consulta e espaço em disco que é comparável ao armazenamento estruturado. Ao contrário do armazenamento estruturado, os benefícios do XML binário não dependem do registro do esquema. Isso se deve à opção de registrar um esquema XML binário para ter tabelas XML binárias baseadas em esquema. No entanto, uma limitação permanece no sentido de que um esquema XML registrado não pode ser compartilhado entre um XML binário e uma tabela relacional de objetos. A melhor estratégia para escolher como gerenciar conteúdo XML é tentar primeiro a opção de armazenamento binário e avaliar se o desempenho é aceitável. Se o desempenho de acesso relacional não for aceitável, experimente a opção de armazenamento estruturado. A razão pela qual o armazenamento binário é preferido é que é fácil de usar e requer a menor quantidade de manutenção porque o registro do esquema não é necessário. As colunas de tipo XML binário também são mais fáceis de usar em tabelas que não sejam XMLType, pois o desempenho não depende da criação de índices. Para usar o armazenamento binário, a tabela XML deve ser criada com a seguinte sintaxe: SQLgt CREATE TABLE BINARYXMLTABLE DE XMLType XMLTYPE STORE AS BINARY XML 2 / Considere o seguinte documento XML para transações de ordens: ltxml versionquot1.0quotgt ltordergt ltcustomergt ltnamegtCliente ABClt / namegt ltccNumgt1234123412341234lt / ccNumgt lt / customergt ltorderLinesgt ltitemgt ltitemidgt108lt / itemidgt ltitemnamegtORACLE 11G NOVOS RECURSOS DO LIVRO ED1.0lt / itemnamegt ltquantitygt1lt / quantitygt ltunitPricegt38.00lt / unitPricegt lt / itemgt ltitemgt ltitemidgt109lt / itemidgt ltitemnamegtORACLE TUNING GUIA ED1.0lt / itemnamegt ltquantitygt1lt / quantitygt ltunitPricegt22.00lt / unitPricegt Inserir este documento na tabela XML binária usando a seguinte sintaxe: SQLgt inserir em valores BINARYXMLTABLE (XMLTYPE (BFILENAME ()) () () () () () () (XMLDIR, testdocument. xml), nlscharsetid (AL32UTF8))) Após a inserção, o documento está imediatamente disponível para acesso relacional. SELECT extractValue (valor (b), / order / customer / name) customername, extractValue (valor (d), item / itemid) itemid, (Valor (b), / order / receipt / salesTax) salesTax, extractValue (valor (b), / order / Recibo / total) de BINARYXMLTABLE a, TABLE (XMLSequence (Extract (valor do objeto / order))) b, TABLE (XMLSequence (Extract (valor (b), / order / orderLines) (Valor (c), / orderLines / item))) d CUSTOMERNAME ITEMID QUANTIDADE UNITPRICE SUBTOTAL SALESTAX TOTAL -------------- ------- -------- ---------- -------- -------- ------ Cliente ABC 108 1 38,00 60,00 4,80 64,80 Cliente ABC 109 1 22,00 60,00 4,80 64,80 Conforme demonstrado Acima, a sintaxe para o acesso relacional a uma tabela XML binária não é alterada a partir de outras opções de armazenamento. Este é um trecho do novo livro Oracle 11g New Features. Guia de especialistas para as novas características importantes por John Garmany, Steve Karam, Lutz Hartmann, V. J. Jain, Brian Carr. Você pode comprá-lo direto do editor por 30 off. Burleson é a equipe americana Nota: Esta documentação da Oracle foi criada como um suporte e referência de treinamento Oracle para uso por nossos profissionais de consultoria de ajuste de desempenho DBA. Sinta-se livre para fazer perguntas no nosso fórum Oracle. Verificar experiência Qualquer pessoa que considere usar os serviços de um especialista em suporte da Oracle deve investigar de forma independente suas credenciais e experiência e não confiar em propagandas e experiência auto-proclamada. Todos os especialistas legítimos da Oracle publicam suas qualificações da Oracle. Errata A tecnologia Oracle está mudando e nós nos esforçamos para atualizar nossas informações de suporte do BC Oracle. Se você encontrar um erro ou tiver uma sugestão para melhorar nosso conteúdo, gostaríamos de receber seu feedback. Apenas e-mail: e inclua o URL da página. Oracle of Database Support Cópia de direitos autorais 1996 - 2017 Todos os direitos reservados por Burleson Oracle reg é marca registrada da Oracle Corporation.

No comments:

Post a Comment