Vous êtes sur la page 1sur 48

| 




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>

Y    


¢ h h
2. Modèle de données
uSchémas flexibles et irréguliers
Optionnels, avec ou sans DTD
uDonnées auto-descriptives
Balises et attributs
uModèle de type hypertexte
Support des références
uÉléments atomiques ou complexes
Composition par agrégation
uTypes de données variés et extensibles
Textes, numériques, Ʀ, types utilisateur

Y    


¢ h h
Le modèle de données
u|Query Data Model
uModèle des schémas et de |Path 2
uUn document est un arbre à nœud étiqueté
uChaque nœud possède une identité
uƒxprimé en |ML, souvent représenté
graphiquement
uUne forêt est une collection de documents de
même schéma
uUne source de données est soit un document,
soit une forêt


¢ h h
Diagramme |ML Spy

Y    


¢ h h
ƒt les documents sans schéma ?
u |Query est un langage u Solution
fortement typé Forêt fermée versus forêt
Toute expression ouverte
correctement typée est une Construction et gestion
requête correcte dynamique des schémas
ƒxemple: 1 + 2 Notion de "document
u Cependant : guide" ou DTD généralisée
Le schéma est optionnel
La DTD peut le remplacer
Il peut y avoir ni DTD, ni
schéma


¢ 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

Y    


¢ h h
3. Langage de requêtes
MODƒLƒ LANGAGƒ RƒQUƒTƒS

Hiérarchique DML DL1

Réseau DML CODASYL

Relationnel SQL: SƒLƒCT Ʀ

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
LƒT $<var> := <subtree> // assignation
WHƒRƒ <condition> // élagage
RƒTURN <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 +
uƒxpression régulière
Menu de tous les restaurants
collection(ƠRestaurantsơ)//Menu

uAccès via indice à attribut


Donnez le nom des menus du premier restaurant
collection(ƠRestaurantsơ)/Restaurant[1]/Menu/@Nom


¢ 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 ?

 $R :=   (ƠRestaurantsơ)/Restaurant



<NombreRestaurant > {count ($R)}
</NombreRestaurant>


¢ 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
uƒfficient |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
uƒfficient 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

Select boss/Name, boss/Phone


From comp in BusinessDomain,
boss in comp//Manager
Where comp/Product contains Ơ|ylemeơ


¢ 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

Å   #
 $    %       & %        %     '

   (    %     )  "$  $   *  )  


$       )              '
   $    %    % )  %      ) $     
)  %        "$ '
Å  *        %         & %        
 %  *  '
   *   *       '

   & %        &    $      +   '

   $$+  &    


 ,   "$      
"$ '
    (    %    "$   $   -      * 
    .     
   (    %    "$   $   -      
  $     .     /

¢ h h
Microsoft
u SQL Server 2000
Mapping de |ML sur tables
udéfini par assistants
XPath
uexécuté par procédures SQL
stockées XQuer
Génération de résultats en
|ML
upar SƒLƒCT Ʀ FOR |ML
SQL XML XML
u Projet Yukon 2003 Server View Files
SGBD natif ?

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 Traducteur et 0! ?$ 1

optimiseur de 3"  )?


  ? ? + ?0 $%1?
|Query en SQL 0! ? 2 1

"  ?
!
 ?
u Intégré à DB2 0
!?" 1
   

dans une future  + ?


!

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

Vous aimerez peut-être aussi