Sto usando colonna XMLType in alcuni dei miei tabella di database Oracle. In precedenza (in 11.2.0.2) il tipo di archiviazione predefinito considerato è CLOB. Quindi, se si esegue una query per le colonne XMLType, posso vedere il contenuto della colonna come stringa XML. Ma quando mi calo e ricreare tutte le tabelle e inserito alcuni dati, non ho potuto ottenere il contenuto delle colonne XMLType. Si Simpley visualizzare il XMLType nel valore cloumn. Ho un dubbio che se il tipo di archiviazione è chaged in Binary XML Così ho rilasciare il seguente dichiarazione alter: Si prega di notare che ci sono già alcuni dati presenti nella tabella. Evento dopo quando elimino e inserire una riga, il contenuto sta mostrando come XMLType. Sto usando strumento di interfaccia utente gli sviluppatori SQL. Qualcuno può suggerire un modo per risolvere questo problema Ok, ora abbiamo deciso che ci sarà memorizzare il contenuto della colonna XMLType più sicuro file XML binario. Così abbiamo tabella come questa: Il colum XMLType viene visualizzato come SYS. XMLType in SQL Developer. Così come ottenere il contenuto del XML binario SELEZIONARE x. ID, x. Vid, x. details. getCLOBVal () da XMYTYPETESTx dove x. ID100000 È possibile che query funziona per me documentazione finally. The Oracle sostiene che memorizza XMLType più compatto come XML binario che come CLOB. Ma come faccio a sapere quanto spazio è presa dal XML binario Così, vsize sembra essere la dimensione di una sorta di puntatore o LOB, e getclobval scompatta il file XML binario in testo. Ma per quanto riguarda le dimensioni del XML binario si prega di aiutare lo stoccaggio, la dimensione della tabella è 340GB, quindi vale la pena guardare in opzioni di archiviazione. chiesto 15 luglio 14 alle 17:41 Beh, un segmento non ha nulla a che fare con una fila in quanto tale. Un segmento è o una tabella, tabella delle partizioni, indice, LOB. La cosa importante è quello di memorizzare più di 4k al suo interno, in modo che il pallonetto won39t essere conservato quotin linequot il che significa che all'interno del blocco database effettivo della riga stessa, ma viene memorizzato in un segmento LOB quotout linequot. ndash gvenzl 22 luglio 14 alle 13:00 problema rappresentante, non ha permesso di inviare commenti è voluto dire tra questioni come ho capito. l'unica somiglianza è di stoccaggio problema di spazio, pensato che potrebbe essere utile per la stima indovinare. voi non ha ancora accennato il tipo di dati che si sta per memorizzare bXML. spacchetta l'XML binario in testo Se XML puri poi dipende da quello del compressore che si intende utilizzare. Solitamente lzmagzip viene utilizzato per compressione binaria. Forse scrivo di cose troppo ovvie, ma questo è tutto quello che ho know5 Utilizzando Binary XML per Java Introduzione alla Binary XML per Java Binary XML è stato introdotto in Oracle 11 g Release 1 (11.1). Binary XML permette di codificare e decodificare tra testo XML e XML binario compresso. Per l'efficienza, le API DOM e SAX sono forniti in cima XML binario per il consumo diretto da parte delle applicazioni XML. Compressione e decompressione di frammenti di un documento XML facilitano elaborazione incrementale. Questo capitolo presuppone che si ha familiarità con il parser XML per Java. Formato binario bagagli XML Un'opzione stoccaggio XMLType è previsto per consentire la memorizzazione di documenti XML nel nuovo formato binario. La nuova opzione di archiviazione è in aggiunta alle opzioni di archiviazione CLOB e relazionali a oggetti esistenti. tabelle e colonne XMLType possono essere creati utilizzando la nuova opzione di archiviazione XML binario. I dati XML in formato binario possono essere consultati e manipolati da tutti gli operatori esistenti di SQL e le funzioni e le API PLSQL che operano su XMLType. Binary XML è una codifica compatta XML-schema-aware dei dati XML, ma può essere utilizzato con i dati XML che non si basa su uno schema XML. È inoltre possibile utilizzare XML binario per i dati XML, che è al di fuori del database (in un'applicazione client-side, per esempio). Binary XML permette la codifica e la decodifica di documenti XML, dal testo al binario e al testo. Binary XML è post-parsing XML persistente con tipi di dati di database nativi. Binary XML fornisce storage più efficiente banca dati, l'aggiornamento, l'indicizzazione, le prestazioni delle query, e l'estrazione frammento di stoccaggio non strutturato. E 'possibile memorizzare i dati e metadati insieme o separatamente. Binary XML Processori Un processore XML binario è un termine astratto per descrivere un componente che elabora e trasforma formato XML binario in testo e XML di testo in formato XML binario. Essa può anche fornire una cache per memorizzare schemi. La classe base per un processore XML binario è BinXMLProcessor. Un processore XML binario può avere origine o ricevere richieste di protocollo di rete. I modelli per l'utilizzo di XML Binary Ci sono diversi modelli per l'utilizzo di XML binario nelle applicazioni. In primo luogo, ecco un glossario di termini: Glossario per Binary XML Ecco un glossario di termini per l'utilizzo di XML binario: doc-id. Ciascun documento XML codificato è identificato da un unico doc-id. O è un 16-byte di ID utente globali (GUID) o una sequenza di byte opaca come un URL. tavolo token. Quando un documento di testo XML non ha un schema associato con esso, allora un token (o simbolo) tabella viene utilizzata per minimizzare lo spazio per gli elementi ripetuti. id vocabolario. Può essere uno schema-id o uno spazio dei nomi di identificazione URI per un tavolo token. schema-id. Un identificatore univoco per binario opaca uno schema ambito al processore XML binario. Lo schema-ID è unico per un processore XML binario e è identificabile solo nell'ambito di tale processore XML binario. Lo schema-id rimane costante anche quando lo schema è evoluto. Uno schema-id rappresenta l'intero set di documenti dello schema, tra cui schemi importati e inclusi. versione dello schema. Ogni schema con annotazioni ha un numero di versione ad esso associati. Il numero di versione è specificata come parte delle annotazioni a livello di sistema. Esso viene incrementato dal processore XML binario quando uno schema è evoluto (cioè una nuova versione dello stesso schema è registrato con il processore XML binario). validità parziale. Binary schema di codifica flusso XML utilizzando implica almeno validità parziale rispetto allo schema. validità parziale implica alcuna convalida per le chiavi uniche, keyrefs, ID, o IDREFS. Standalone modello Questo è il più semplice scenario di utilizzo per XML binario. Vi è un singolo processore XML binario. L'unico repository disponibile è la cache in memoria locale vocabolario che non è permanente ed è disponibile solo per la durata del processore XML binario. Tutti gli schemi devono essere registrati in anticipo con il processore XML binario prima della codifica, o possono essere registrati automaticamente quando il processore XML vede il xsi: tag schemaLocation. Per la decodifica, lo schema è già disponibile nella cache vocabolario. Se la decodifica avviene in un diverso processore XML binario, vedere i diversi modelli di Web Services descritti qui. Client-Server Modello In questo scenario, il processore XML binario è collegato a un database utilizzando JDBC. Si presume che lo schema è registrato con il database prima della codifica. Ecco un esempio di come realizzare che: A meno che non sia specificato una connessione separata per i dati (utilizzando associateDataConnection ()) si presume che tutti i dati e metadati vengono memorizzati e recuperati utilizzando una singola connessione per la codifica e la decodifica. Web Services Modello con Repository In questo scenario ci sono più client, ogni esecuzione di un processore XML binario. Un cliente fa la codifica e l'altro client effettua la decodifica. C'è un repository comune (che non è necessariamente un database) collegato a tutti i clienti per la conservazione dei metadati. Può essere un file di sistema o di qualche altro repository. Il primo processore XML binario assicura che lo schema è registrato con il repository prima di eseguire la codifica, o lo schema potrebbe essere registrati automaticamente utilizzando il xsi: tag schemaLocation al momento della codifica. Il secondo processore XML binario viene utilizzato per la decodifica, non è a conoscenza della posizione dello schema, e recupera lo schema dal repository. Se il primo processore XML binario registra uno schema e il secondo binario processore XML registersthe stesso schema nel repository, il processore XML binario non viene compilato lo schema, ma semplicemente restituisce il vocabolario-id dello schema compilato esistente nella cache del vocabolario locale. Il BinXMLProcessor non è thread-safe, in modo più thread o client che accedono al repository necessità di implementare il proprio sistema di sicurezza thread. Web Services Modello Senza Repository In questo scenario, ci sono più client, ogni esecuzione di un processore XML binario. Codifica e decodifica possono accadere su diversi clienti. Non vi è alcun repository di metadati comune. L'encoder deve garantire che i dati binari passati al client successivo è indipendente schema: cioè, ha definizioni linea di token. Ciò può essere ottenuto impostando schemaAware falso e inlineTokenDefs vero. utilizzando il metodo setProperty (), durante la codifica. Mentre decodifica, non c'è schema richiesto. Le parti di Binary XML per Java Java XML funzionalità binario ha tre parti: la codifica XML Binary - L'encoder XML binario converte XML 1.0 Infoset XML binario. decodifica XML Binary - Il decoder converte XML binario XML binario Infoset XML. Binary gestione vocabolario XML, che comprende la gestione dello schema e la gestione token. Binary XML Codifica L'encoder è stato creato dal BinXMLStream. Esso prende in input il testo XML ed emette il binario XML codificato al BinXMLStream è stato creato da. L'encoder legge il testo XML utilizzando lo streaming SAX. La codifica del testo XML si basa sui risultati del parsing XML. Impostare il flag schemaAware sul codificatore che specifica se la codifica è schema-aware o schema-less. Per la codifica dello schema-aware, l'encoder determina se lo schema con il particolare URL schema è stato registrato con il gestore vocabolario. Per un archivio-based o un processore basato su database, l'encoder interroga il repository o il database per lo schema compilato in base alla URL schema. Se lo schema è disponibile nel database, è prelevato dalla repository o database in formato XML binario e registrato con il gestore del vocabolario locale. Il vocabolario è schema. Impostare anche un flag per indicare che i risultati di codifica in un XML Flusso binario che è indipendente di uno schema. In questo caso, il flusso XML binario risultante contiene le definizioni tutti token di linea e non dipende schema o insiemi di token esterni. Se la codifica è schema-consapevole, il codificatore utilizza le informazioni datatype dall'oggetto schema per la codifica più efficiente del flusso SAX. C'è un tipo di dati codifica di default associato ad ogni schema tipo di dati built-in. Binary flusso XML codifica utilizzando uno schema implica almeno validità parziale rispetto allo schema (per la validità parziale non vi è alcuna convalida per chiave univoca, o keyref, o l'ID o DREFs). Se i dati si caratterizza per essere completamente validi rispetto ad uno schema, i negozi codificati flusso XML binario queste informazioni. Oracle XML DB sviluppatori Guida per le tabelle dei tipi di dati codifica binaria e le loro applicazioni da tipi di dati schema XML Se non c'è schema associato con l'XML di testo, quindi ID interi token vengono generati per ripetuti elementi nel testo XML. Creazione di una tabella di token di ID token e definizioni token è una tecnica di compressione importante. Le definizioni di token sono memorizzate le tabelle come token nella cache vocabolario. Se la proprietà per le definizioni in linea di token è impostato, allora le definizioni di token sono presenti in linea. Un'altra proprietà sul encoder è specificando PSVI informazioni (Post schema Validated Infoset) come parte del flusso binario. Se questa è impostata su true poi informazioni PSVI si può accedere utilizzando le API di estensione XDK per PSVI sul DOM. Se PSVI vero allora l'XML di input è pienamente convalidato rispetto allo schema. Se PSVI è falsa, allora le informazioni PSVI non è incluso nel flusso binario di uscita. Il valore predefinito è falso. Binary XML decodifica del decodificatore XML binario converte XML binario Infoset XML. Il decoder è stato creato dal BinXMLStream si legge XML binario da questo flusso e uscite SAX eventi o fornire un InfosetReader API di stile di tiro per la lettura del codice XML decodificato. Se uno schema è associato al BinXMLStream. il decoder XML binario recupera l'oggetto schema associato dalla cache vocabolario usando il vocabolario id prima di decodifica. Se lo schema non è disponibile nella cache vocabolario, e le informazioni di connessione al server è disponibile, allora lo schema è recuperato dal server. Se nessun schema è associato con BinXMLStream. poi le definizioni token può essere sia in linea nel BinXMLStream o conservati in un set di token. Se segni di un corrispondente spazio dei nomi non vengono memorizzati nella cache del vocabolario locale, poi il set di token è recuperato dal repository. Binary XML Vocabolario Gestione I processori XML binari sono di diversi tipi a seconda di dove si trovano i metadati (schema o set gettone) - sia locale processore XML binario o repository processore XML binario. Gestione dello schema per i metadati di persistenza, si consiglia di utilizzare il processore DB Binary XML. In questo caso, gli schemi e set token sono registrati con il database. Il gestore del vocabolario recupera lo schema o set di token dal database e memorizza nella cache nella cache vocabolario locale per scopi di codifica e decodifica. Se è necessario utilizzare un repository di metadati persistente che non è un database, quindi è possibile collegare il proprio repository di metadati. È necessario implementare l'interfaccia per la comunicazione con questo repository, BinXMLMetadataProvider. Schema Registrazione Registrati schemi a livello locale con il processore locale XML binario. Il processore locale XML binario contiene un gestore di vocabolario che mantiene tutti gli schemi presentati dall'utente per tutta la durata della sua esistenza. Il manager vocabolario associato con un processore locale XML binario non prevede schema di persistenza. Se si registra lo stesso schema (stessa posizione dello schema e lo stesso spazio dei nomi di destinazione), allora lo schema non viene analizzato, e il vocabolario ID esistente viene restituito. Se un nuovo schema con lo stesso spazio dei nomi di destinazione e una posizione schema diverso è registrato quindi la definizione dello schema esistente è aumentata con le nuove definizioni di schema o risultati di errore di conflitto. Schema Identificazione Ogni schema viene identificato da un id vocabolario. L'id vocabolario è nel campo di applicazione del processore ed è unico all'interno del processore. Qualsiasi documento che convalida con uno schema è necessario per convalidare con una versione più recente dello schema. Schema Annotazioni annotazioni Binary XML possono essere visualizzati solo all'interno della ltxsd: elemento appInfogt in uno schema. Ci sono due categorie di annotazioni dello schema - a livello utente ea livello di sistema. Il manager vocabolario interpreta questi al momento della registrazione dello schema. Tutti gli altri tipi di annotazioni (per esempio, le annotazioni relative di database, viene ignorato). A livello di utente annotazioni Questi sono specificati dall'utente prima della registrazione. encodingType - Questo può essere utilizzato all'interno di un xsd: element. xsd: attributo o xsd: elementi simpleType. Essa indica il tipo di dati da utilizzare per la codifica del valore node dell'elemento o attributo particolare. Per le stringhe, c'è solo il supporto per la codifica UTF8 in questa versione. A livello di sistema annotazioni Il gestore vocabolario aggiunge questi al momento della registrazione non si possono sovrascrivere. Token set gestione token possono essere recuperati dal repository database o metadati, memorizzati nella cache nel gestore del vocabolario locale e utilizzato per la decodifica. Durante la codifica, set di token può essere spinto al repository per la persistenza. Definizioni token possono anche essere inclusi come parte del flusso XML binario impostando un flag sull'encoder. Utilizzando classe Java Binary XML Pacchetto A BinXMLStream rappresenta il flusso XML binario. Le diverse posizioni di memorizzazione definite per il flusso XML binario sono: InputStream - flusso per la lettura. OutputStream - flusso per la scrittura. URL - flusso per la lettura. File - stream per leggere e scrivere. BLOB - flusso per la lettura e la scrittura. Byte array - flusso per la lettura e la scrittura. In memoria - flusso per la lettura e la scrittura. L'oggetto BinXMLStream specifica il tipo di archiviazione durante la creazione. Un oggetto BinXMLStream può essere creato da una fabbrica BinXMLProcessor. Questa fabbrica può essere inizializzato con una connessione JDBC (per accedere ai metadati a distanza), pool di connessioni, URL o un PageManagerPool (per pigri archiviazione in memoria). BinXMLEncoder e BinXMLDecoder possono essere creati dal BinXMLStream per la codifica e la decodifica. 1. Ecco un esempio di creazione di un processore senza un repository, registrando uno schema, che codifica per eventi SAX XML in formato binario schema-aware, e memorizzare in un file: Oltre a ottenere il ContentHandler. è anche possibile ottenere gli altri gestori, come ad esempio: utilizzare hdlr nell'applicazione che genera gli eventi SAX. 2. Qui è un esempio di creazione di un processore con un archivio dati, decodificare un flusso binario schema-consapevoli e leggere il XML decodificato utilizzando tirare API. Lo schema è prelevato dalla repository di database per la decodifica. Utilizzare XmlReader per leggere XML in uno stile di tiro dal decoder. Binary XML Encoder L'encoder prende input XML, che viene analizzato e letto con eventi SAX, ed emette XML binario. Schema-meno Opzione È possibile specificare lo schema-aware o l'opzione dello schema-less prima della codifica. Il valore predefinito è la codifica dello schema-less. Se l'opzione dello schema-aware è impostato, allora la codifica è fatta sulla base dello schema (s) specificato nel documento di istanza. Lo schema annotato (s) utilizzato per la codifica è richiesto anche al momento della decodifica. Se viene specificata l'opzione dello schema-less, allora la codifica è indipendente da schema (s), ma i gettoni sono in linea per impostazione predefinita. Per ignorare l'impostazione predefinita, impostare Inline-token falso. Inline-token è possibile impostare l'opzione per creare un flusso XML binario con le definizioni in linea di token prima della codifica. Se inlining è spento, che è necessario assicurarsi che i processori per l'encoder o decoder utilizzano lo stesso repository di metadati. La bandiera Inline-token viene ignorato se l'opzione dello schema-aware è vero. Per impostazione predefinita, le definizioni di token è in linea. Figura 5-1 Binary XML codifica binaria XML Decoder Il decoder XML binario prende flusso XML binario come input e genera eventi SAX come output, o fornisce un'interfaccia tirare per leggere il codice XML decodificato. Nel caso di flusso XML binario schema-consapevole, il decodificatore XML binario interagisce con il gestore vocabolario per estrarre le informazioni dello schema. Se il gestore del vocabolario non contiene lo schema richiesto, e il processore è di tipo binario DB XML con una connessione JDBC valida, allora lo schema remoto è prelevato dalla banca dati o il repository di metadati in base all'ID del vocabolario nel flusso XML binario essere decodificato. Allo stesso modo, l'insieme di definizioni token può essere recuperati dal database o il repository di metadati. Figura 5-2 Binary XML Schema Decoder Registrazione Ecco il flusso di questo processo: se il vocabolario è uno schema XML che prende il testo schema XML come input. Il annotator schema annota il testo schema con annotazioni a livello di sistema. Lo schema potrebbe già avere alcune annotazioni livello utente. Lo schema annotato risultante viene elaborato dal Costruttore schema per costruire un oggetto schema XML. Questo oggetto schema XML è memorizzato nella cache vocabolario. La cache vocabolario assegna un ID vocabolario unico per ogni oggetto dello schema XML, che viene restituito come output. La rappresentazione DOM annotata dello schema viene inviato al codificatore XML binario. Risoluzione xsi: schemaLocation Durante la codifica, se schemaAware è vero e la ImplcitSchemaRegistration proprietà è true. poi la prima XSI: tag presenti schemaLocation nell'elemento principale di un documento di istanza XML registra automaticamente tale schema nel gestore del vocabolario locale. Tutti gli altri tag schemaLocation non sono esplicitamente registrati. Se il processore è il database-oriented, allora lo schema è anche registrato nel database allo stesso modo per ogni processore in base repository di metadati. Se la codifica è impostata su schemaAware è falso o ImplcitSchemaRegistration è falso. poi tutti xsi: tag schemaLocation vengono ignorati dal codificatore. Binary XML DB Un DBBinXMLMetadataProvider oggetto o è istanziato con una connessione JDBC dedicato o un pool di connessione per accedere alle informazioni del vocabolario come schema e set di token. Il processore è anche associata a uno o più connessioni dati per accedere ai dati XML. Un processore XML binario può comunicare con il database di vari tipi di operazioni binarie XML che coinvolgono lo stoccaggio e il recupero di schemi XML binari, set di token, e flussi XML binari. la comunicazione del database è coinvolto nei seguenti modi: Estrazione compilato binario XML Schema utilizzando l'id di vocabolario o l'URL dello schema Per recuperare uno schema XML binario compilato per la codifica, il database viene interrogato in base alla URL schema. Per decodificare lo schema XML binario, recuperare dal database basato sul vocabolario id. Memorizzazione di schema XML binario noncompiled utilizzando l'URL dello schema e recuperando il vocabolario id. Quando il xsi: si incontra tag schemaLocation durante la codifica, lo schema è registrato nella banca dati per la memorizzazione persistente nel database. L'ID vocabolario associato con lo schema, così come la versione binaria dello schema compilato viene recuperato indietro dal database l'oggetto dello schema compilato è costruito e memorizzato nella cache locale utilizzando l'id vocabolario restituiti dal database. Recupero di un gettone binario impostato utilizzando URL namespace. Se un flusso binario da decodificare è associato con tavoli gettone per la decodifica, questi vengono recuperati dal database utilizzando la connessione metadati. Memorizzazione set di token binario utilizzando URL namespace Se il testo XML è stato codificato, senza uno schema, poi si traduce in una serie di token di definizioni simboliche. Queste tabelle di token possono essere memorizzati persistente nel database. Il collegamento dei metadati viene usato per trasferire il token impostato al database. flusso XML binario con opzione di memorizzazione a distanza E 'vostra responsabilità di creare una tabella che contiene una colonna XMLType con XML binario per memorizzare il risultato di codifica e recuperare il XML binario per la decodifica. La comunicazione con la banca dati può essere realizzato con SQLNet e JDBC. Fetch l'oggetto XMLType dal risultato di output set di query JDBC. Il BinXMLStream per la lettura dei dati binari o di salvare i dati binari può essere creato dall'oggetto XMLType. La classe XMLType deve essere estesa per supportare la lettura e la scrittura di dati XML binari. Persistent Storage di metadati un manager vocabolario locale e della cache memorizza informazioni metadati nella memoria per la vita del BinXMLProcessor. Inserire il proprio storage back-end per i metadati implementando l'interfaccia BinXMLMetadataProvider e collegarlo alla BinXMLProcessor. Attualmente solo un fornitore di metadati per ogni processore è supportato. È necessario codificare un FileBinXMLMetadataProvider che implementa l'interfaccia BinXMLMetadataProvider. L'encoder e decoder utilizza queste API per accedere ai metadati dal deposito di back-end persisteva. Impostare le informazioni di configurazione per la memorizzazione permanente: per esempio, directory principale nel caso di un file system in classe FileBinXMLMetadataProvider. Un'istanza FileBinXMLMetadataProvider e collegarlo al BinXMLProcessor. Scripting in questa pagina migliora la navigazione dei contenuti, ma non cambia il contenuto in alcun modo.
No comments:
Post a Comment