|

Oracle XML Db è un insieme
completo di tecnologie per l'archiviazione ed il recupero di dati XML.
In altri termini si tratta di un vero e proprio dbms nativo XML integrato
all'interno di Oracle 9i release 2.
XML Db non è quindi un qualcosa di esterno che comunica con il
dbms vero e proprio, ma un estensione del dbms che integra coerentemente
l'approccio XML con quello tradizionale Sql.
Proprio la riuscita integrazione tra l'approccio
nativo XML e il motore tradizionale di Oracle può essere considerato
l'aspetto più interessante di XML Db. Si tratta infatti dell'unico
sistema presente sul mercato dei dbms che incapsula un approccio nativo
a XML all'interno di un potente dbms tradizionale: potenzialmente ciò
consente di avere contemporaneamente i vantaggi dei dbms nativi XML e
quelli dei prodotti tradizionali relazionali (object-relational).
Le parole chiavi per comprendere le caratteristiche
ed il funzionamento dell XML Db sono due: XMLType e XML Db Repository.
L' XMLType è un vero e proprio
datatype Oracle studiato appositamente per la memorizzazione di documenti
XML all'interno di attributi relazionali. È quindi possibile strutturare
la tupla di una tavola relazionale dichiarando uno o più suoi attributi
di tipo XMLType per poi inserirvi e estrarvi direttamente dati XML. È
anche possibile definire tavole di tipo XMLType: in questo caso ogni tupla
della tavola è costituita da un valore di tipo XMLType. In fase
di definizione della tavola (sia che contenga attributi XMLType, sia che
sia essa stessa di tipo XMLType) è possibile specificare, per ogni
XMLType dichiarato, lo schema XML associato: per fare questo è
necessario avere già registrato lo schema XML all'interno dell
XML Repository.
L'associazione di uno schema XML ad un XMLType è un operazione
che ha notevoli conseguenze sulle modalità di gestione dei dati
XML, in questo caso infatti sono disponibili le seguenti funzionalità:
Validazione rispetto allo schema: tutti i documenti XML inseriti possono
essere se desiderato dall'utente validati automaticamente rispetto allo
schema, mediante la scrittura di un constraint o di un trigger che richiama
un metodo apposito dell'XMLType.
Modalità di archiviazione strutturata object-relational:
è disponibile una particolare modalità di archiviazione
e gestione dei dati XML (già attivata per default in caso di utilizzo
di schemi), basata sull'applicazione automatica di un mapping object-relational.
In questo caso infatti i dati XML verranno spezzettati, strutturati (conformemente
allo schema XML) all'interno di apposite tavole (oggetti Object-relational)
e attributi creati e gestiti da Oracle. Il tutto in modo assolutamente
trasparente all'utente, che potrà quindi ignorare totalmente l'esistenza
di queste tavole, e considerare soltanto l'esistenza dell'XMLType. Questa
operazione presuppone un lavoro di mapping di tipo object-relational che
viene svolto internamente da Oracle in modo totalmente automatico: è
anche possibile personalizzare il mapping commentando con un linguaggio
apposito gli schemi XML.
L'altra modalità di archiviazione dei documenti XML in XMLType
(l'unica utilizzabile in caso di non utilizzo di schemi XML) consiste
nella memorizzazione del documento XML così come è direttamente
in formato testo, in un attributo nascosto di tipo Clob. La differenza
importante rispetto alla memorizzazione esplicita in un Clob è
che Oracle sa che si tratta di dati XML e può quindi effettuare
alcune ottimizzazioni e mettere a disposizione dell'utente Api per la
manipolazione XML (restituzione e gestione del Dom, trasformazioni Xslt,
ecc.) e metodi per l'accesso ai dati XML mediante XPath (quali extract,
extractValue, existsNode, utilizzabili anche all'interno di statement
Sql). La cosa molto interessante è che le Api XMLType per l'accesso
e la gestione dei dati XML (disponibili per Java e per Pl/Sql) sono sostanzialmente
le stesse sia in caso di memorizzazione strutturata (tramite Schema) che
non strutturata.
Le principali differenze di utilizzo esistenti
in caso di utilizzo della modalità strutturata sono:
1) la necessità di specificare,
in alcune chiamate, informazioni relative al namespace come parametro
aggiuntivo,
2) la possibilità in più
di definire alcuni vincoli tipicamente relazionali quali quello di chiave
esterna.
Oracle XML Db Repository è invece
un repository per documenti XML organizzato gerarchicamente per directory
come un file system. I dati ivi contenuti sono memorizzati in risorse
(sono considerate tali sia le cartelle sia i file, che possono essere
documenti XML ma anche file binari). Ogni risorsa è identificata
da uno o più percorsi (path name) ed ha associato un insieme estendibile
di metadati (proprietario, data di creazione, ecc.). I documenti organizzati
nel repository sono memorizzati all'interno dell'XML Db.
L'accesso alle risorse del repository è
possibile in diversi modi:
Tramite le due viste Sql RESOURCE_VIEW e PATH_VIEW e appositi
operatori per Sql (UNDER_PATH, DEPTH)
Tramite le apposite Api Pl/Sql (DBMS_XDB)
Tramite le Api JNDI per Java
Tramite FTP, HTTP o WebDav (grazie a quest ultimo è possibile
navigare nella struttura gerarchica come in un file system direttamente
da Windows Explorer o Internet Explorer)
Tra le altre cose la gestione delle risorse
presenti nel repository comprende un meccanismo di Access Control List
(che permette di delineare in modo preciso chi e come può accedere
ad ognuna di esse) e di funzionalità per il controllo del versioning
(in caso di update di una risorsa è possibile memorizzare le versioni
precedenti e mantenere il controllo sul numero della versione).
È bene precisare che sia i documenti
inseriti negli XMLType, sia quelli organizzati nel XML Db Repository sono
in realtà archiviati in un unico deposito, l'XML Db, e non si tratta
quindi di due contenitori separati. Lo stesso documento XML può
essere memorizzato in un XMLType e contemporaneamente indirizzato nell'XML
Db repository, anche più volte in punti diversi della gerarchia.
Altre funzionalità e caratteristiche
Le funzionalità di supporto a XML
descritte nel precedente paragrafo sono soltanto le principali disponibili
nella nuova versione di Oracle. Di seguito saranno descritte ulteriori
caratteristiche dell'XML Db.
Un aspetto importante della gestione delle basi di dati XML è la
capacità di preservare in ogni suo aspetto il documento originale
XML, mantenendolo il più simile possibile a come era prima di essere
stato inserito nella base di dati. In proposito Oracle offre due diversi
livelli di fedeltà:
Totale Document Fidelity, se i dati sono memorizzati in XMLType
in modo non strutturato. In questo caso è offerta quindi la garanzia
che il documento estratto dalla base di dati è assolutamente
identico a quello in essa precedentemente archiviato (sono preservati
anche i singoli spazi).
Dom Fidelity , se i dati sono memorizzati in XMLType in modo
strutturato (utilizzando gli schemi). In questo caso è offerta
soltanto la garanzia che il Dom del documento estratto dalla base di
dati è assolutamente identico a quello del documento in essa
precedentemente archiviato. Non sono quindi preservati gli spazi, ma
sono invece memorizzate le informazioni relative all'ordine degli elementi,
ai commenti e alle istruzioni di processing.
Un altro aspetto importante nella gestione
di basi di dati XML, è la possibilità di creare indici per
velocizzare l'accesso in fase di interrogazione. In Oracle vi sono diversi
tipi di indici utilizzabili, ciascuno ottimizzato per una specifica tipologia
di interrogazione possibile, tra questi vi sono gli indici basati sul
risultato dell'applicazione di una funzione. Le funzionalità di
indicizzazione sono più estese in caso di archiviazione strutturata
dei documenti XML. Per quanto riguarda l'architettura interna dell'XML
è da segnalare che, per velocizzare la gestione dei dati memorizzati
negli XMLType, Oracle9i implementa internamente un duplice sistema di
cache:
Una cache serve per mantenere in memoria e rapidamente accessibili le
informazioni relative agli schemi XML e quindi alla struttura dei documenti
XML archiviati in modo strutturato in tavole object-relational.
Un altra cache viene invece utilizzata per gestire il sistema di virtual
Dom supportato nell'accesso ai dati (in caso di archiviazione strutturata).
Con una tecnica denominata Lazy XML Loading, Oracle ottimizza l'utilizzo
della memoria caricando soltanto i nodi del Dom strettamente necessari
e scaricando (applicando una strategia Least Recently Used) quelli meno
utili, a seconda della quantità di memoria primaria ancora disponibile.
All'interno dell'XML Db è anche possibile
creare viste XMLType. Le viste XML possono essere utilizzate con diversi
scopi:
Per permettere un accesso XML a dati di tipo relazionale. Ciò
può essere molto utile per usufruire delle nuove funzionalità
XML di Oracle anche su vecchi dati di tipo legacy oppure per effettuare
delle prove di accesso XML, in entrambi i casi senza la necessità
di riconvertire tutti i dati e tutta l'architettura del sistema
Per raggruppare dati provenienti da diversi attributi o tavole XMLType,
e/o organizzarli con una nuova struttura gerarchica.
Per aggregare dati eterogenei (relazionali e XML) in un unico documento
XML.
Le viste XMLType hanno la stessa struttura
delle tavole XMLType e possono anch'esse fare riferimento a schemi XML:
in questo caso se i dati sono di origine relazionale è necessario
commentare gli schemi con il linguaggio apposito per specificare le modalità
del mapping. Per la ricerca di dati all'interno degli XMLType sono disponibili
gli appositi metodi extract, extractValue e existsNode, che consentono
l'accesso tramite lo standard XPath. É anche possibile utilizzare
le soluzioni studiate nella versione precedente di Oracle, implementante
all'interno di Oracle Text, aggiornate per la compatibilità con
il nuovo XMLType.
Oracle Text permette di creare indici appositi
per ottimizzare le ricerche di testo e in particolare di sottostringhe.
Per quanto riguarda la generazione di dati XML vi sono molte possibilità
a disposizione:
Generazione di XML tramite l'utilizzo delle funzioni standard
Ansi SqlX e di alcune estensioni Oracle
Generazione di XML tramite l'uso del package Pl/Sql DBMS_
XMLGEN
Generazione di XML tramite l uso delle funzioni Sql SYS_ XMLGEN,
SYS_ XMLAGG e XMLSEQUENCE
Generazione di XML tramite l'uso dell'XML Sql Utility LEnterprise
Manager (il tool di amministrazione Oracle) è stato esteso
in modo completo: all'interno di esso è infatti possibile vedere,
creare e gestire tutte le risorse dell'XML Db.
Anche la possibilità di accedere
ai dati della base di dati tramite URL/URI è stata estesa ed aggiornata
in modo da permettere l'indirizzamento anche all'interno di dell'XML Db
e del XML Db Repository.
Infine anche Oracle Advanced Queueing (AQ), l'applicazione integrata in
Oracle per la gestione di code di messaggi, è stata aggiornata
appositamente per il supporto dell'XML, essendo XML utilizzato sempre
più spesso come formato per i messaggi tra le applicazioni.
AQ si occupa in particolare di gestire la comunicazione asincrona tra
le applicazioni mediante messaggi e modelli di comunicazione di tipo punto
a punto o publish/subscribe.
Vantaggi dell utilizzo di XML Db per la gestione di dati XML rispetto
agli approcci tradizionali dei Db XML-enabled
XML Db si differenzia non poco rispetto
alle soluzioni tipicamente implementate nei dbms XML-enabled (memorizzazione
esplicita in Clob e mapping semi-assistito in tavole relazionali). Si
tratta infatti di un vero e proprio dbms nativo XML integrato all'interno
di un dbms tradizionale.
Ciò:
Gli permette di essere il solo prodotto in grado di integrare la gestione
di dati strutturati e non strutturati in un unico modello dei dati,
pur gestendoli internamente in modo differente e presentando all'utente
un'unica modalità di accesso ad essi, un unica interfaccia (Api
identiche)
Facilita lo sviluppo di applicazioni che devono lavorare con dati di
diverso tipo (relazionali e XML)
Permette all'utente, tramite l'uso delle viste XMLType, di vedere come
XML i dati di vecchie basi di dati relazionali senza effettuare conversioni
e continuando ad utilizzare le vecchie applicazioni.
Rispetto alla memorizzazione di dati XML
esplicita in Clob offre i seguenti vantaggi:
Possibilità di indicizzare i dati ed effettuare ricerche complesse.
Capacità di gestire la concorrenza e le transazioni con granularità
fine.
Gestione dei referenziamenti, con controllo automatico dei vincoli in
chiave esterna, in conformità allo standard definito dagli XML
Schema.
Possibilità di creare diverse viste su dati XML.
Scalabilità e prestazioni.
Facilità di sviluppo di applicazioni, permettendo all'utente
di accedere in modo agevole ai singoli elementi XML ed eventualmente
modificarli.
Rispetto alla memorizzazione di dati XML
in tavole relazionali tramite mapping assistito offre invece i seguenti
vantaggi:
Indipendenza rispetto alla struttura. L'utente non sa neanche come verranno
realmente strutturate le tavole, deve soltanto fornire gli schemi XML.
Indipendenza rispetto alle modalità di storage. L'utente non
sa dove fisicamente saranno memorizzate le informazioni: né in
quali tavole, in quali attributi, né con quali vincoli in chiave
esterna. Può semplicemente ignorare il problema.
Facilità di esportazione e presentazione. I dati XML sono facilmente
esportabili e trasformabili (tramite Xslt) ad esempio in Html.
Facilità di scambio. Mappare esplicitamente i dati in relazionale
significa in qualche modo trasformare l'informazione originale, rendendo
difficili le operazioni di comunicazione e di scambio di dati XML con
l esterno. Il mapping automatico e trasparente gestito dall XML Db,
invece, garantisce la DOM fidelity e quindi che i dati estratti dalla
base di dati siano gli stessi che erano stati inseriti.
Inoltre XML Db garantisce alte prestazioni,
infatti:
La gestione nativa e integrata nel motore Oracle dei dati XML evita
la necessità di generare esternamente dati XML o di convertirli
in relazionale.
Il
virtual Dom consente una gestione ottimale della memoria nell'accesso
da Java e Pl/Sql. Supporto integrato nel dbms e ottimizzato a XPath
e Xslt.
l
sistema di schema-caching consente di accedere sempre istantaneamente
alle informazioni relative alla struttura dei dati strutturati.
La possibilità di definire indici su testo tramite Oracle Text
velocizza le query con ricerca di sottostringhe.
La
possibilità di organizzare i documenti XML in una struttura ad
albero (l XML Db Repository) può renderne più veloce il
reperimento.


|