Académique Documents
Professionnel Documents
Culture Documents
1. Introduction
2. Modèle de données
3. Langage de requêtes
4.a. Modèles internes
4.b. Principaux produits
5. Conclusion
1. Introduction
uGénérations de BD
Réseau et hiérarchique 70 - 80
Relationnel 80 - 90
Objet-Relationnel 90 - Ʀ
uWeb et BD
un rendez-vous manqué
couplage faible par serveur d'applications
le Web est une vaste BD distribuée
la structuration est faible
plutôt orienté documentaire ...
¢ h h
|ML s'impose
uIntégration des données et méta-données
uStandard dƞéchange de données universel
uLes BD ne peuvent rester indifférentes :
nécessité de stocker les documents |ML
nécessité de pouvoir interroger ces documents
évolution ou révolution ?
uQuel modèle de données ?
uQuel langage d'interrogation ?
uQuelle intégration avec l'existant ?
¢ h h
Limites de SQL
u Mauvais support de l'imbrication
GROUP BY limités
Généralement dans les éditeurs de rapports
u SQL3 trop complexe
Requêtes imbriquées difficiles
Méthodes en qualification coûteuse
Références pas très claires
u Peu adapté à |ML
Vision tabulaire
Manipulation par des fonctions (SQL/|ML)
u SQL à 30 ans !
Inventé en 1970 pour la gestion
|Query le successeur ?
¢ h h
xemple de documents
<Guide Version= "2.0"> <Restaurant type="francais"
categorie ="**">
<Restaurant type="francais" <Nom>La Licorne</Nom>
categorie="***"> <Adresse><Rue>Des Moines</Rue>
<Nom>Le Moulin</Nom> <Ville>Paris</Ville>
<Adresse> <Rue>des Vignes</Rue> </Adresse>
<Ville>Mougins</Ville> <Téléphone>0148253278</Téléphone>
</Adresse> <Manager>Dupuis</Manager>
<Manager>Dupuis</Manager> </Restaurant>
</Restaurant>
<Bar type = "anglais">
<Nom>Rose and Crown</Nom>
</Bar>
</Guide>
¢ h h
Diagramme |ML Spy
¢ h h
Bilan Modèle de données
uUn standard riche
schémas standardisés depuis 3 mai 2001
Représentation graphique ad-hoc
Génération automatique en cas d'absence
uFaut-il un autre modèle que les schémas ?
Doit couvrir les schémas
Doit couvrir les DTD
Doit couvrir l'absence de schéma et DTD
Syntaxe plus simple
Objet OQL
|ML ???
p
¢ h h
Introduction
u|Query est le langage de requêtes pour |ML
défini et standardisé par le W3C
u|Query sƞimpose comme le langage de requêtes:
Pour les bases de données |ML natives
Pour les documents |ML textuels (|Query Text)
Pour lƞintégration de données (bases de données
virtuelles)
uLe besoin dƞinterroger les bases relationnelles en
|Query existe
Pour lƞintégration et la publication de données
Compétition avec les extensions de SQL (SQL/|ML)
p
¢ h h
Objectifs
Puissance Recherche
de SQL d'information
;
Structure Langage
d'arbres fonctionnel
p
¢ h h
La base
uProposé par IBM , MS, AT&T, Data Direct, ...
uLangage fonctionnel type CAML
uForme de requête élémentaire
FOR $<var> in <forest> [, $<var> in <forest>]+ //itération
LT $<var> := <subtree> // assignation
WHR <condition> // élagage
RTURN <result> // construction
uLes forêts sont sélectionnées par des |path
(document ou collection)
uLe résultat est une forêt (un ou plusieurs arbres)
p
¢ h h
xemple 1 : |Path
u(Q1) Noms de tous les restaurants :
collection(ƠRestaurantsơ)/Restaurant/Nom/text()
collection(ƠRestaurantsơ)/Restaurant/Nom
¢ h h
xemple 2 et 3 : |Path +
uxpression régulière
Menu de tous les restaurants
collection(ƠRestaurantsơ)//Menu
¢ h h
xemple 4 : Sélection
? uLister le nom des restaurants de Cabourg:
collection(ƠRestaurantsơ)/Restaurant
[Adresse/Ville= ƠCabourg"] /Nom
<resultat>
{å $R ("Restaurants")/Restaurant
$R/Adresse/Ville = ƠCabourgơ
{$R/Nom}}
</resultat>
p
¢ h h
xemple 5 : Jointure
uLister le nom des Restaurants avec téléphone
dans la rue de l'Hôtel Lutecia:
å $R in collection("Restaurants")/Restaurant,
$H in collection("Hotels")/Hotel
$H//Rue = $R//Rue
$H//Nom = "Le Lutecia"
<Result>
{$R/Nom}
{$R/Téléphone}
</Result>
¢ h h
xemple 6 : Restructuration d'arbre
uConstruire une liste de restaurants par Ville
å $c
((ƠRestaurantsơ)/Restaurant//Ville)
<Ville>{$c}</Ville>
<Restaurants>
{å $r (ƠRestaurantsơ)/Restaurant
$r//Ville = $c
{$r}}
<Restaurants>
¢ h h
xemple 7 : Imbrication en Where
uAdresses des hotels dans des villes ayant des
restaurants trois étoiles
å $h in collection(ƠHotelsơ)/Hotel
$h/Adresse/Ville in
å $r in collection(ƠRestaurantsơ)/Restaurant
$r/@categorie = "***"
{$r/Adresse/Ville/text()}
{$h/Adresse}
¢ h h
xemple 8 : Agrégat simple
uCombien de restaurants y-a-t-il en collection ?
¢ h h
xemple 9 : Agrégat partitionné
uLister le nom de chaque restaurant avec le prix
moyens des menus proposés
for $r in collection(ƠRestaurantsơ)//Restaurant
let $a := collection(ƠRestaurantsơ)//
[Restaurant = $r]//Menu/@Prix
return
<resultat>
{$r/Nom}
<avgPrix>{AVG($a)}</avgPrix>
</resultat>
¢ h h
xemple 10 : recherche textuelle
uLister les bons restaurants de Paris
å $r (ƠRestaurantsơ)//Restaurant
( ($r/Comments, ƠBonơ)
($r/Comments, Ơxcellentơ))
$r/Adresse/Ville = ƠParisơ
{$r/Nom}
¢ h h
xemple 11 : Ordre et désordre
uLister les bons restaurants de Paris par ordre
alphabétique
å $r
unordered(collection(ƠRestaurantsơ)//Restaurant)
(($r/Comments, "xcellentơ)
($r/Comments, "Goodơ))
$r/Adresse/Ville = ƠParisơ
{$r/Nom}
($r/Nom descending)
¢ h h
xemple 12 : Multi-requêtes
u Construire un document avec en-tête, titre, liste
restaurants peu chers, titre, liste restaurants chers
<|ML_document>
<Very_xpensive_Restaurants>
<Title>List of very expensive restaurants</Title>
{for $r in collection("Restaurantsơ)//Restaurant
where every $p in $r/Menu/@Prix satisfies ($p>100)
return {$r}}
</Very_xpensive_Restaurants>
<Very_Inexpensive_Restaurants>
<Title>List of very inexpensive restaurants</Title>
{for $r in collection(ƠRestaurantsơ)//Restaurant
where some $p in $r/Menu/@Prix satisfies ($p<10)
return {$r}}
<Date>{date()}</Date>
</Very_Inexpensive_Restaurants>
</|ML_document>
¢ h h
xemple 13 : String
uTrouver les livres dans lequel le nom d'un
élément se termine par "or" et le même élément
contient la chaîne "Suciu" quelque part. Pour
chaque tel livre, retourner le titre et l'élément
qualifiant.
å $b in document("document")//book
$e := $b/*[contains(string(.), "Suciu")
ends-with(local-name(.), "or")]
exists($e)
<book> { $b/title } { $e } </book>
p
¢ h h
Fonctionnalités |Query Text
u Recherche sur mot-clés u Recherche par proximité
u Recherche de phrase (unité = mots)
u Support des mots de u Spécification de l'ordre
laiaison des mots
u Recherche sur préfix, u Combinaison logic avec
suffix, infix AND, OR , NOT
u Normalisation des mots, u Recherche par similarité
accents, capitales, Ʀ u Tri des résultats par
pertinence
p
¢ h h
Bilan |Query
u Véritable langage de u Questions ?
programmation
u Très puissant
Sélection
Jointure
Imbrication
Restructuration
Agrégation
Tri
Plein texte
Ʀ
u Sur des forêts dont les
arbres sont des
documents
p
¢ h h
4. Aperçu des produits
uSystèmes natifs
Technique spécialisée de stockage et recherche
xtension des techniques documentaires à l'élément
uSGBD relationnels étendus
Séparation des éléments et du graphe
Mapping en tables
uSGBD objet adapté
Utilisation d'une structuration objet (DOM)
Un produit : xcelon (Object Store)
uRacheter par Progress Software
¢ h h
4.1 SGBD Natif |ML
u SGBD
conçu pour |ML,
£
stockant les documents en
entiers sans les
décomposer en éléments, ?
?
utilisant de techniques
d'indexation d'arbres
spécifiques.
?
?Å
Å
¢ h h
Indexation Plein Texte
uUtilisation d'un thésaurus au chargement
ensemble de termes reliés
liste des mots importants
synonymes et préférés
spécialisations, traductions
Standards ISO 2788 et ANSI Z39.19
uStemisation (racine) ou lemmisation (préféré)
uListes inverses
fichiers de mots significatifs
pour chaque mot, adresse document
(élément+offset)
¢ h h
Principaux produits
u De multiples start-up
Software A.G. Tamino http://www.softwareag.com/
|-Hive/Db http://www.x-hive.com/
Coherity http://www.coherity.com/
I|IA soft http://www.ixiasoft.com/
|ML Global http://www.xmlglobal.com/
NeoCore http://www.neocore.com/
|yleme http://www.xyleme.com/
u Intégration comme type spécialisé à SGBD OR
DB2 |ML xtender
uStockage en BLOB, Fonctins d'accès |path intégrées à SQL/|ML
Oracle 9.i |ML DB
uSupport |MLType, Interrogation via SQL/|ML
¢ h h
|yleme
ufficient |ML warehouse
uDistributed architecture
Cluster of PCs
Communicating with Corba
uDeveloped with Linux and C++
uCurrently support |yQL
xtended OQL with path expressions
fficient full text search in elements
¢ h h
|yleme Functionnalities
¢ h h
|yleme: Natix Repository
uGoal
minimize I/O for direct access and scanning
efficient direct accesses using indexing
good compaction but not at the cost of access
ufficient storage of trees
use fixed length storage pages
variable length records inside a page
uTree balancing achieved by a splitting algorithm
¢ h h
|yleme: Physical Architecture
!
h
Y
p
Y p
Y
p
p
"
"
!
!
° nde° ° nde°
¢ h h
|yleme: Query xample
xtension of OQL with |Path
Text search queries
¢ h h
|yleme Indexing
uStandard inverted index
word documents that contain this word
u|yleme index
word elements that contain this word
(document + element identifier)
uMost text retrieval queries done without data
access
uPossibility of adding query enrichment based on
a thesaurus before index search
¢ h h
4.2 Mapping SGBDR
u Composant logiciel au-
dessus d'un SGBDR
assurant:
le stockage et
? ?
l'interrogation de
documents |ML
en transformant le |ML en
!
tables
et les tables en |ML
"
?
¢ h h
Oracle : |SU
uStockage et publication
Mapping de |ML plat sur une table
Mapping de |ML imbriqué en tables imbriquées
Balises spéciales <rowset> et <row>
Commandes Put|ml et Get|ml
Passage par iFS et |SL possible
uInterrogation
Servlet |SQL
udocument |ML avec requêtes SQL
utransformation naïve du résultat des requêtes
¢ h h
Oracle : |ML DB
u Intègre |SU (mapping) et type natif |MLType
u Interrogation via SQL étendu (SQL/|ML) avec des fonctions
Å #
$
% &
% %
'
RowSet XML
¢ h h
Microsoft : SQL Server |ML
XML BCP/SQL
XMLBulkload
SQL update/
Updategrams insert/
XML delete
SQL
Annotated XSD Server
Mapping Schemas
SQL
Queries
FOR XML Rowsets
Quer XQuer
Quer Processor FOR SQL
XML Queries
XPath XML FOR
Queries XML
FOR XML
Queries
¢ h h
IBM |Peranto : Architecture
u Vues |ML au-
dessus de £
SGBDR (DB2) £
" ?
!
?
u Intégré à DB2 0
!?" 1
version
4% ? ? ? ? ?
¢ h h
|Quark : Open Source |MLizer
u xtraction |ML
via |Query traduit en SQL
u Stockage |ML en base
Mapping via schema
u Indépendant du SGBD
MySQL, Oracle, *
$$
SQLServer, Sybase, Ʀ
5
SGBDR
¢ h h
Natif versus Middleware
u Points forts Middleware u Points forts Natif
pas de nouveau SGBD un nouveau SGBD
possibilité de normaliser les fait pour |ML
données intégrité du document
portabilité multi-SGBD pas de mapping à
performance pour accès maintenir
grain fin performance pour accès
Centré vers le structuré gros grain
centré vers le textuel
¢ h h
5. Conclusion
u|ML peut-il changer les bases de données ?
Recherche en BD semi-structurées
Besoin de schémas faibles (|ML Schéma)
Langage de requêtes standardisé (|Query)
L'effet du Web ...
uIntégration douce à l'Objet/relationnel
Transformation en tables
Gestion du graphe
Support des textes libres niveau élément
¢ h h
Résumé
u|ML fournit un cadre uniforme pour :
échanger des données structurées (DTD, schéma)
échanger des données semi-structurées (graphes)
interroger des documents (|Query)
intégrer des sources de données hétérogènes (table,
multimédia)
uBeaucoup de travaux sont en cours
Gestion efficace au sein d'Oracle, de DB2, etc.
Construction de middlewares pull/push fondés sur
|Query
Construction de SGBD pur |ML (|ylème, etc.)
¢ h h