ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ



Σχετικά έγγραφα
Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο

SGML (Standard Generalized Markup Language) HTML (HyperText Markup Language) XML (extensible Markup Language)

ΝΤUA. Τεχνολογία Πολυμέσων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Βάσεις Δεδομένων ΙΙ. Διάλεξη 5 η XML και ΒΔ στο Διαδίκτυο

ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

ΥΠΗΡΕΣΙΑ «TAXISNET» - ΗΛΕΚΤΡΟΝΙΚΗ ΥΠΟΒΟΛΗ ΤΩΝ ΦΟΡΟΛΟΓΙΚΩΝ ΔΗΛΩΣΕΩΝ ΓΙΑ ΤΟ ΤΜΗΜΑ ΕΣΩΤΕΡΙΚΩΝ ΠΡΟΣΟΔΩΝ ΚΑΙ ΤΗΝ ΥΠΗΡΕΣΙΑ ΦΟΡΟΥ ΠΡΟΣΤΙΘΕΜΕΝΗΣ ΑΞΙΑΣ ΤΟΥ

ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

ΚΕΦΑΛΑΙΟ Μηχανική Μάθηση

<address>αδριανείου 2, Νέο Ψυχικό, 11525, Αθήνα</adderss> <address>

ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Διδακτική της Πληροφορικής ΙΙ

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Επιµέλεια Θοδωρής Πιερράτος

ΕΙΣΑΓΩΓΗ ΣΤΙΣ Β ΣΕ Ε Σ Ι ΟΜΕΝ

Βάσεις ιαδικτύου. Θέματα. Εισαγωγή στην XML. Ευρετήρια για την Ανάκτηση Κειμένων. Ο αλγόριθμος HITS. είναι η XML. Παράδειγμα XML

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Α. Ερωτήσεις Ανάπτυξης

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

ΝΤUA. Τεχνολογία Πολυμέσων

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΑΝΑΛΥΣΗ Ε ΟΜΕΝΩΝ 1. ΕΙ Η Ε ΟΜΕΝΩΝ, ΣΥΛΛΟΓΗ, ΚΩ ΙΚΟΠΟΙΗΣΗ ΚΑΙ ΕΙΣΑΓΩΓΗ

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

3η Σειρά Γραπτών Ασκήσεων

ΤΙΤΛΟΣ ΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ: GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ ΠΕΡΙΟΧΗ ΕΡΕΥΝΑΣ: ΣΥΓΓΡΑΦΕΑΣ:

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Δομές Δεδομένων και Αλγόριθμοι

3 Αναδροµή και Επαγωγή

Πληρότητα της μεθόδου επίλυσης

Δοµές Δεδοµένων. 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης. Βασίζεται στις διαφάνειες των R. Sedgewick K.

Εισαγωγή στον Παγκόσμιο ιστό και στη γλώσσα Html. Χρ. Ηλιούδης

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΕΝ ΕΙΚΤΙΚΗ ΛΥΣΗ ΚΑΙ ΣΧΟΛΙΑ ΣΤΗΝ ΠΡΩΤΗ ΑΣΚΗΣΗ ΣΧΕ ΙΑΣΜΟΙ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα

Περιεχόμενα. Γαβαλάς Δαμιανός Τρέχον status της HTML

Λογικός Σχεδιασµός Σχεσιακών Σχηµάτων: Αποσύνθεση. Βάσεις εδοµένων Ευαγγελία Πιτουρά 1

3. Επερώτηση XML Εγγράφων: Η Γλώσσα XPath

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

Περίληψη ιπλωµατικής Εργασίας

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

της πληροφορίας Λίνα Μπουντούρη Εθνικό Κέντρο Τεκμηρίωσης 13ο ΠανελλήνιοΣυνέδριοΑκαδημαϊκών Βιβλιοθηκών - Κέρκυρα 2004

ΚΑΤΑΝΕΜΗΜΕΝΕΣ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Κεφάλαιο 10 Ψηφιακά Λεξικά

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΜΑΘΗΜΑ 2 ΑΝΑΠΑΡΑΣΤΑΣΗ - ΤΕΧΝΙΚΕΣ ΤΝ (1)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

2 ο Μάθημα. Χωρικές Βάσεις Δεδομένων και Γεωγραφικά Πληροφοριακά Συστήματα

Γενικό πλάνο. Μαθηµατικά για Πληροφορική. Παράδειγµα αναδροµικού ορισµού. οµική επαγωγή ΠΑΡΑ ΕΙΓΜΑ. 3ο Μάθηµα

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

Μαθηµατικά για Πληροφορική

Διδάσκων: Παναγιώτης Ανδρέου

ΑΕΠΠ Ερωτήσεις θεωρίας

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 5: XML. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

scanf() scanf() stdin scanf() printf() int float double %lf float

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Αλγόριθµοι και Πολυπλοκότητα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Σχεδιασµός Ανάπτυξη Οντολογίας

ΗΥ180: Λογική Διδάσκων: Δημήτρης Πλεξουσάκης. Φροντιστήριο 8 Επίλυση για Horn Clauses Λογικός Προγραμματισμός Τετάρτη 9 Μαΐου 2012

Ενδεικτικές Ερωτήσεις Θεωρίας

Οδηγίες σχεδίασης στο περιβάλλον Blender

Διαδικασιακός Προγραμματισμός

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ΑΝΑΠΑΡΑΣΤΑΣΗ ΚΕΙΜΕΝΟΥ

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Στο στάδιο ανάλυσης των αποτελεσµάτων: ανάλυση ευαισθησίας της λύσης, προσδιορισµός της σύγκρουσης των κριτηρίων.

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Εισαγωγή στην Πληροφορική

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων

Διδάσκων: Κωνσταντίνος Κώστα

HY Λογική Διδάσκων: Δ. Πλεξουσάκης

Αναπαράσταση Γνώσης και Αναζήτηση στον Σηµασιολογικό Ιστό

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

Κ15 Ψηφιακή Λογική Σχεδίαση 2: Δυαδικό Σύστημα / Αναπαραστάσεις

Επισκόπηση Μαθήµατος

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Κεφ.11: Ευρετήρια και Κατακερματισμός

Εισαγωγή στην επιστήμη των υπολογιστών

Transcript:

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΠΣ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΑΠΕΙΚΟΝΙΣΗ ΧML Ε ΟΜΕΝΩΝ ΣΕ ΣΧΕΣΙΑΚΟ ΣΧΗΜΑ Shredding XML Data ΜΑΓ ΑΛΗΝΟΣ ΠΑΝΑΓΗΣ Αθήνα, 27-06-05

Περιεχόµενα Περιεχόµενα...- 1-1. Εισαγωγή...- 2-1.1 Το πρόβληµα...- 3-2. Τρόποι αποτύπωσης ιεραρχίας στην XML...- 5-2.1 Global Ordering Scheme...- 5-2.2 Sparse Numbering Scheme...- 6-2.3 Local Ordering Scheme...- 6-2.4 Same Sibling Numbering Scheme...- 7-2.5 Dewey Encoding...- 8-2.6 Interval Encoding...- 9-2.7 H προσέγγιση ORDPATH...- 10-2.8 Σχολιασµός...- 11-3. Απεικόνιση ΧML δεδοµένων στο σχεσιακό µοντέλο...- 12-3.1 Εισαγωγή...- 12-3.2 Απεικόνιση µε απουσία σχήµατος...- 12-3.2.1 Η προσέγγιση Edge...- 13-3.2.2 ιαφοροποιήσεις της προσέγγισης Edge...- 13-3.2.3 H προσέγγιση XPath Accelerator...- 15-3.2.4 Άλλες προσεγγίσεις...- 17-3.3 Απεικόνιση µε παρουσία σχήµατος...- 18-3.3.1 Απεικόνιση DTD σε σχεσιακό σχήµα...- 18-3.3.1.1 Inlining...- 19-3.3.1.2 Απεικόνιση DTDs σε Object Schemas...- 22-3.3.2 Απεικόνιση XML Schema σε σχεσιακό µοντέλο...- 27-3.3.2.1 Η προσέγγιση της Microsoft...- 29-3.3.2.2 Άλλες προσεγγίσεις µε χρήση Annotation Schema...- 31-3.4 Σύνοψη...- 33-4. Ερευνητικές προσπάθειες...- 35-4.1 Στόχοι των προσπαθειών βέλτιστης απεικόνισης...- 35-4.2 Μέθοδος βελτιστοποίησης απεικόνισης...- 35-4.3 Ερευνητικές προσπάθειες µετάφρασης XML επερωτήσεων σε SQL...- 37-5. Απεικόνιση σχεσιακών δεδοµένων σε XML...- 40-6. Επίλογος...- 43 - Αναφορές...- 44 - - 1 -

1. Εισαγωγή Στα τέλη της δεκαετίας του 60, µία οµάδα ερευνητών της IBM, βρέθηκαν αντιµέτωποι στο πρόβληµα της δηµιουργίας ενός µεταφερόµενου (portable) συστήµατος για ανταλλαγή και διαχείριση εγγράφων. Οι ερευνητές συνειδητοποίησαν ότι η επικοινωνία µεταξύ των υπολογιστικών συστηµάτων θα διευκολυνόταν από ένα ανεξαρτήτου συστήµατος κοινό µορφότυπο (format) για τα έγγραφα αυτά, και αποφάσισαν να χρησιµοποιήσουν µία γλώσσα σήµανσης στην καρδιά του συστήµατός τους. Η σήµανση (markup), η οποία προσδιορίζει την δοµή ενός κειµένου, ήταν θεµέλιο για την επεξεργασία κειµένου και συµβατή σε πολλές πλατφόρµες. Η πρωτότυπη γλώσσα σήµανσης της IBM, µάρκαρε τα δοµικά στοιχεία (elements) του κειµένου αλλά δεν καθόριζε τον µορφότυπο της πληροφορίας που περιλάµβανε. Ο µορφότυπος της πληροφορίας, µπορούσε να αποθηκευτεί σε ξεχωριστό αρχείο, το οποίο ονόµασαν stylesheet, και µε το οποίο οι υπολογιστές µπορούσαν να χρησιµοποιήσουν για την µορφοποίηση (formatting) των στοιχείων ενός κειµένου. Η µέθοδος της δόµησης των δεδοµένων, έδωσε στους υπολογιστές την δυνατότητα να επεξεργάζονται τα έγγραφα µε πολλούς νέους τρόπους. Η οµάδα της IΒΜ συνειδητοποίησε ότι η αξιόπιστη επεξεργασία ενός εγγράφου θα µπορούσε να οδηγήσει στην απόρριψη άκυρων (invalid) εγγράφων, οπότε η δοµή κάθε εγγράφου καθορίστηκε µε αυστηρό τρόπο σε ένα αρχείο το οποίο το ονόµασαν document type definition (DTD). Ο διαχωρισµός της παρουσίασης (µε το stylesheet) και του ελέγχου (µε το DTD) ενός εγγράφου διασφάλισε µεγάλη ευελιξία επειδή τόσο τα DTDs όσο και τα stylesheets µπορούσαν να µετατραπούν χωρίς να επηρεάζονται τα marked up δεδοµένα. Στο τέλος του 1969, η οµάδα επιστηµόνων της IBM είχε αναπτύξει µία γλώσσα, την Generalized Markup Language (GML) µε τα παραπάνω χαρακτηριστικά. Το 1974, αποδείχθηκε ότι ένας parser, µπορούσε να επικυρώσει (validate) ένα έγγραφο χωρίς ουσιαστικά να το επεξεργαστεί. Αυτό άνοιξε τον δρόµο περαιτέρω ανάπτυξη, η οποία οδήγησε, το 1986, στην υιοθέτηση της Standard Generalized Markup Language (SGML) ως διεθνές standard. Η SGML, πολύ γρήγορα, έγινε το επιχειρηµατικό standard για αποθήκευση και ανταλλαγή δεδοµένων σε όλο τον κόσµο. Η επεξεργασία των SGML εγγράφων ορίστηκε από το DSSSL. Με την ανακάλυψη του παγκόσµιου ιστού (World Wide Web) από τον Tim Berners-Lee το 1989, ξεκίνησε, από τον ίδιο, η ανάπτυξη µιας τεχνολογίας για διαµοιρασµό πληροφορίας χρησιµοποιώντας υπερ-συνδεδεµένα (hyperlink) κείµενα αρχείων. H γλώσσα αυτή βασίστηκε στην SGML και ονοµάστηκε HyperText Markup Language (HTML). Με την ανάπτυξη του Internet όµως, οι περιορισµοί της HTML έγινα εµφανείς. Η έλλειψη τροποποίησης αποθάρρυνε τους σχεδιαστές συστηµάτων και οι - συγκεκριµένης πλατφόρµας - εντολές µορφοποίησης (formatting commands), οι οποίες δηµιουργήθηκαν σαν HTML επεκτάσεις από διάφορους κατασκευαστές προγραµµάτων πλοήγησης ιστοσελίδων (browsers) για να κερδίσουν µερίδιο της αγοράς, οδήγησε το W3C να - 2 -

δηµιουργήσει µία stylesheet τεχνολογία για την HTML, την Cascading Style Sheets (CSS). H CSS, παρά τις δυνατότητες που πρόσθεσε στα HTML αρχεία, δεν ήταν παρά προσωρινή λύση. Η ανάγκη για µία νέα, πλήρως τροποποιήσιµη και δοµικά αυστηρή γλώσσα ήταν εµφανής. Σαν αποτέλεσµα, η XML γεννήθηκε, η οποία συνδύασε την δύναµη και την εκτατότητα (extensibility) της µητρικής γλώσσας, της SGML, και την απλότητα που απαιτήθηκε από την κοινωνία του Internet. Η XML έγινε recommendation τους W3C το 1998 (XML v1.0). Το βασικό τής στοιχείο είναι ότι δεν σχεδιάστηκε για να κάνει κάτι αλλά δηµιουργήθηκε για την δοµή, αποθήκευση και αποστολή πληροφορίας. Ένα απλό παράδειγµα XML εγγράφου είναι το παρακάτω <note> <to>john</to> <from>teo</from> <heading>reminder</heading> <body>don't forget our meeting.</body> </note> Σήµερα, η XML έχει καθιερωθεί σαν την κοινή γλώσσα ανταλλαγής πληροφοριών στο χώρο της Πληροφορικής. Τεράστια ποσά πληροφοριών ανταλλάσσονται καθηµερινά µεταξύ διαφόρων εφαρµογών µε χρήση της XML. Το γεγονός αυτό όµως είχε σαν αποτέλεσµα τη γέννηση ενός συνόλου νέων προβληµάτων που αφορούσαν την αποθήκευση της περιεχόµενης πληροφορίας. Η ερώτηση η οποία αναδύεται λοιπόν είναι το κατά πόσο µπορεί να υποστηριχθεί η αποθήκευση των XML δεδοµένων από µια ώριµη τεχνολογία, όπως αυτή των σχεσιακών βάσεων δεδοµένων, ή αν θα πρέπει να ερευνηθούν νέες προσεγγίσεις. Η παρούσα εργασία παρουσιάζει ένα τµήµα της βιβλιογραφίας πάνω στο συγκεκριµένο θέµα και ειδικότερα στον τρόπο µε τον οποίο µπορούν να απεικονιστούν τα XML δεδοµένα στο σχεσιακό µοντέλο δεδοµένων. 1.1 Το πρόβληµα Η απόπειρα συνδυασµού των δύο τεχνολογιών που αναφέρθηκαν στο προηγούµενο ερώτηµα απαιτεί την επίλυση ενός συνόλου προβληµάτων που οφείλονται στην διαφορετική φύση τους. Από την µια πλευρά βρίσκεται το σχεσιακό σύστηµα δεδοµένων, το οποίο αντιλαµβάνεται τον κόσµο ως ένα σύνολο αλληλεπιδρώντων οντοτήτων εµφανιζόµενων µόνο σε ένα επίπεδο ιεραρχίας, και από την άλλη η XML, η οποία υιοθετεί την αντίληψη της αντικειµενοστραφούς θεώρησης προσθέτοντας κανόνες ιεραρχίας στα δεδοµένα της. Σαν µια πρώτη λύση, θα µπορούσε να σκεφτεί κάποιος την απευθείας αποθήκευση XML εγγράφων σε κάποιο σχεσιακό σύστηµα διαχείρισης βάσεων δεδοµένων. Αν και αρκετά πρωτογενής, η πρόταση αυτή χρησιµοποιήθηκε αρκετά στο παρελθόν, και εξακολουθεί να χρησιµοποιείται και σήµερα, σε µικρότερο όµως βαθµό. Η προσέγγιση LOB (Large OBject), έχει δύο εκφάνσεις, την CLOB και την BLOB. Η πρώτη, αποθηκεύει τα δεδοµένα σε µορφή κειµένου (Character Large OBject) ενώ η δεύτερη σαν αρχείο δυαδικών δεδοµένων (Binary Large OBject). Είναι προφανές, ότι και οι δύο προσεγγίσεις διατηρούν το σύνολο της φέρουσας πληροφορίας ενός εγγράφου, δεν εκµεταλλεύονται - 3 -

όµως τις δυνατότητες του συστήµατος αποθήκευσης. Κρίνεται συνεπώς αναγκαία η υιοθέτηση µιας λύσης η οποία όχι µόνο θα αντιλαµβάνεται τον ιεραρχικό χαρακτήρα της XML αλλά και τον σχεσιακό χαρακτήρα των βάσεων δεδοµένων. Η απάντηση στο πρόβληµα αυτό εµφανίζεται µέσα από την αποσύνθεση των XML εγγράφων σε σχεσιακά δεδοµένα (shredding) µε τέτοιο τρόπο ώστε να εξασφαλίζεται τόσο η ακεραιότητα του συνόλου της πληροφορίας, όσο και η χρήση ως αποθηκευτικού µέσου ενός συστήµατος που αγνοεί την ιεραρχική υφή της. Αρχικά λοιπόν, θα παρουσιαστούν οι διάφοροι τρόποι αποτύπωσης της ιεραρχικής δοµής της XML και θα συγκριθούν µεταξύ τους, ώστε να αναδειχθούν τόσο τα µειονεκτήµατά τους όσο και τα πλεονεκτήµατά του καθενός. Ακολούθως θα γίνει εκτενής αναφορά στις διάφορες µεθοδολογίες κατάτµησης XML εγγράφων και αποθήκευσης αυτών σε σχεσιακές συστήµατα βάσεων δεδοµένων. Η µελέτη θα επιχειρήσει να καλύψει όλο το φάσµα του συγκεκριµένου πεδίου, όµως θα εµµείνει σε θέµατα που αφορούν την κατάτµηση XML δεδοµένων µε βάση κάποιο DTD ή XML Schema. - 4 -

2. Τρόποι αποτύπωσης ιεραρχίας στην XML Ένα XML έγγραφο αποτελείται ουσιαστικά από ένα δέντρο κόµβων. Η σειρά µε την οποία εµφανίζονται οι κόµβοι κατά την επεξεργασία του εγγράφου µε διεύθυνση από την αρχή προς το τέλος του, ονοµάζεται σειρά εγγράφου (Document Order). Μία σωστή απεικόνιση ενός XML εγγράφου σε µία σχεσιακή βάση δεδοµένων θα πρέπει να φυλάσσει µε κάποιο τρόπο την σειρά αυτή, αφού η θέσεις των κόµβων σε ένα XML έγγραφο µπορεί να έχουν σηµαντική εννοιολογική σηµασία. Υπάρχουν διάφοροι τρόποι µε τους οποίους µπορεί να εξασφαλιστεί η σειρά των κόµβων σε ένα XML έγγραφο αποθηκευµένο σε σχεσιακή βάση δεδοµένων, καθένας από τους οποίους έχει συγκεκριµένα πλεονεκτήµατα και µειονεκτήµατα. Στην συνέχεια θα αναλυθούν οι τρόποι αυτοί και θα συγκριθούν ειδικά ώστε να αναδειχθούν τόσο τα πλεονεκτήµατα όσο και τα µειονεκτήµατά τους. 2.1 Global Ordering Scheme Μια πρώτη λύση είναι αυτή του Global Ordering Scheme [1]. Η απεικόνιση της ιεραρχίας στην προκειµένη περίπτωση βασίζεται στην εκτέλεση µιας πρώτα κατά βάθος αναζήτησης στην δενδρική δοµή και την απόδοση µιας ακέραιας τιµής κατά την πρώτη επίσκεψη σε κάθε κόµβο. Σαν παράδειγµα µπορούµε να θεωρήσουµε το παρακάτω τµήµα XML εγγράφου: <doc> <Customer cid= ALFKI > <Order oid= 01 /> </Customer> <Customer cid= BONOD > </doc> Το έγγραφο αυτό, δενδρικά, µπορεί να απεικονιστεί όπως φαίνεται στο παρακάτω σχήµα: 1 doc 2 custo 6 custo mer mer 3 cid 4 order 7 cid ALFKI 5 oid BONOD 01 Σχήµα 1: Παράδειγµα Global Ordering Scheme - 5 -

Παρατηρούµε ότι σε κάθε στοιχείο έχει αποδοθεί µια τιµή, η οποία ουσιαστικά απεικονίζει την σειρά κατά την οποία επισκέφθηκε τους κόµβους ο αλγόριθµος. Η ανάθεση επιγραφών σε κόµβους που αναπαριστούν τιµές έγκειται κάθε φορά στον προγραµµατιστή. Προφανώς, υπάρχει δυνατότητα οι κόµβοι αυτοί να θεωρηθούν τόσο ως φύλλα του δένδρου όσο και ως απλές τιµές. Τα σχόλια που θα µπορούσαµε να κάνουµε για την µέθοδο αυτή είναι αρκετά. Η αρίθµηση των κόµβων επιτρέπει την αποσύνθεση και ανασύνθεση των δεδοµένων χωρίς απώλεια της ιεραρχικής πληροφορίας τους. Παράλληλα, αρκετοί άξονες της XPath είναι δυνατόν να µεταφραστούν σχετικά εύκολα µε απλές συγκρίσεις ακεραίων αριθµών. Αν και το σχήµα αυτό φαίνεται αρκετά καλό για περιπτώσεις επερωτήσεων αντιµετωπίζει αρκετά προβλήµατα όταν εµφανίζονται εισαγωγές ή διαγραφές δεδοµένων. Η δυσκολία σε αυτές τις περιπτώσεις έγκειται στο γεγονός ότι αρκετοί κόµβοι ενδέχεται να χρειαστούν επαναρίθµηση. Αρκεί µόνο να αναλογιστούµε την περίπτωση διαγραφής του άκρα αριστερού κλάδου στο παραπάνω δένδρο, η οποία θα είχε σαν αποτέλεσµα την αλλαγή των αριθµητικών επιγραφών σε όλους τους εναποµείναντες κόµβους, πλην του αρχικού. 2.2 Sparse Numbering Scheme Μια λύση στο πρόβληµα αυτό προσπάθησε να δώσει το σχήµα αραιής αρίθµησης [1]. Στην περίπτωση αυτή, κατά τη διάσχιση του δένδρου, δεν αποδίδονται τιµές από όλο το σύνολο των ακεραίων αλλά µόνο από ένα προκαθορισµένο υποσύνολό τους. Για παράδειγµα, θα µπορούσαµε να θεωρήσουµε ότι αρχικά αριθµούνται οι κόµβοι µε τιµές που λαµβάνονται από το σύνολο των περιττών αριθµών οπότε σε περιπτώσεις εισαγωγής νέων στοιχείων, απλά γίνεται χρήση ακεραίων από το σύνολο των αρτίων οι οποίοι πληρούν τους περιορισµούς του αλγορίθµου διάσχισης που χρησιµοποιούµε. Τα προβλήµατα που εµφανίζονται στην περίπτωση αυτή είναι ανάλογα της προηγούµενης. Προφανώς µετατίθεται στο µέλλον η ανάγκη επαναρίθµησης, καθώς όπως είναι φυσικό, όταν θα έχουν αποδοθεί όλοι οι ακέραιοι του συνόλου πιθανών τιµών, θα απαιτηθεί διεύρυνση του ορίου. Το πρόβληµα αυτό εµφανίζεται εντονότερο αν επιχειρηθούν επαναληπτικά εισαγωγές σε ένα µόνο τµήµα του δένδρου. Μάλιστα, όσο πιο αριστερά βρίσκεται στην απεικόνιση, τόσο εντονότερο γίνεται το πρόβληµα. 2.3 Local Ordering Scheme Μια άλλη απόπειρα λύσης των παραπάνω προβληµάτων, είναι το σχήµα τοπικής αρίθµησης. Η προσέγγιση αυτή θεωρεί ότι αρίθµηση απαιτείται µόνο ανάµεσα στους κόµβους του ίδιου επιπέδου και µάλιστα µόνο στους κόµβους µε κοινό πατέρα [1]. Το δένδρο του παραπάνω παραδείγµατος συνεπώς δοµείται όπως φαίνεται στο σχήµα 2. Το σχήµα αυτό λύνει µεν τα προβλήµατα των δύο προηγουµένων, καθώς απαιτεί σηµαντικά µικρότερο αριθµό επαναριθµήσεων σε περιπτώσεις εισαγωγών ή διαγραφών, δηµιουργεί όµως µια πληθώρα νέων. Τα προβλήµατα αυτά οφείλονται στο γεγονός ότι η µέθοδος αυτή στοχεύει στην επίλυση των προβληµάτων της προηγούµενης ιδέας και όχι στην επίλυση αυτού καθαυτού του προβλήµατος απεικόνισης της ιεραρχίας. Γίνεται - 6 -

άµεσα αντιληπτό ότι είναι αδύνατη η αποσύνθεση και ανασύνθεση του αρχείου µε ταυτόχρονη διατήρηση της ιεραρχικής δοµής του. Κατόπιν της αποσύνθεσης, είναι αδύνατον να αποφανθούµε αν το cid µε τιµή 1 είναι παιδί του κόµβου customer µε τιµή 1 ή του customer µε τιµή 2 χωρίς την διατήρηση κάποιας άλλης µορφής έµµεσης πληροφορίας. 1 doc 1 custo 2 custo mer mer 1 cid 2 order 1 cid ALFKI 1 oid BONOD 01 Σχήµα 2: Παράδειγµα Local Ordering Scheme 2.4 Same Sibling Numbering Scheme Η προσέγγιση του Same Sibling Numbering Scheme [1] προχώρα ακόµα πιο πέρα. Προσπαθώντας να µηδενίσει τις απαιτήσεις επαναριθµήσεων ορίζει ως µοναδικά στοιχεία που απαιτούν ανάθεση τιµών αυτά τα οποία έχουν κοινή επιγραφή και κοινό πατέρα. Η εξεταζόµενη θεώρηση αντιλαµβάνεται ως µοναδική προβληµατική κατάσταση την ύπαρξη κόµβων στο ίδιο επίπεδο, µε κοινό πατέρα και κοινή επιγραφή. Αναγόµενοι στο αρχικό παράδειγµα η συγκεκριµένη µέθοδος δηµιουργεί την παρακάτω απεικόνιση: doc 1 custo mer 2 custo mer cid order cid ALFKI oid BONOD 01 Σχήµα 3: Παράδειγµα Same Sibling Numbering Scheme - 7 -

Χωρίς να αναφερθούµε περαιτέρω, αξίζει να σηµειώσουµε ότι αν και λύνει τα προβλήµατα της Global Ordering επιδεινώνει κατά πολύ τις προβληµατικές καταστάσεις της Local. 2.5 Dewey Encoding Η χρυσή τοµή ανάµεσα στις δύο αυτές µεθόδους φαίνεται να είναι η µέθοδος αρίθµησης Dewey[1]. Στην µέθοδος αυτή συνδυάζονται και οι δύο παραπάνω αντιλήψεις του χώρου του προβλήµατος. Από την µια πλευρά υιοθετείται η άποψη ότι ένα γενικό σχήµα αρίθµησης είναι απαραίτητο ενώ από την άλλη κρίνεται αναγκαία η χρήση ενός τοπικού συστήµατος ανάθεσης τιµών ώστε να είναι εκµεταλλεύσιµα τα πλεονεκτήµατα και των δύο προσεγγίσεων. Ουσιαστικά η αρίθµηση Dewey δηµιουργεί ένα ιεραρχικό σύστηµα αρίθµησης το οποίο αναθέτει τιµή σε κάθε κόµβο µέσα από την αναδροµική προσάρτηση των επιγραφών των κόµβων που προηγούνται του εξεταζόµενου στο µονοπάτι που ορίζεται από τον κόµβο ρίζα έως και τον εξεταζόµενο. Οι επιγραφές έχουν προκύψει από το Local Ordering. Το παράδειγµα που εξετάζουµε από την αρχή µετασχηµατίζεται όπως φαίνεται στο σχήµα 4. Η θεώρηση αυτή κληρονοµεί τα πλεονεκτήµατα και των δύο κύριων µεθόδων που αναλύσαµε παραπάνω, ενώ υπολείπεται των µειονεκτηµάτων τους, καθώς είναι αµοιβαίως αποκλειόµενα. Παράλληλα, µε χρήση της έµµεσα παρεχόµενης πληροφορίας είναι δυνατόν να απαντηθούν XPath επερωτήσεις αποδοτικά, ενώ ταυτόχρονα το κόστος ενηµερώσεων να είναι σε ανεκτά επίπεδα. Συνεπώς, µαζί µε τις επόµενες, θα µπορούσε να θεωρηθεί ως η πλέον ικανή να αντεπεξέλθει στις προϋποθέσεις που θέσαµε έµµεσα στην πρώτη παράγραφο. 1 doc 1.1.1 1.1 custo mer 1.2 custo mer cid 1.1.2 order 1.2.1 cid ALFKI 1.1.2.1 oid BONOD 01 Σχήµα 4: Παράδειγµα Dewey Numbering Scheme Ένα βασικό µειονέκτηµα της µεθόδου είναι ο τρόπος µε τον οποίο υλοποιείται η σύγκριση µεταξύ των ετικετών των κόµβων. εδοµένης της µορφής των επιγραφών, η αποθήκευσή τους γίνεται µε την µορφή χαρακτήρων. Συνεπώς χάνεται η αριθµητική υφή - 8 -

τους, γεγονός που έχει σας άµεσο αποτέλεσµα, ενδεχόµενες συγκρίσεις να γίνονται αντιληπτές ως συγκρίσεις αλφαριθµητικών και να δίνουν διαφορετικά αποτελέσµατα από ότι αν είχαν εξεταστεί ως ακέραιοι. Σαν λύση έχει προταθεί η χρήση UTF-8 κωδικοποίησης για τους χαρακτήρες, η οποία έχει σχετικά µεγάλο αποθηκευτικό κόστος. 2.6 Interval Encoding Στις ερευνητικές οδούς της αποδοτικής απάντησης XPath επερωτήσεων κινείται και η µέθοδος Interval Encoding [2]. Σε αυτήν την µέθοδο, σε κάθε κόµβο ανατίθεται µια τριάδα τιµών, η οποία αναφέρει την τιµή που του αποδόθηκε από τον αλγόριθµο της κατά βάθος εξερεύνησης κατά την πρώτη διάσχιση, την τιµή που του δόθηκε κατά την τελευταία φορά που ο αλγόριθµος επισκέφθηκε τον κόµβο και την επιγραφή ή τιµή του. Το αρχικό παράδειγµα µετατρέπεται τελικά σε αυτό του σχήµατος 5. 1 doc 22 2 customer 14 16 customer 21 cid 3 6 8 order 13 cid 17 20 4 ALFKI 5 9 oid 12 18 19 BONOD 10 01 11 Σχήµα 5: Παράδειγµα Interval Numbering Scheme Εκ πρώτης όψεως η µέθοδος αυτή δεν φαίνεται να διαφοροποιείται σηµαντικά από την Global Numbering, αφού διαισθητικά φαίνεται να κληρονοµεί τις αδυναµίες της. Στην πραγµατικότητα, αν και η διαίσθηση για τις προβληµατικές καταστάσεις αποδεικνύεται ορθή, παρουσιάζει µια σηµαντική ιδιότητα η οποία αναλύεται στην επόµενη παράγραφο και της προσδίδει ευρωστία και αποδοτικότητα σε επερωτήσεις XPath. Έστω ότι ένας κόµβος p ορίζεται από τις επιγραφές s,l όπου s, η τιµή που έλαβε κατά το πρώτο πέρασµα του αλγορίθµου και l η τιµή κατά το τελευταίο. Η απόλυτη τιµή της διαφοράς τους ( l-s ) µπορεί να µας επιστρέψει έµµεσα του κόµβους απογόνους ή προγόνους του p. Πράγµατι, οι διαφορές των αντίστοιχων τιµών στους απογόνους είναι µικρότερες αυτής του p ενώ των προγόνων µεγαλύτερες. Μπορούµε για παράδειγµα να ορίσουµε ότι για κάθε κόµβο h για τον οποίο ισχύει s h -l h < s p -l p και l p < l h ο κόµβος - 9 -

αυτός είναι απόγονος του p. (ισχύει βέβαια και απλούστερα ως s h < s p και l p < l h ). Το σύνολο των πλεονεκτηµάτων της θα εµφανιστεί καλύτερα κατά την παρουσίαση της προσέγγισης XPath Accelerator στο επόµενο κεφάλαιο. 2.7 H προσέγγιση ORDPATH Μια αξιόλογη προσπάθεια ορισµού ενός ιεραρχικού συστήµατος σηµατοδοσίας κόµβων ενός XML εγγράφου, είναι αυτή της ORDPATH [3]. Η µέθοδος αυτή µπορεί να χαρακτηριστεί απόγονος της Dewey καθώς έχει πολλά κοινά χαρακτηριστικά. Ταυτόχρονα όµως δανείζεται και στοιχεία από την Sparse Numbering Scheme, µε αποτέλεσµα να καθίσταται ως η υβριδική εξέλιξη αυτών. Η µέθοδος αυτή, χρησιµοποιώντας µια πρώτα κατά βάθος διάσχιση του δένδρου, αναθέτει τιµές στους κόµβους µε βάση την µεθοδολογία Dewey, λαµβάνοντας ακεραίους αρχικά µόνο από το σύνολο των περιττών. Χαρακτηριστικό παράδειγµα είναι το σχήµα 6. 1 doc 1.1.1 1.1 custo mer 1.3 custo mer cid 1.1.3 order 1.3.1 cid ALFKI 1.1.1.1 1.1.3.1 oid 1.3.1.1 BONOD 1.1.3.1.1 01 Σχήµα 6: Παράδειγµ α ORDPATH Το πλεονέκτηµα της συγκεκριµένης µεθόδου έναντι των προγόνων της είναι ο τρόπος µε τον οποίο αποθηκεύει τις τιµές που αντιστοιχούν σε κάθε κόµβο. Κάθε τιµή αποτελείται από δύο πεδία, τα L,O. Κάθε ετικέτα γίνεται αντιληπτή από το σύστηµα επεξεργασίας ως µια σειρά από διαδοχικά L/O. Το L σηµατοδοτεί το µήκος του επόµενου στοιχείου σε bits, οπότε ο επεξεργαστής, διαβάζοντας το L γνωρίζει αυτόµατα των αριθµό των bits που πρέπει να αποκωδικοποιήσει ώστε να λάβει την αριθµητική µορφή του επόµενου O. Παράλληλα, η σύµπτυξη των L/O επιτρέπει η αντιστοίχιση ετικέτας σε κάθε κόµβο, να απαιτεί λιγότερο αποθηκευτικό χώρο από ότι η UTF-8 κωδικοποίηση [1]. Οι εισαγωγές µπορούν να γίνουν µε χρήση των ελεύθερων τιµών (αρνητικές ή άρτιες) των ακεραίων. Τέλος, αξίζει να σηµειωθεί ότι το σύνολο του δένδρου µπορεί µε τη µέθοδο αυτή να µετατραπεί σε µια σειρά από bits, βάση της πρώτα κατά βάθος εξερεύνησης. - 10 -

2.8 Σχολιασµός Προσπαθώντας να αξιολογήσουµε τις παραπάνω µεθόδους διατήρησης ιεραρχίας καταλήγουµε στην δηµιουργία της παρακάτω λίστας απαιτήσεων: Η µέθοδος πρέπει να είναι γενική ώστε να υποστηρίζει τόσο την αποσύνθεση όσο και την πιστή αναδόµηση ενός εγγράφου. Η µέθοδος πρέπει να υποστηρίζει εισαγωγές και διαγραφές κόµβων χωρίς να επηρεάζεται η ιεραρχία. Η µέθοδος πρέπει να µπορεί να απαντήσει σε ερωτήµατα που τίθενται από γλώσσες επερωτήσεων ΧΜL όπως η ΧQuery ή η XPath. Με βάση τα παραπάνω, γίνεται αντιληπτό ότι η Local Ordering και η Same Sibling Ordering Scheme δεν µπορούν να ανταποκριθούν στις απαιτήσεις µας στο βαθµό που είναι επιθυµητό. Όµως, όπως θα φανεί και παρακάτω, κάτω από συγκεκριµένες περιπτώσεις µπορούν να αποτελέσουν µια βιώσιµη λύση αποτύπωσης ιεραρχίας. - 11 -

3. Απεικόνιση ΧML δεδοµένων στο σχεσιακό µοντέλο 3.1 Εισαγωγή Στο κεφάλαιο αυτό περνάµε στο ουσιαστικό τµήµα της εργασίας. Εδώ, το σύνολο της παρουσιαζόµενης βιβλιογραφίας αφορά τους διάφορους τρόπους απεικόνισης των XML δεδοµένων σε σχεσιακό µοντέλο. εν θα αρκεστούµε βέβαια σε µια απλή παράθεση των µεθοδολογιών αλλά θα επιχειρηθεί µια σύγκριση των µεθόδων στην προσπάθεια ανάδειξης των πλεονεκτηµάτων και µειονεκτηµάτων τους. Παράλληλα, θα περιγραφεί ο τρόπος µε τον οποίο οι µέθοδοι του προηγούµενου κεφαλαίου συνδυάζονται µε τις µεθοδολογίες κατατµήσεις και τι εξασφαλίζουν. Τέλος θα παρουσιαστεί ο τρόπος µε τον οποίο επερωτήσεις XPath ή XQuery µπορούν να απαντηθούν µέσα από τις απεικονίσεις. Γενικά, µπορούµε να χωρίσουµε τις µεθόδους που εµφανίζονται στην βιβλιογραφία σε δύο µεγάλες κατηγορίες, αυτές που δρουν µε απουσία σχήµατος και αυτές που δρουν µε παρουσία σχήµατος. Η διαφορά τους έγκειται στο γεγονός ότι οι τελευταίες µπορούν να συλλέξουν πληροφορίες σχετικά µε τη δοµή των στοιχείων και την ιεραρχία τους από το σχήµα και να τις εκµεταλλευτούν ώστε να βελτιώσουν την απεικόνιση ενώ οι πρώτες όχι. Η παρουσίαση θα ξεκινήσει µε τις µεθόδους που δρουν µε άγνοια σχήµατος. 3.2 Απεικόνιση µε απουσία σχήµατος Η πρώτη ιδέα που υλοποιήθηκε ήταν η απλή απεικόνιση well formed XML δεδοµένων στο σχεσιακό µοντέλο. Η µόνη απαίτηση ήταν η ύπαρξη ενός parser και µιας µεθόδου αποτύπωσης της ιεραρχικής δοµής των κόµβων. Σαν πρωτογενής λύση χρησιµοποιήθηκε η προσέγγιση LOB, για την οποία µιλήσαµε στην προηγούµενη παράγραφο. Μια ακόµα λύση η οποία υπολείπεται ευελιξίας είναι αυτή του default mapping (απευθείας απεικόνιση). Η µέθοδος αυτή για κάθε διακριτό complex element που εµφανίζεται δηµιουργεί µια σχέση. Κάθε απλό element που είναι εµφωλευµένο σε complex εισάγεται ως πεδίο στη σχέση που αντιστοιχεί στο τελευταίο. Η προσέγγιση αυτή µπορεί να αναπαραστήσει µόνο έγγραφα της δοµής, <table> <column 1></column 1>... <column n></column n> </table> Για το λόγο αυτό θεωρείται αρκετά αδύναµη και δεν θα επεκταθούµε περαιτέρω στην περιγραφή της. Η γενικότερη φιλοσοφία των µεθόδων που θα δούµε είναι η αποθήκευση του συνόλου της πληροφορίας ενός εγγράφου σε ένα προσχεδιασµένο σχεσιακό σχήµα και η αποτύπωση της ιεραρχίας που διέπει τα στοιχεία του εγγράφου. - 12 -

3.2.1 Η προσέγγιση Edge Η προσέγγιση LOB παρουσιάζει πολλά προβλήµατα. Το βασικότερο όλων είναι ότι δεν επιτρέπει την επεξεργασία ενός µόνο πεδίου ενός XML εγγράφου χωρίς την ανάσυρση όλου του εγγράφου. Κάτι τέτοιο, επιβαρύνει αφάνταστα το σύστηµα αποθήκευσης, καθώς ένα αρχείο µπορεί να έχει µέγεθος πολλών ΜΒ. Από την ανάγκη αυτή γεννήθηκε η προσέγγιση των Edge Table [4]. Στην µέθοδο αυτή, διασχίζοντας το δένδρο και εφαρµόζοντας Global Ordering Scheme αρίθµηση, δηµιουργούνται διαδοχικές εγγραφές οι οποίες εισάγονται σε έναν σχεσιακό πίνακα της µορφής [id, parent id, name, value]. Το πεδίο id αποθηκεύει την τιµή που έχει αποδοθεί στον κόµβο κατά την απόδοση τιµών στους κόµβους της δενδρικής απεικόνισης του εγγράφου. Το parent id, είναι ένα ξένο κλειδί, το οποίο αναφέρεται στο πεδίο id και ουσιαστικά «δείχνει» προς τον κόµβο πατέρα του εξεταζόµενου. Αν ο εξεταζόµενος κόµβος είναι ο κόµβος ρίζα τότε το πεδίο αυτό λαµβάνει τιµή -1. Τα πεδία name, value προφανώς αποθηκεύουν το όνοµα και την τιµή του κόµβου (αν υπάρχει η τελευταία). Η συγκεκριµένη µορφή αποθήκευσης θεωρείται από τις πλέον εύστοχες και αποδοτικές για την αποθήκευση XML δεδοµένων δεδοµένης της απουσίας κάποιου σχήµατος. ιατηρεί το µεγαλύτερο µέρος της αρχικής πληροφορίας, ενώ παράλληλα, επιτρέπει µε χρήση κατάλληλων αλγορίθµων [1], να εκτελεστούν επερωτήσεις XPath ή XQuery στα αποθηκευµένα δεδοµένα. Το βασικό µειονέκτηµά της είναι η αναδροµική σχέση ξένου κλειδιού που εµφανίζει. Σε περιπτώσεις όπου ζητείται για παράδειγµα η ανεύρεση του πατέρα ενός κόµβου απαιτείται η εκτέλεση ενός self-join, γεγονός το οποίο µεταφράζεται σε επανειληµµένη ανάσυρση µεγάλου όγκου δεδοµένων (δύο φορές το σύνολο του αρχείου) µε στόχο τη διατήρηση µόνο δύο εγγραφών. Μια εναλλακτική προσέγγιση, εξαιρετικά συγγενής µε την Edge, είναι αυτή των Node Tables [4]. Η λύση αυτή δεν αποσκοπεί στην βελτίωση των µειονεκτηµάτων της προηγούµενης µεθόδου, απλά στην αποθήκευση µεγαλύτερου ποσού πληροφορίας (συνεπώς και επίταση του προβλήµατος). Τα Node Tables προσθέτουν στα Edge Tables τρία επιπλέον πεδία, τα Node type, NS-URI, Data type, τα οποία αντιστοιχούν στον τύπο του κόµβου (attribute/ element), στο namespace ορισµού και στον τύπο των αποθηκευµένων δεδοµένων. Ο πίνακας Edge µετασχηµατιζόµενος σε Node γίνεται [id, parent id, nodetype, name, ns-uri, datatype, value]. 3.2.2 ιαφοροποιήσεις της προσέγγισης Edge Στην βιβλιογραφία έχουν προταθεί διάφορες παραλλαγές της Edge προσέγγισης [1] οι οποίες είχαν σαν στόχο την µείωση των παραπάνω προβληµάτων. Η βασικότερη παραλλαγή είναι αυτή που φαίνεται στο σχήµα 7. Σχήµα 7: Παραλλαγή Edge Table µε προσθήκη Path Table - 13 -

Η προσέγγιση αυτή προτείνει την εισαγωγή ενός επιπλέον πίνακα, ο οποίος για κάθε εγγραφή του πίνακα Edge εισάγει µια εγγραφή στον πίνακα Path η οποία περιέχει τη συνολική διαδροµή από την ρίζα του δένδρου έως τον εξεταζόµενο κόµβο εκφρασµένη σε γλώσσα XPath. Η λύση αυτή δεν προσφέρει σηµαντικά πλεονεκτήµατα συγκρινόµενη µε την αρχική, βελτιώνει όµως το κόστος σε περιπτώσεις απλών επερωτήσεων, αφού ένα σηµαντικό µέρος πληροφορίας µπορεί να εξαχθεί άµεσα από τη βάση χρησιµοποιώντας τον νέο πίνακα. Με βάση την παραπάνω θεώρηση δηµιουργήθηκαν τρεις επιπλέον παραλλαγές, οι οποίες στοχεύουν στην αποδοτικότερη αποθήκευση των δεδοµένων ανάλογα µε το σχήµα αποτύπωσης ιεραρχίας που χρησιµοποιείται. Η πρώτη (αποθήκευση Global Ordering Scheme αριθµηµένων κόµβων) προσθέτει ένα επιπλέον πεδίο σε κάθε εγγραφή, το end descendant id, το οποίο κάθε φορά αποθηκεύει την τιµή του τελευταίου απογόνου το εξεταζόµενου κόµβου. Τα πλεονεκτήµατα που απορρέουν από τη γνώση του συγκεκριµένου πεδίου παρατέθηκαν στην παράγραφο 2. Το σχήµα της βάσης στην περίπτωση αυτή µετασχηµατίζεται σε αυτό του σχήµατος 8. Σχήµα 8: Παραλλαγή Edge Table µε προσθήκη Path Table για Global Ordering Scheme Σε περίπτωση χρήσης Local Ordering Scheme, στη δοµή του πίνακα αποθήκευσης προστίθεται το πεδίο Sibling Index (sindex), όπου καταχωρείται η θέση του εξεταζόµενου κόµβου σε σχέση µε τα αδέρφια του. Η δοµή αυτή, δεδοµένης της απουσίας κάποιου κλειδιού, χρησιµοποιεί έναν µετρητή (id), ο οποίος αυξάνεται κατά την προσθήκη κάποιας νέας εγγραφής. Γίνεται άµεσα αντιληπτό, ότι αυτός ο τρόπος αποθήκευσης, αν τα δεδοµένα δεν υποστούν µεταβολές (ενηµέρωση, διαγραφή) εκφυλίζεται στην προηγούµενη δοµή, καθώς διατηρείται συνεπής πληροφορία για την αναδόµηση του αρχικού εγγράφου µε ταυτόχρονη διατήρηση της ιεραρχικής δοµής του. Παρόλα αυτά, αν γίνει κάποια νέα εισαγωγή, τότε οι τιµές του πεδίου id δεν µπορούν να θεωρηθούν ως δείκτες ιεραρχικής σειράς, και η εξαγωγή συµπερασµού για την ιεραρχία, απαιτεί εκτεταµένη χρήση αναδροµής. Σχήµα 9: Παραλλαγή Edge Table µε προσθήκη Path Table για Local Ordering Scheme Αν βέβαια, το χρησιµοποιούµενο σχήµα αρίθµησης είναι αυτό της Dewey, τότε η δοµή απλουστεύεται και µετατρέπεται σε αυτήν του σχήµατος 10. Ο συνδυασµός Path tables µε Edge tables και Dewey σχήµα αρίθµησης λύνει πολλά από τα προβλήµατα των προηγουµένων µεθόδων. Παύει πλέον να υφίσταται η αναδροµική συσχέτιση ξένου κλειδιού και ένας µεγάλος αριθµός πληροφοριών µπορεί να εξαχθεί πλέον έµµεσα µέσα από την τιµή του πεδίου Dewey ID. Η δοµή του πεδίου αυτού όµως είναι και ο λόγος του βασικού µειονεκτήµατος της προσέγγισης αυτής. Η εξαγωγή της πληροφορίας που βρίσκεται αποθηκευµένη στο πεδίο Dewey ID, απαιτεί τη χρήση συναρτήσεων επεξεργασίας κειµένου, πολλές από τις οποίες πρέπει να προσδιοριστούν από το χρήστη. - 14 -

Άµεση συνέπεια του γεγονότος αυτού είναι η επιβάρυνση του χρόνου επεξεργασίας µιας επερώτησης. Σε πειράµατα που έχουν γίνει [1], φάνηκε ότι ενώ οι Dewey και Global τροποποιήσεις των Edge Tables έχουν σε γενικές γραµµές συγκρίσιµες επιδόσεις, σε περιπτώσεις πολύπλοκων επερωτήσεων, η Dewey καθυστερεί σηµαντικά. Σχήµα 10: Παραλλαγή Edge Table µε προσθήκη Path Table για Dewey Ordering Scheme Τέλος, υπάρχει και η πρόταση Monet [5] η οποία κατανέµει τα στοιχεία σε πολλούς πίνακες, καθένας από τους οποίους αντιστοιχεί σε ένα διαφορετικό µονοπάτι ονοµάτων στοιχείων. Επιπλέον αποθηκεύει τους κόµβους κειµένου και τα χαρακτηριστικά σε έναν ξεχωριστό πίνακα. 3.2.3 H προσέγγιση XPath Accelerator Έως τώρα δεν έχουµε αναφέρει πουθενά την χρήση της µεθόδου Interval encoding. Εύλογα, ο αναγνώστης µπορεί να αναρωτηθεί γιατί δεν παρουσιάστηκε η χρήση της σε συνδυασµό µε την προσέγγιση Edge. Ο λόγος είναι ότι µε βάση τη µέθοδο αυτή, αναπτύχθηκε µια πρωτότυπη ιδέα αποθήκευσης και επερώτησης XML δεδοµένων, ο XPath Accelerator [6]. Γίνεται αντιληπτό από το όνοµα της µεθόδου, ότι ο στόχος του εµπνευστή της δεν περιορίζεται µόνο στην απλή αντιστοίχηση ΧΜL δεδοµένων σε σχεσιακά, αλλά προχωρά ακόµα παραπέρα, αναζητώντας έναν ευέλικτο τρόπο αποθήκευσης που θα επιτρέψει την εύκολη µετάφραση XPath επερωτήσεων στα αποθηκευµένα δεδοµένα. Βασιζόµενοι στην µέθοδο του Interval Encoding, αναγνωρίζουµε κάθε κόµβο από τρεις τιµές, την αριθµητική τιµή που έλαβε κατά την προθεµατική διάσχιση του δένδρου, την αριθµητική τιµή που έλαβε κατά την µεταθεµατική διάσχιση και την ετικέτα του. Με τα δεδοµένα αυτά µπορούµε να απεικονίσουµε τα στοιχεία κάθε δένδρου σε έναν χώρο δύο διαστάσεων. Οι δώδεκα άξονες κατεύθυνσης του XPath µπορούν να µετασχηµατιστούν µε βάση την παραπάνω θεώρηση σε κανόνες οι οποίοι εφαρµόζονται στα δεδοµένα. Πρακτικά κάθε άξονας µεταφράζεται σε µια περιοχή του χώρου απεικόνισης, της οποίας οι περιεχόµενοι κόµβοι αποτελούν τους κόµβους που ικανοποιούν την συνθήκη ελέγχου του άξονα. Τα όρια της περιοχής αυτής ορίζονται από τις παραµέτρους απεικόνισης ενός context κόµβου x στον χώρο. Τα παραπάνω δεδοµένα αδυνατούν να απαντήσουν αποδοτικά σε όλους τους τύπους αξόνων, κρίνεται λοιπόν απαραίτητη η προσθήκη κάποιων επιπλέον πεδίων. Για την αποδοτικότερη απάντηση σε επερωτήσεις που περιέχουν κατευθύνσεις όπως child προστίθεται η αριθµητική επιγραφή του κόµβου πατέρα του εξεταζόµενου κόµβου. Παράλληλα, ακολουθώντας πιστά την προσέγγιση Edge προστίθεται και το πεδίο attribute, το οποίο µεταφέρει την πληροφορία για το είδος του εξεταζόµενου κόµβου. Τελικά καταλήγουµε σε έναν πίνακα της µορφής που φαίνεται στο σχήµα 11. - 15 -

Σχήµα 11: Ο πίνακας του XPath Accelerator Για την καλύτερη αντίληψη της µεθόδου αυτής κρίνεται σκόπιµη η παράθεση ενός παραδείγµατος. Έστω η δενδρική µορφή εγγράφου που εµφανίζεται στο σχήµα 5. Στο χώρο των δύο διαστάσεων η συγκεκριµένη δοµή µπορεί να απεικονιστεί όπως φαίνεται στο σχήµα 12. Παρατηρούµε ότι έχουµε θεωρήσει σαν context κόµβο, τον [oid,9,12]. O κόµβος αυτός σε συνδυασµό µε τους άξονες ορίζει 4 διακριτούς χώρους µε κενή τοµή, οι οποίοι µεταφράζονται στου άξονες descendant(oid), ancestor(oid), following(oid), preceding(oid). Σχήµα 12:Απεικόνιση XML δεδοµένων στον δισδιάστατο χώρο εδοµένης λοιπόν µιας επερώτησης XPath [17] η πλοήγηση µπορεί να γίνει µέσα από απλές αριθµητικές συγκρίσεις οριζόµενες από τους άξονες της επερώτησης. Το σύνολο των κανόνων που αντιστοιχούν σε κάθε άξονα της XPath παρουσιάζεται αναλυτικά στο [6]. Η διαφοροποίηση στον τρόπο απεικόνισης καθιστά την µέθοδο αυτή ταχύτερη της Edge. Πειράµατα έχουν δείξει ότι η επιτάχυνση αγγίζει ακόµα και τον παράγοντα 5, γεγονός που καθιστά τη µέθοδο ως µια από τις καλύτερες τόσο για απεικόνιση XML δεδοµένων σε σχεσιακό µοντέλο όσο και για την εκτέλεση XML επερωτήσεων σε σχεσιακά δεδοµένα. Ένα βασικό µειονέκτηµα του XPath Accelerator (όπως άλλωστε και όλων των απεικονίσεων µε έλλειψη σχήµατος) είναι η περίπτωση των εισαγωγών. Στις εισαγωγές, - 16 -

για να διατηρηθεί η συνέπεια της απεικόνισης απαιτείται η επαναρίθµηση των κόµβων, µε αποτέλεσµα η διαδικασία να επιβραδύνεται σηµαντικά. Κάτι τέτοιο δεν συµβαίνει βέβαια µε τις διαγραφές, καθώς µια απλή αφαίρεση της πλειάδας που αντιστοιχεί στον διαγραφέντα κόµβο αρκεί για τη διατήρηση της συνέπειας και τη σωστή απάντηση µετέπειτα επερωτήσεων. 3.2.4 Άλλες προσεγγίσεις Οι µέθοδοι που παρουσιάστηκαν παραπάνω δεν είναι οι µοναδικές που έχουν προταθεί. Αποτελούν όµως τις βασικότερες και πλέον αναγνωρισµένες από την επιστηµονική κοινότητα. Βέβαια, δεν πρέπει να αµελούµε και άλλες ιδέες, που αν και παλιότερες, προσέφεραν στην ανάπτυξη του συγκεκριµένου ερευνητικού πεδίου. Μια τέτοια µέθοδος προτείνεται στο [8]. Η µέθοδος αυτή αποτελεί ουσιαστικά µια παραλλαγή της Edge, και πιθανό πρόδροµο της τεχνικής Inlining που θα δούµε παρακάτω. Ο αλγόριθµος απεικόνισης, δηµιουργεί τόσους πίνακες, όσες και οι διαφορετικές επιγραφές που συναντά στο έγγραφο. Κάθε πίνακας που εµφανίζεται έχει τη δοµή ενός κλασικού Edge πίνακα. Το βασικό µειονέκτηµα αυτής της µεθόδου είναι η αποδοτικότητά της. Ενώ είναι σχεδιασµένη να διαχειρίζεται δεδοµένα µε απουσία κάποιου σχήµατος, η απόδοσή της είναι αισθητά χαµηλή, καθώς απαιτεί µεγάλο αριθµό υπολογισµών ώστε να αποφανθεί για την ιεραρχία ενός συνόλου στοιχείων. Το κόστος αυτό οφείλεται στις διαρκείς ζεύξης µεταξύ πινάκων, οι οποίες απαιτούνται για την εκτέλεση µιας απλής επερώτησης. Μια άλλη προσέγγιση, η οποία αναφέρεται στο [7], προτείνει την διαχείριση συµβολοσειρών, για την αποδοτική αποθήκευση των δεδοµένων. Ουσιαστικά, για κάθε στοιχείο αποθηκεύονται όλα τα απαιτούµενα δεδοµένα, µαζί µε την απόσταση από την αρχή του εγγράφου. Είναι προφανές ότι η µέθοδος αυτή υπολείπεται ευελιξίας και έχει σηµαντικό κόστος τόσο στις ανανεώσεις των δεδοµένων όσο και στις ενδεχόµενες επερωτήσεις που απαιτούν κάποια µορφή self join. Οι ιδέες που παραθέσαµε στην παράγραφο αυτή µε κύρια την πρόταση Edge και τις παραλλαγές της αποτελούν λύσεις για συστήµατα αποθήκευσης XML εγγράφων των οποίων το σχήµα δεν είναι γνωστό. Επιπροσθέτως, στην περίπτωση που ένα σύστηµα χρησιµοποιείται για την αποθήκευση µεγάλου αριθµού XML εγγράφων κατανεµηµένα σε πολλά διαφορετικά σχήµατα και πάλι, πιθανώς, οι προσεγγίσεις που αγνοούν την ύπαρξη σχήµατος να είναι καταλληλότερες. Αυτό συµβαίνει γιατί, όπως θα δούµε στην επόµενη παράγραφο, τα συστήµατα που λαµβάνουν υπόψη το σχήµα των εγγράφων δηµιουργούν ξεχωριστό σχεσιακό σχήµα για κάθε διαφορετικό XML σχήµα. Αν ο αριθµός των σχηµάτων είναι υπερβολικά µεγάλος και για κάθε σχήµα αντιστοιχεί αναλογικά µικρός αριθµός εγγράφων, τότε η συντήρηση τόσο πολλών διαφορετικών βάσεων δεδοµένων ενδεχοµένως να δηµιουργεί προβλήµατα απόδοσης στο σχεσιακό σύστηµα ή στον εξυπηρετητή. - 17 -

3.3 Απεικόνιση µε παρουσία σχήµατος 3.3.1 Απεικόνιση DTD σε σχεσιακό σχήµα Στην παράγραφο αυτή θα παρουσιάσουµε τον τρόπο µε τον οποίο η πληροφορία που περιέχεται σε ένα Document Type Definition (DTD) το οποίο ορίζει την δοµή ενός XML εγγράφου (π.χ. ποια elements, attributes κτλ. επιτρέπονται σε ένα έγγραφο) µπορεί να χρησιµοποιηθεί για τη δηµιουργία ενός σχεσιακού σχήµατος Προτού προχωρήσουµε όµως περαιτέρω κρίνεται η σύντοµη παράθεση µιας περιγραφής για τα DTDs. Το DTD έχει κληρονοµηθεί από την SGML και ένα XML έγγραφο δεν είναι απαραίτητο να αντιστοιχεί σε ένα DTD. Εντούτοις, τα DTDs συχνά χρησιµοποιούνται για να διασφαλίσουν την ορθότητα του εγγράφου, ειδικά σε µία B2B (business to business) συναλλαγή κατά την οποία ανταλλάζονται XML έγγραφα. Τα DTDs προσδιορίζουν την δοµή ενός XML εγγράφου και τα ίδια προσδιορίζουν τους εαυτούς τους χρησιµοποιώντας ENBF γραµµατική η οποία δεν ακολουθεί το XML συντακτικό. Ένα document θεωρείται well-formed αν είναι συντακτικά σωστό, δηλ αν ακολουθεί τους παρακάτω κανόνες: Υπάρχει µόνο ένα root element. Για κάθε element πρέπει να έχει ένα tag αρχής και ένα τέλους. Σωστά φωλιασµένα tags. Τα attribute values πρέπει να περιέχονται σε εισαγωγικά. εν πρέπει να υπάρχουν οι δεσµευµένοι χαρακτήρες της XML ( & < > ). εν επιτρέπονται σχόλια (comments) ή processing instructions (PI) µέσα στα tags. Όλα τα προηγούµενα XML παραδείγµατα που είδαµε, ήταν well formed αλλά δεν ήταν έγκυρα (valid) διότι δεν ακολουθούσαν κάποια προδιαγραφή η οποία θα µπορούσε να ελέγξει την εγκυρότητα των δεδοµένων. Για αυτό τον λόγο χρησιµοποιούµε DTDs (και XML Schemas όπως θα δούµε στην συνέχεια). Παρακάτω θα δοθεί ένα XML έγγραφο το οποίο είναι well-formed, δηλαδή ακολουθεί τους συντακτικούς κανόνες της XML και είναι έγκυρο, δηλαδή η εγκυρότητα των δεδοµένων επαληθεύεται από ένα DTD: <?xml version= 1.0 encoding= Greek?> <!DOCTYPE Προσωπικό [ <!ELEMENT Προσωπικό (ΜελοςΠροσωπικού+)> <!ELEMENT ΜελοςΠροσωπικού (όνοµα)> <!ATTLIST ΜελοςΠροσωπικού τηλεφωνο NMTOKEN #REQUIRED> <!ELEMENT όνοµα (#PCDATA)> ]> <Προσωπικό> <ΜελοςΠροσωπικού τηλεφωνο= 2104170166 > <όνοµα>μαγδαληνός Παναγής</όνοµα> </ΜέλοςΠροσωπικού> <ΜέλοςΠροσωπικού τηλεφωνο= 2109911999 > - 18 -

<όνοµα>λούτας Νίκος</όνοµα> </ΜέλοςΠροσωπικού> </Προσωπικό> Το πρώτο τµήµα είναι το DTD του XML εγγράφου. εν είναι εφικτό στο παρόν κείµενο να αναλυθούν οι κανόνες του DTD, οποίος όµως ενδιαφέρεται, µπορεί να αναφερθεί στο [22]. Επίσης, χρησιµοποιώντας στο XML declaration, encoding= Greek δεν υπάρχει πρόβληµα για τον XML parser να διαβάσει ελληνικά στο XML έγγραφο. Kάθε DTD, ξεκινάει στο XML έγγραφο χρησιµοποιώντας το document type declaration (DOCTYPE) το οποίο δείχνει που βρίσκεται το DTD, εννοώντας αν βρίσκεται µέσα στο ίδιο XML έγγραφο το οποίο επικυρώνει (όπως στο παραπάνω παράδειγµα) ή αν βρίσκεται σε ξεχωριστό αρχείο (*.dtd). Στην τελευταία περίπτωση, η σύνταξη που χρησιµοποιείται είναι παρακάτω: <?xml version= 1.0 encoding= Greek?> <!DOCTYPE prosopiko SYSTEM prosopiko.dtd > <prosopiko> όπου το αρχείο prosopiko.dtd είναι ένα text αρχείο το οποίο περιέχει τις υπόλοιπες εντολές που παρουσιάστηκαν στο παράδειγµά µας, δηλ. <!ELEMENT Προσωπικό (ΜελοςΠροσωπικού+)> <!ELEMENT ΜελοςΠροσωπικού (όνοµα)> <!ATTLIST ΜελοςΠροσωπικού τηλεφωνο NMTOKEN #REQUIRED> <!ELEMENT όνοµα (#PCDATA)> Γενικά είναι χρήσιµό να µεταφέρεται ένα DTD σε άλλο αρχείο διότι µε αυτό τον τρόπο µπορεί να χρησιµοποιηθεί από πολλά xml αρχεία για την ορθότητα και την προτυποποίηση εγγράφων σε µία εταιρία ή σε µία συναλλαγή µεταξύ εταιριών. Επίσης αφαιρώντας το DTD από το σώµα του xml εγγράφου µειώνεται σηµαντικά το overhead της επεξεργασίας του. Μπορούµε να τροποποιήσουµε το προηγούµενο παράδειγµα ώστε να έχουµε ένα πλήρες όνοµα διαδροµής: <!DOCTYPE prosopiko SYSTEM c:\temp\xml\prosopiko.dtd > ή µπορεί το αρχείο να είναι διαθέσιµο στον διαδίκτυο: <!DOCTYPE prosopiko SYSTEM http://www.xml.org/prosopiko.dtd > ή το DTD µπορεί να είναι ένα δηµοσιευµένο standard: <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/tr/html4/strict.dtd > 3.3.1.1 Inlining Η σηµαντικότερη απόπειρα αποτύπωσης της δοµικής πληροφορίας που φέρει ένα DTD σε ένα σχεσιακό σχήµα είναι αυτή που περιγράφεται στο [11] και ονοµάζεται Inlining. Η - 19 -

µεθοδολογία αυτή αναπτύσσοντας τo DTD σε µορφή γράφου και εφαρµόζοντας συγκεκριµένους κανόνες καταλήγει σε ένα σύνολο πινάκων οι οποίοι είναι και τελικό αποτέλεσµά της. Αξίζει να τονισθεί στο σηµείο αυτό ότι η ανασύνθεση του αρχικού DTD από το σχεσιακό µοντέλο δεν είναι απαραίτητο να υποστηρίζεται. Η παράθεση της µεθόδου αποτελείται από τρία στάδια. Αρχικά παρουσιάζονται οι κανόνες/ µετασχηµατισµοί απλοποίησης του εγγράφου. Στη συνέχεια ο τρόπος µε τον οποίο είναι δυνατή η αντιστοίχιση του σχήµατος σε σχεσιακό και τέλος εµφανίζονται κάποια πειραµατικά αποτελέσµατα που αναδεικνύουν τη χρησιµότητα του αλγορίθµου. Κανόνες Απλοποίηση Οι περισσότερες δυσκολίες που δηµιουργούνται από ένα DTD έγγραφο οφείλονται στον τρόπο ορισµού των στοιχείων. Όµως για µια γλώσσα XML επερωτήσεων οι ορισµοί δεν έχουν σηµασία. Σηµασία έχει η διατήρηση της ιεραρχίας, ο τύπος του κάθε πεδίου και η κωδικοποίηση των δεδοµένων. Συνεπώς µπορούν να οριστούν κάποιοι κανόνες απλοποίησης οι οποίοι εφαρµοζόµενοι διευκολύνουν τον αλγόριθµο απεικόνισης. Οι εφαρµοζόµενοι µετασχηµατισµοί είναι τριών ειδών. Αρχικά εµφανίζονται οι µετασχηµατισµοί εξοµάλυνσης. Στόχους τους είναι να µετατρέψουν εµφωλευµένες σχέσεις σε απλές. Χαρακτηριστικά έχουµε το παρακάτω παράδειγµα: (e1,e2)* e1*, e2* (e1,e2)? e1?, e2? (e1 e2) e1?, e2? Μια άλλη µορφή µετασχηµατισµού είναι ο µετασχηµατισµός απλοποίησης του µοναδιαίου τελεστή. Στόχος εδώ είναι να µειωθούν οι µοναδιαίοι τελεστές σε έναν. Πρακτικά, οι κανόνες που εφαρµόζονται είναι οι παρακάτω: e1** e1* e1?? e1? e1?* e1* e1*? e1* Τέλος χρησιµοποιούνται και οι µετασχηµατισµοί οµαδοποίησης όπου πολλά στοιχεία µε κοινό όνοµα συναθροίζονται σε ένα µέσα από την εφαρµογή των προηγούµενων κανόνων. Η εφαρµογή φαίνεται στα παρακάτω παραδείγµατα:..., e1*,..., e1*,... e1*,......, e1?,..., e1?,... e1?,......, e1?,..., e1*,... e1*,......, e1*,.., e1?,... e1*,..., e1,..., e1,... e1*, Κατόπιν της εφαρµογής των µετασχηµατισµών αυτών το DTD έχει πλέον απλοποιηθεί. Επόµενο βήµα είναι η αναπαράσταση του σε µορφή δένδρου ή γράφου. Ο γράφος που δηµιουργείται ονοµάζεται DTD Graph και δοµείται βάσει των παρακάτω κανόνων. Κάθε element αναπαρίσταται ως κόµβος του γράφου. Οι ακµές που συνδέουν τα elements µεταξύ τους αντικατοπτρίζουν την δοµή ιεραρχίας του DTD. - 20 -

Οι ακµές φέρουν σαν βάρη τους ποσοτικούς τελεστές εµφάνισης κάθε element ή attribute Από το σηµείο αυτό και µετά αρχίζει η διαδικασία δηµιουργίας σχεσιακού σχήµατος. Η διαδικασία αυτή εµφανίζεται µε τρεις τρόπους, καθένας από τους οποίους είναι αποτέλεσµα τροποποιήσεων στον αλγόριθµο εξαιτίας προβληµάτων που εµφανίστηκαν. Basic Inlining Η βασική διαδικασία του αλγορίθµου ξεκινά µε την επιλογή ενός κόµβου ρίζα. Ο κόµβος ρίζα είναι αυτός από τον οποίο θα ξεκινήσει η διαδικασία δόµησης του σχήµατος. Στη συνέχεια διατρέχεται η δοµή µε χρήση µια πρώτα κατά βάθος αναζήτησης (DFS). Κάθε κόµβος σηµαδεύεται την πρώτη φορά που διέρχεται ο αλγόριθµος από αυτόν και χάνει το σηµάδι όταν έχουν επεξεργαστεί όλα τα παιδιά του. Για κάθε κόµβο που µαρκάρεται για πρώτη φορά στον DTD γράφο, δηµιουργείται ένας νέος κόµβος σε ένα δεύτερο γράφηµα, το element graph. Ταυτόχρονα δηµιουργείται και µια ακµή ανάµεσα στο νέο κόµβο του element graph και στον πιο πρόσφατα εισαχθέντα που έχει κοινή επιγραφή µε αυτήν του πατέρα του νέου κόµβου στον DTD Graph. Η επιγραφή στην ακµή είναι ίδια µε την αντίστοιχη ακµή στον DTD Graph. Αν επιχειρηθεί η διάσχιση ενός ήδη µαρκαρισµένου κόµβου τότε δηµιουργείται στο Element Graph µια αντίστροφης φοράς ακµή, η οποία ξεκινά από τον κόµβο που σταµάτησε η επεξεργασία και καταλήγει στον κόµβο που εισήχθη τελευταίος. Η διαδικασία αυτή επαναλαµβάνεται έως ότου µαρκαριστούν όλοι οι κόµβοι του DTD γράφου. Στη συνέχεια, µε βάση τον Element γράφο δηµιουργείται το σχήµα της βάση ακολουθώντας τους παρακάτω κανόνες: Για τον κόµβο ρίζα του Element Graph δηµιουργείται µια σχέση Κάθε κόµβος απόγονος της ρίζας εισάγεται στην ίδια σχέση µε την προϋπόθεση ότι: o Η ακµή που τον συνδέει µε την ρίζα δεν περιέχει ποσοτικό τελεστή * o εν εµφανίζεται κάποια αντίστροφη ακµή Για κάθε κόµβος ο οποίος δεν µπορεί να ακολουθήσει τον προηγούµενο κανόνα, δηµιουργείται µια επιπλέον σχέση. Οι σχέσεις αυτές συνδέονται µε ξένα κλειδιά µε την σχέση πατέρα. Το σχήµα που δίνει σαν αποτέλεσµα αυτή η τεχνική είναι αποδοτικό για απλές επερωτήσεις. Σε περιπτώσεις τις οποίες οι ζητούµενες εγγραφές είναι αποτέλεσµα πολύπλοκης επιλογής και απαιτείται η χρήση ενός συνόλου επερωτήσεων, τότε το κόστος υπολογισµού είναι µη αποδεκτό. Παράλληλα, κατά τη διαδικασία δηµιουργίας σχέσεων, πολλά στοιχεία επαναλαµβάνονται σε διαφορετικές σχέσεις, καθώς ο βαθµός εισόδου του κόµβου στον οποίο αντιστοιχούν µπορεί να µην είναι 1. Ουσιαστικά, κάθε ακµή που καταλήγει σε κάποιον κόµβο, µεταφράζεται σε εισαγωγή του θεωρούµενου κόµβου στη σχέση του κόµβου από τον οποίο ξεκινά η εξεταζόµενη ακµή. Το γεγονός αυτό έχει σαν αποτέλεσµα σε πολύπλοκα DTDs η τεχνική του Basic Inlining να µην - 21 -

µπορεί να ανταποκριθεί, καθώς η διαδικασία ενδέχεται να µην ολοκληρωθεί λόγω έλλειψης πόρων. Shared Inlining Το µειονέκτηµα αυτό προσπαθεί να βελτιώσει η τεχνική του Shared Inlining. Στην προκειµένη περίπτωση ο αλγόριθµος τροποποιείται ώστε να δηµιουργεί σχέσεις για κάθε κόµβο ο οποίος εµφανίζεται στο Element Graph µε βαθµό εισόδου µεγαλύτερο του 1. Οι υπόλοιποι κανόνες που εφαρµόζονται είναι κοινοί. Το βασικό πλεονέκτηµα της επεξεργασίας του Shared Inlining είναι ο µικρός αριθµός σχέσεων που έχει σαν αποτέλεσµα. υστυχώς όµως, αν και συµπεριφέρεται καλύτερα από το Basic Inlining στον τοµέα αυτό υπολείπεται του τελευταίου σε περιπτώσεις πολύπλοκων επερωτήσεων, όπου εκεί, δεδοµένου του µεγάλου αριθµού ζεύξεων που απαιτούνται επιβαρύνει σηµαντικά το σύστηµα επεξεργασίας. Hybrid Inlining εδοµένου ότι το Basic Inlining αποδίδει πολύ καλά σε ένα συγκεκριµένο σύνολο επερωτήσεων, ενώ το Shared Inlining δηµιουργεί ένα µικρό σχήµα, κρίνεται σκόπιµο να επιχειρηθεί ο συνδυασµός τους ώστε να δηµιουργηθεί µια µέθοδος η οποία να περιέχει τόσο τα πλεονεκτήµατα του ενός όσο και τα πλεονεκτήµατα του άλλου. Η µέθοδος αυτή ονοµάζεται Hybrid Inlining, και κληρονοµεί τα πλεονεκτήµατα των δύο προηγούµενων. Η διαφοροποίησή της έγκειται στο γεγονός ότι δηµιουργούνται µεν ξεχωριστές σχέσεις για όλους τους κόµβους µε βαθµό εισόδου µεγαλύτερου του ένα, αλλά ταυτόχρονα, οι θεωρούµενοι κόµβοι εισάγονται στη σχέση πατέρα αν και µόνο αν η ακµή δεν φέρει ποσοτικό τελεστή ή δεν εµφανίζεται κάποια ανάστροφη ακµή. Σε όλη την παραπάνω ανάλυση δεν αναφέραµε σε κανένα σηµείο την χρήση κάποιας µεθόδου διατήρησης ιεραρχικής δοµής. Πράγµατι, κάτι τέτοιο παραλήφθηκε, κυρίως λόγο του γεγονότος ότι είναι αρκετά απλό. Η µέθοδος του Inlining µπορεί να συνδυαστεί µε όλες τις µεθόδους που αναφέρθηκαν στην παράγραφο 2. Πειραµατικά αποτελέσµατα [1] µάλιστα απέδειξαν ότι η τεχνική του Inlining µπορεί να καταστήσει αποδοτικές προσεγγίσεις όπως η Local Ordering και οι απόγονοί της. Αναφορικά µε τις διαφορετικές εκφάνσεις της τεχνικής, εξίσου καλά έχουν συµπεριφερθεί τόσο η Hybrid προσέγγιση όσο και η Shared [11]. Αντίθετα, το Basic Inlining, αν και προποµπός των υπολοίπων δεν ανταποκρίνεται τόσο καλά όσο οι απόγονοί του, εξαιτίας των θεµάτων που αναπτύξαµε παραπάνω. Το Inlining, και η υποκείµενη θεωρία του αποτέλεσε απαρχή ενός συνόλου µεθόδων που αναπτύχθηκαν µε στόχο την αποδοτική αποτύπωση ενός DTD εγγράφου σε σχεσιακό µοντέλο. Μια από τις χαρακτηριστικότερες θα αναλυθεί παρακάτω. 3.3.1.2 Απεικόνιση DTDs σε Object Schemas Μια προσέγγιση λίγο διαφορετική από το Inlining, αλλά συγγενική σαν σύλληψη παρουσιάζεται στο [12]. Η απεικόνιση ενός DTD σε σχεσιακό σχήµα γίνεται µέσα από την εκτέλεση δύο διαδοχικών βηµάτων. Το πρώτο βήµα συνίσταται στην απεικόνιση του DTD σε αντικειµενοστραφές σχήµα (object schema) και στην απεικόνιση του τελευταίου - 22 -

σε σχεσιακό. Η ιδέα αυτή εκµεταλλεύεται την αντικειµενοστραφή φύση της XML, δίνοντας πολύ καλά αποτελέσµατα. Παράλληλα, χαρακτηρίζεται από την ικανότητα αντίστροφης απεικόνισης, δηλαδή τη δυνατότητα αναδηµιουργίας ενός DTD από το σχεσιακό σχήµα που παρέχεται. Η τελευταία ιδιότητα δεν υποστηρίζεται από το Inlining, µε αποτέλεσµα η παρούσα µέθοδος να λειτουργεί συµπληρωµατικά στο συγκεκριµένο θέµα. Αντιστοίχιση DTD σε αντικειµενοστραφές σχήµα Η αντιστοίχιση αρχίζει µε την θεώρηση ότι οι τύποι elements είναι τύποι δεδοµένων. Στοιχεία που έχουν σαν περιεχόµενο µόνο PCDATA ονοµάζονται απλά στοιχεία (simple element types). Τα στοιχεία αυτά φέρουν µια και µόνο τιµή και µπορούν συνήθως να αναπαρασταθούν από κάποιον πρωτογενή τύπο δεδοµένων. Τα attribute µπορούν να θεωρηθούν και αυτά ως απλοί τύποι δεδοµένων. Τύποι στοιχείων που έχουν σαν περιεχόµενο άλλα στοιχεία ή χαρακτηριστικά (attributes) ονοµάζονται πολύπλοκοι τύποι στοιχείων (complex element types). Τα δεδοµένα αυτά µπορούν να θεωρηθούν ως η αντιπροσώπευση µιας κλάσης, µε βάση την προγραµµατιστική θεώρηση γλωσσών όπως η Java, ή µιας δοµής struct αν χρησιµοποιηθεί σαν γλώσσα αναφοράς η C ή η Pascal. Αξίζει να σηµειωθεί ότι κάποιο στοιχείο το οποίο φέρει µηδενικό περιεχόµενο αλλά έχει χαρακτηριστικά (attributes) θεωρείται και αυτό complex element. Ο αλγόριθµος αρχικά αντιστοιχεί απλά στοιχεία σε πρωτογενείς τύπους δεδοµένων. Για παράδειγµα ένα στοιχείο µε όνοµα Τίτλος αντιστοιχείται σε συµβολοσειρά ενώ ένα στοιχείο Τιµή σε τύπο φυσικού αριθµού. Τα complex elements αντιστοιχούνται σε κλάσεις και κάθε εµφωλευµένο στοιχείο που περιέχουν θεωρείται χαρακτηριστικό/ γνώρισµα της κλάσης. Ο τύπος κάθε γνωρίσµατος ορίζεται από την αντιστοίχιση του στοιχείου. Έτσι, απλή τύποι αντιστοιχούνται σε πρωτογενείς τύπους δεδοµένων ενώ κάθε complex element εµφανίζεται ως αναφορά στην αντίστοιχη κλάση που έχει οριστεί. Τέλος χαρακτηριστικά ενός τύπου στοιχείων (attributes) αντιστοιχούνται σε ιδιότητες (properties) της αντίστοιχης κλάσης. Ο τύπος κάθε ιδιότητας ορίζεται από τον τρόπο µε τον οποίο γίνεται η αντιστοίχιση απλών στοιχείων σε πρωτογενείς τύπους δεδοµένων. Σαν χαρακτηριστικό παράδειγµα θεωρούµε το παρακάτω DTD. Παρατηρούµε ότι ορίζουµε έναν τύπο στοιχείου, τον Α που φέρει σαν περιεχόµενο δύο τύπους στοιχείων, τους Β,C. O C µε τη σειρά του περιέχει και αυτός δύο άλλους τύπους στοιχείων, τους D, E. Οι Β, D, E είναι όλοι απλοί τύποι στοιχείων ενώ οι Α, C complex. Τέλος ο Α φέρει και ένα χαρακτηριστικό, το F. DTD Classes <!ELEMENT A (B, C)> class A { <!ELEMENT B (#PCDATA)> String b; <!ATTLIST A F CDATA #REQUIRED> C c; String f; } - 23 -

<!ELEMENT C (D, E)> class C { <!ELEMENT D (#PCDATA)> String d; <!ELEMENT E (#PCDATA)> String e; } Η αντιστοίχιση ορίζεται ως ένα σύνολο αποτελούµενο από 2 κλάσεις, τις A, C, µια για κάθε complex element του µοντέλου µας. Τα B, D, E, F, αντιστοιχούνται για λόγους απλότητας σε συµβολοσειρές (θα µπορούσαν να είναι ακέραιοι,...). Αξίζει να παρατηρήσουµε ότι δεδοµένης της εµφώλευσης του C στο A, στον ορισµό της κλάσης A εµφανίζεται ένα πεδίο τύπου C το οποίο αποτελεί την αναφορά στην κλάση C. Ένα βασικό µειονέκτηµα της έως τώρα παρουσίασης, είναι η αδυναµία αυτόµατου ορισµού του τύπου κάθε απλού πεδίου. Ο ορισµός του τύπου κάποιου simple element απαιτεί την παρέµβαση του χρήστη, γεγονός που αφαιρεί ευελιξία από τη µέθοδο. Κάτι τέτοιο όπως θα δούµε στη συνέχεια µπορεί να αποφευχθεί µε τη χρήση XML Schema. Αντιστοίχιση αντικειµενοστραφούς σχήµατος σε σχεσιακό Στο δεύτερο τµήµα του αλγορίθµου, αυτό της µετάφρασης από το αντικειµενοστραφές σχήµα σε σχεσιακό, κάθε κλάση µετατρέπεται σε πίνακα, και κάθε αναφορά σε κλάση σε αναφορά ξένου κλειδιού. Έτσι, οι κλάσεις που ορίσαµε στο προηγούµενο παράδειγµα µετατρέπονται στους παρακάτω πίνακες. Classes Tables class A { Table A: String b; Column b C c; Column c_fk String f; Column f } class C { Table C: String d; Column d String e; Column e } Column c_pk Ο τρόπος µε τον οποίο αποφασίζει ο αλγόριθµος για την σχέση στην οποία θα τοποθετηθεί το πρωτεύον κλειδί και τη σχέση στην οποία θα τοποθετηθεί το ξένο κλειδί είναι ο ίδιος µε αυτόν του σχεσιακού µοντέλου. Ανάλογα µε τον ποσοτικό τελεστή που εµφανίζεται στο DTD (*,?,...) αποφασίζεται το είδος της συσχέτισης (1-1, 1-n, n-1, n-n). Κατόπιν τούτου, ανατίθεται το πρωτεύον κλειδί ανάλογα. Σε περιπτώσεις συσχετίσεων n-n, δηµιουργείται ένας επιπλέον πίνακας ο οποίος χρησιµοποιείται για τη ζεύξη των δύο επιµέρους, και φέρει τις αντίστοιχες αναφορές ξένων κλειδιών. Με ανάλογο τρόπο µπορεί να δοµηθεί και η αναδροµική συσχέτιση ενός στοιχείου µε τον εαυτό του. Κάτι τέτοιο στο DTD εµφανίζεται ως εµφώλευση ενός τύπου στοιχείου - 24 -