Wednesday, 11 October 2017

Sys Xmltype Storage Binary Options


A documentação da 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 que eu sei239 XMLTYPE XMLType é um tipo opaco definido pelo sistema para manipulação de dados XML. Ele como funções de membro predefinidas nele para extrair nós e fragmentos XML. Você pode criar colunas de XMLType e inserir documentos XML nele. Você também pode gerar documentos XML como instâncias XMLType dinamicamente usando as funções SYSXMLGEN e SYSXMLAGG SQL. Este capítulo contém os seguintes tópicos: Resumo dos Subprogramas XMLType A Tabela 239-1 resume funções e procedimentos do XMLType. Tabela 239-1 Subprogramas XMLTYPE Cria um XML não baseado em esquema a partir da instância baseada no esquema de entrada. Cria uma instância XMLType baseada em esquema a partir da instância não baseada em esquema usando o URL de esquema de entrada. Função estática para criar e retornar uma instância XMLType. Toma uma instância XMLType e um XPath e retorna 1 ou 0 indicando se a aplicação do XPath retorna um conjunto de nós não vazios. Toma uma instância XMLType e um XPath. Aplica a expressão XPath e retorna os resultados como um XMLType .4 Usando XMLType Este capítulo descreve como usar o tipo de dados XMLType, criar e manipular tabelas e colunas XMLType e consultar sobre elas. Ele contém as seguintes seções: Nota: Não baseado em esquema: As tabelas e colunas XMLType descritas neste capítulo não são baseadas no esquema XML. No entanto, você pode usar as técnicas e os exemplos fornecidos neste capítulo, independentemente da opção de armazenamento escolhida para suas tabelas e colunas XMLType. Consulte o Capítulo 3, Utilizando o Oracle XML DB para obter mais recomendações de armazenamento. Baseado em esquema XML: Apêndice B, Esquema de esquema XML e Capítulo 5, Mapeamento estruturado de XMLType descrevem como trabalhar com tabelas e colunas XMLType baseadas em esquema XML. O que é XMLType O Oracle9 i Release 1 (9.0.1) introduziu um novo tipo de dados, XMLType. Para facilitar o tratamento nativo de dados XML no banco de dados. O seguinte resume XMLType: XMLType pode ser usado em procedimentos armazenados PL / SQL como parâmetros, valores de retorno e variáveis. XMLType pode representar um documento XML como uma instância (de XMLType) em SQL. XMLType possui funções de membro incorporadas que operam em conteúdo XML. Por exemplo, você pode usar funções XMLType para criar, extrair e indexar dados XML armazenados no banco de dados Oracle9 i. A funcionalidade também está disponível através de um conjunto de APIs (Application Program Interfaces) fornecidas em PL / SQL e Java. Com o XMLType e essas capacidades, os desenvolvedores SQL podem aproveitar o poder do banco de dados relacional enquanto trabalham no contexto do XML. Da mesma forma, os desenvolvedores XML podem aproveitar o poder dos padrões XML enquanto trabalham no contexto de um banco de dados relacional. Tipo de dados XMLType pode ser usado como o tipo de dados de colunas em tabelas e modos de exibição. Variáveis ​​de XMLType podem ser usadas em procedimentos armazenados PL / SQL como parâmetros, valores de retorno e assim por diante. Você também pode usar XMLType em SQL, PL / SQL e Java (através de JDBC). No Oracle9 i Release 1 (9.0.1), XMLType foi suportado somente no servidor em SQL, PL / SQL e Java. No Oracle9 i Release 2 (9.2), XMLType também é suportado no lado do cliente através de SQL, Java e protocolos como FTP e HTTP / WebDav. São fornecidas várias funções úteis que operam em conteúdo XML. Muitos destes são fornecidos como SQL e membro funções de XMLType. Por exemplo, a função extract () extrai um nó específico (s) de uma instância XMLType. Você pode usar XMLType em consultas SQL da mesma forma que quaisquer outros tipos de dados definidos pelo usuário no sistema. Benefícios do tipo de dados XMLType e da API O tipo de dados XMLType e API fornece vantagens significativas. Ele permite operações SQL em conteúdo XML, bem como operações XML em conteúdo SQL: Versatile API. XMLType tem uma API versátil para desenvolvimento de aplicativos, pois inclui funções internas, suporte a indexação, navegação e assim por diante. XMLType e SQL. Você pode usar XMLType em instruções SQL combinadas com outras colunas e tipos de dados. Por exemplo, você pode consultar colunas XMLType e juntar o resultado da extração com uma coluna relacional e, em seguida, o Oracle pode determinar uma maneira ideal para executar essas consultas. Avaliação otimizada usando XMLType. O XMLType é otimizado para não materializar os dados XML em uma estrutura em árvore, a menos que seja necessário. Portanto, quando o SQL seleciona instâncias XMLType dentro de consultas, apenas um formulário serializado é trocado entre limites de função. Estes são explodidos em formato de árvore apenas quando operações como extract () e e xistsNode () são executadas. A estrutura interna de XMLType também é uma estrutura de árvore otimizada DOM-como. Indexação. O índice Oracle Text foi aprimorado para suportar colunas XMLType. Você também pode criar índices baseados em função nas funções existsNode () e extract () para acelerar a avaliação da consulta. Quando usar XMLType Use XMLType quando você precisar executar o seguinte: Consultas SQL em parte ou em todo o documento XML: As funções existsNode () e extract () fornecem as funções de consulta SQL necessárias sobre documentos XML. Tipagem forte dentro de instruções SQL e funções PL / SQL: A digitação forte implica que você garante que os valores passados ​​sejam valores XML e não qualquer string de texto arbitrária. Funcionalidade XPath fornecida pelas funções extract () e existsNode (): Note que XMLType usa o analisador e processador C XML incorporado e, portanto, fornece melhor desempenho e escalabilidade quando usado dentro do servidor. Indexação em pesquisas XPath em documentos: XMLType tem funções membro que você pode usar para criar índices baseados em função para otimizar pesquisas. Para proteger aplicações de modelos de armazenamento. O uso de XMLType em vez de CLOBs ou armazenamento relacional permite que os aplicativos migrem graciosamente para várias alternativas de armazenamento mais tarde sem afetar nenhuma das instruções de consulta ou DML no aplicativo. Preparar para futuras otimizações. A nova funcionalidade XML suportará XMLType. Uma vez que o banco de dados Oracle9 i é nativamente ciente de que o XMLType pode armazenar dados XML, podem-se fazer otimizações e técnicas de indexação melhores. Ao escrever aplicativos para usar XMLType. Essas otimizações e aprimoramentos podem ser facilmente alcançados e preservados em lançamentos futuros sem a necessidade de reescrever aplicativos. Armazenamento de dados XMLType na base de dados XML XML Os dados XMLType podem ser armazenados de duas maneiras ou uma combinação dos mesmos: Em objetos grandes (LOBs). LOB armazenamento mantém a precisão de conteúdo para o original XML (whitespaces e tudo). Aqui os documentos XML são armazenados como documentos completos como arquivos. Nesta versão, para armazenamento não baseado em esquema, XMLType oferece uma opção de armazenamento CLOB. Em versões futuras, o Oracle pode fornecer outras opções de armazenamento, como BLOBs, NCLOBS e assim por diante. Você também pode criar um armazenamento baseado em CLOB para armazenamento baseado em esquema XML. Quando você cria uma coluna XMLType sem qualquer especificação de esquema XML, uma coluna CLOB oculta é criada automaticamente para armazenar os dados XML. A coluna XMLType se torna uma coluna virtual sobre essa coluna CLOB oculta. Não é possível acessar diretamente a coluna CLOB no entanto, você pode definir as características de armazenamento para a coluna usando a cláusula de armazenamento XMLType. Em armazenamento estruturado (em tabelas e vistas). O armazenamento estruturado mantém a fidelidade DOM (Document Object Model). Aqui, os documentos XML são divididos (decompostos) em tabelas ou visões objeto-relacionais. XMLType alcança a fidelidade de DOM mantendo informações que objetos SQL ou Java normalmente não fornecem, como: Ordenação de elementos e atributos filho. Distinguir entre elementos e atributos. Conteúdo não estruturado declarado no esquema. Por exemplo, contentmixed ou ltanygt declarações. Dados não declarados em documentos de instância, como instruções de processamento, comentários e declarações de namespace. Suporte para tipos de dados XML básicos não disponíveis no SQL (Boolean, QName e assim por diante). Suporte para restrições XML (facetas) não suportadas diretamente pelo SQL, como listas enumeradas. Instâncias XMLType nativas contêm colunas ocultas que armazenam essas informações extras que não se encaixam perfeitamente no modelo de objeto SQL. Essas informações podem ser acessadas através de APIs em SQL ou Java, usando funções membro, como extractNode (). Alterar o armazenamento XMLType do armazenamento estruturado para LOB, ou vice-versa, é possível usando importação e exportação de banco de dados. O código do aplicativo não precisa ser alterado. Em seguida, você pode alterar opções de armazenamento XML ao ajustar seu aplicativo, uma vez que cada opção de armazenamento tem seus próprios benefícios. Prós e Contras das Opções de Armazenamento XML no Oracle XML DB A Tabela 4-1 resume algumas vantagens e desvantagens a serem consideradas ao selecionar a opção de armazenamento do Oracle XML DB. Tabela 4-1 Opções de Armazenamento XML no Oracle XML DB Exemplo 4-12 Especificando Restrições em Colunas XMLType impede inserções como: Exemplo 4-13 Usando ALTER TABLE para Alterar NOT NULL de Colunas XMLType Você também pode usar a instrução ALTER TABLE para alterar NOT NULL informações de uma coluna XMLType, da mesma forma que você faria para outros tipos de coluna: Você também pode definir restrições de verificação em colunas XMLType. Outros valores padrão não são suportados neste tipo de dados. Manipulação de dados XML em colunas / tabelas XMLType Uma vez que XMLType é um tipo de dados definido pelo usuário com funções definidas nele, você pode chamar funções em XMLType e obter resultados. Você pode usar XMLType onde quer que você use um tipo definido pelo usuário, incluindo para colunas de tabela, exibições, corpos de acionador e definições de tipo. Você pode executar as seguintes manipulações ou DML (Data Manipulation Language) em dados XML em colunas e tabelas XMLType: Inserindo dados XML em colunas / tabelas XMLType Você pode inserir dados em colunas XMLType das seguintes maneiras: Colunas XMLType só podem armazenar dados bem formados Documentos XML. Fragmentos e outros XML não-bem-formados não podem ser armazenados em colunas XMLType. Usando instruções INSERT Para usar a instrução INSERT para inserir dados XML em XMLType. Você precisa primeiro criar documentos XML para executar a inserção com. Você pode criar os documentos XML inseríveis da seguinte maneira: Usando construtores XMLType. Isso pode ser feito em SQL, PL / SQL e Java. Usando funções SQL como XMLElement (). XMLConcat (). E XMLAGG (). Isso pode ser feito em SQL, PL / SQL e Java. Exemplo 4-14 Inserindo Dados XML Usando createXML () com CLOB Os exemplos a seguir usam INSERT. SELECT eo construtor XMLType para primeiro criar um documento XML e, em seguida, inserir o documento nas colunas XMLType. Considere tabela poclobtab que contém um CLOB, poClob. Para armazenar um documento XML: Exemplo 4-15 Inserir dados XML usando uma instância XMLType Você pode inserir um documento XML de ordem de compra na tabela, poxmltab. Simplesmente criando uma instância XML a partir dos dados CLOB armazenados no outro poclobtab: Você também pode obter o valor CLOB de qualquer expressão, incluindo funções que podem criar CLOBs temporários ou selecionar CLOBs de outras tabelas ou visualizações. Exemplo 4-16 Inserindo dados XML usando XMLType () com String Este exemplo insere uma ordem de compra na tabela potab usando o construtor XMLType: Exemplo 4-17 Inserindo dados XML usando XMLElement () Este exemplo insere uma ordem de compra na tabela poxmltab gerando-a Usando a função XMLElement () SQL. Suponha que a ordem de compra seja uma exibição de objeto que contenha um objeto de ordem de compra. A definição completa do modo de pedido é dada em DBMSXMLGEN: Gerando uma ordem de compra a partir do banco de dados no formato XML. XMLElement () cria um XMLType do objeto de ordem de compra, que é então inserido na tabela poxmltab. Você também pode usar SYSXMLGEN () na instrução INSERT. Selecionando e Pesquisando Dados XML Você pode consultar dados XML de colunas XMLType das seguintes maneiras: Selecionando colunas XMLType através de SQL, PL / SQL ou Java Consultando colunas XMLType diretamente e usando extract () e existsNode () Para consultar o conteúdo XML. Consulte Indexação de colunas XMLType e Capítulo 7, Pesquisando dados XML com o Oracle Text. Funções SQL para Manipular Dados XML Funções SQL como existsNode (). extrair(). XMLTransform (). E updateXML () operam em dados XML dentro do SQL. O tipo de dados XMLType suporta a maioria delas como funções de membro. Você pode usar o estilo egoísta de invocação ou as funções SQL. Selecionando dados XML Você pode selecionar dados XMLType usando PL / SQL ou Java. Você também pode usar o getClobVal (), getStringVal (). Ou getNumberVal () para recuperar XML como um CLOB, VARCHAR ou NUMBER, respectivamente. Exemplo 4-18 Seleção de colunas XMLType usando getClobVal () Este exemplo mostra como selecionar uma coluna XMLType usando o SQLPlus: Consultando dados XML Você pode consultar dados XMLType e extrair partes dele usando as funções existsNode () e extract (). Ambas estas funções usam um subconjunto da recomendação XPath do W3C para navegar no documento. Usando expressões XPath para pesquisar documentos XML XPath é uma recomendação do W3C para navegar em documentos XML. O XPath modela o documento XML como uma árvore de nós. Ele fornece um rico conjunto de operações para caminhar na árvore e para aplicar predicados e funções de teste de nó. Aplicar uma expressão XPath a um documento XML pode resultar em um conjunto de nós. Por exemplo, / PO / PONO seleciona todos os elementos filho PONO sob o elemento raiz PO do documento. A Tabela 4-2 lista algumas construções comuns usadas no XPath. Tabela 4-2 Algumas Construções XPath Comuns Consultando Dados XML Usando Funções de Membro XMLType Você pode selecionar dados XMLType através de PL / SQL, OCI ou Java. Você também pode usar o método getClobVal (). GetStringVal (). Ou getNumberVal () para recuperar o XML como um CLOB, VARCHAR ou um número, respectivamente. Exemplo 4-19 Recuperando um documento XML como um CLOB Usando getClobVal () e existsNode () Este exemplo mostra como selecionar uma coluna XMLType usando getClobVal () e existsNode (): existsNode Função A sintaxe para a função existsNode () é descrita em Figura 4-2 e também como segue: Figura 4-2 Sintaxe existeNode () Descrição do texto da ilustração Existe a função existsNode () no XMLType verifica se a avaliação dada XPath resulta em pelo menos um único elemento XML ou nó de texto. Se assim for, ele retorna o valor numérico 1, caso contrário, ele retorna um 0. Namespace pode ser usado para identificar o mapeamento de prefixo (es) especificado no XPathstring para o (s) namespace (s) correspondente (s). Exemplo 4-20 Uso de existsNode () em XMLType Por exemplo, considere um documento XML como: Uma expressão XPath, como / PO / PNAME, resulta em um único nó. Portanto, existsNode () retornará 1 para esse XPath. Isto é o mesmo com / PO / PNAME / text (). Que resulta em um único nó de texto. Uma expressão XPath como / PO / POTYPE não retorna nenhum nós. Portanto, um existsNode () sobre isso retornaria o valor 0. Para resumir, a função de membro existsNode () pode ser usada em consultas e criar índices baseados em função para acelerar a avaliação de consultas. Exemplo 4-21 Usando o existsNode () para encontrar um nó O exemplo a seguir testa a existência do nó / Warehouse / Dock na coluna warehousespec caminho XML da tabela de amostra oe. warehouses: Usando Índices para Avaliar existsNode () Você pode criar Baseados em função usando existsNode () para acelerar a execução. Você também pode criar um índice CTXXPATH para ajudar a acelerar a pesquisa XPath arbitrária. Função extract () A função extract () é similar à função e xistsNode (). Ele aplica uma seqüência XPath VARCHAR2 com um parâmetro de namespace opcional e retorna uma instância XMLType que contém um fragmento XML. A sintaxe é descrita na Figura 4-3 e como segue: Figura 4-3 extração () Sintaxe Descrição de texto da ilustração extractxml. gif extract () em XMLType extrai o nó ou um conjunto de nós do documento identificado pela expressão XPath . Os nós extraídos podem ser elementos, atributos ou nós de texto. Quando extraídos, todos os nós de texto são recolhidos em um único valor de nó de texto. Namespace pode ser usado para fornecer informações de namespace para prefixos na seqüência XPath. O XMLType resultante da aplicação de um XPath através de extract () não precisa ser um documento XML bem formado, mas pode conter um conjunto de nós ou dados escalares simples em alguns casos. Você pode usar os métodos getStringVal () ou getNumberVal () em XMLType para extrair esses dados escalares. Por exemplo, a expressão XPath / PO / PNAME identifica o elemento PNAME dentro do documento XML mostrado anteriormente. A expressão / PO / PNAME / text (). Por outro lado, refere-se ao nó de texto do elemento PNAME. O último ainda é considerado um XMLType. Em outras palavras, extrair (poDoc, / PO / PNAME / text ()) ainda retorna uma instância de XMLtype, embora a instância possa realmente conter apenas texto. Você pode usar getStringVal () para obter o valor de texto como um resultado VARCHAR2. Use a função de teste de nó de texto () para identificar nós de texto em elementos antes de usar o método getStringVal () ou getNumberVal () para convertê-los em dados SQL. Não ter o nó text () produziria um fragmento XML. Por exemplo, expressões XPath: / PO / PNAME identifica o fragmento ltPNAMEgtPO1lt / PNAMEgt / PO / PNAME / text () identifica o valor de texto PO1 Você pode usar o mecanismo de índice para identificar elementos individuais no caso de elementos repetidos em um documento XML. Por exemplo, se você tiver um documento XML como: // PONO1 para identificar o primeiro elemento PONO (com valor 100). // PONO2 para identificar o segundo elemento PONO (com valor 200). O resultado de extract () é sempre um XMLType. Se aplicar o XPath produz um conjunto vazio, em seguida, extract () retorna um valor NULL. Assim, a função de membro extract () pode ser usada de várias maneiras, incluindo o seguinte: Extraindo valores numéricos nos quais os índices baseados em função podem ser criados para acelerar o processamento Extraindo expressões de coleção a serem usadas na cláusula FROM de instruções SQL Extraindo Fragmentos a serem posteriormente agregados para produzir documentos diferentes Exemplo 4-22 Usando extract () para extrair o valor de um nó Este exemplo extrai o valor de node, / Warehouse / Docks. De coluna, warehousespec na tabela oe. warehouses: função extractValue () A função extractValue () toma como argumentos uma instância XMLType e uma expressão XPath. Ele retorna um valor escalar correspondente ao resultado da avaliação XPath na instância XMLType. A sintaxe extractValue () também é descrita na Figura 4-4. Documentos baseados em esquema XML. Para documentos baseados no esquema XML, se o Oracle9 i pode inferir o tipo do valor de retorno, então um valor escalar do tipo apropriado é retornado. Caso contrário, o resultado é do tipo VARCHAR2. Documentos não baseados em esquemas. Para documentos não baseados em esquemas XML, o tipo de retorno é sempre VARCHAR2. ExtractValue () tenta inferir o tipo de retorno adequado do esquema XML do documento. Se o XMLType não estiver baseado em esquema ou o tipo de retorno apropriado não puder ser determinado, o Oracle XML DB retornará um VARCHAR2. Figura 4-4 Sintaxe de extractValue () Descrição de texto da ilustração extractvalue. gif A Função de atalho extractValue () permite extrair o valor desejado mais facilmente do que usando a função de extração equivalente. É uma facilidade de uso e função de atalho. Então, em vez de usar: você pode substituir extract (). GetStringVal () ou extrair (). Getnumberval () com extractValue () da seguinte forma: Com extractValue () você pode deixar o texto (). Mas SOMENTE se o nó apontado pela parte do caminho tiver apenas um filho e esse filho for um nó de texto. Caso contrário, é emitido um erro. A sintaxe extractValue () é a mesma que extract (). ExtractoValor () Características extratoValor () tem as seguintes características: Ele sempre retorna somente conteúdo escalar, como NUMBER. VARCHAR2 e assim por diante. Ele não pode retornar nós XML ou conteúdo misto. Ele gera um erro na compilação ou tempo de execução se ele obtém nós XML como resultado. Ele sempre retorna VARCHAR2 por padrão. Se o valor dos nós for maior do que 4K, ocorrerá um erro de tempo de execução. Na presença de informações de esquema XML, em tempo de compilação, extractValue () pode retornar automaticamente o tipo de dados apropriado com base nas informações do esquema XML, se ele pode detectá-lo em tempo de compilação da consulta. Por exemplo, se as informações de esquema XML para o caminho / PO / POID indicam que este é um valor numérico, então extractValue () retorna um NUMBER. Se o XPath identifica um nó, ele automaticamente obtém o conteúdo escalar de seu filho de texto. O nó deve ter exatamente um filho de texto. Por exemplo: extrai o texto filho do PNAME. Isso é equivalente a: Exemplo 4-23 Extraindo o Valor Escalar de um Fragmento XML Usando extractValue () O exemplo a seguir toma como entrada os mesmos argumentos que o exemplo para extract () Function. Em vez de retornar um fragmento XML, como extract () faz, ele retorna o valor escalar do fragmento XML: ExtractValue () extraiu automaticamente o texto filho do elemento Docks e retornou esse valor. Você também pode escrever isso usando extract () da seguinte maneira: Mais exemplos SQL que consulta XML Os exemplos SQL a seguir ilustram maneiras que você pode consultar XML. Exemplo 4-24 Consultando XMLType Usando extract () e existsNode () Suponha que a tabela poxmltab, que contém a identificação da ordem de compra e as colunas XML de ordem de compra, assume que os seguintes valores são inseridos na tabela: Agora você pode extrair a tabela numérica Valores para os números de ordem de compra usando extract (): Aqui extract () extrai o conteúdo de tag, número de ordem de compra, PONO. ExistsNode () encontra nós onde PONO existe como um filho de PO. Aqui a função text () é usada somente para retornar os nós de texto. A função getNumberVal () pode converter somente valores de texto em quantidade numérica

No comments:

Post a Comment