• Nenhum resultado encontrado

Το σύστημα εκτελείται πάνω από κατανεμημένο δίκτυο, κι υλοποιεί τον αλγόριθμο ευρετηρίασης των εισερχόμενων επερωτήσεων σε κόμβους Rjoin, ενώ χρησιμοποιεί και τους αλγορίθμους CQC και CSBV για σύγκριση σε ταχύτητα και πλήθος μηνυμάτων

N/A
N/A
Protected

Academic year: 2023

Share "Το σύστημα εκτελείται πάνω από κατανεμημένο δίκτυο, κι υλοποιεί τον αλγόριθμο ευρετηρίασης των εισερχόμενων επερωτήσεων σε κόμβους Rjoin, ενώ χρησιμοποιεί και τους αλγορίθμους CQC και CSBV για σύγκριση σε ταχύτητα και πλήθος μηνυμάτων"

Copied!
63
0
0

Texto

(1)

ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

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

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

Επεξεργασία συνεχών επερωτήσεων σε σημασιολογικά δεδομένα πάνω από κατανεμημένους πίνακες κατακερματισμού

Δημήτριος Κ. Ράπτης

Επιβλέπων: Κουμπαράκης Μανόλης, Καθηγητής ΕΚΠΑ

ΑΘΗΝΑ Φεβρουάριος 2012

(2)

Επεξεργασία συνεχών επερωτήσεων σε σημασιολογικά δεδομένα πάνω από κατανεμημένους πίνακες κατακερματισμού

Δημήτριος Κ. Ράπτης Α.Μ.: Μ954

ΕΠΙΒΛΕΠΩΝ: Κουμπαράκης Μανόλης, Καθηγητής ΕΚΠΑ

ΕΞΕΤΑΣΤΙΚΗ ΕΠΙΤΡΟΠΗ: Αλέξης Δελής, Καθηγητής

Φεβρουάριος 2012

(3)

Στην παρούσα εργασία παρουσιάζω την υλοποίηση ενός συστήματος επεξεργασίας συνεχών επερωτήσεων σε σημασιολογικά δεδομένα πάνω από κατανεμημένους πίνακες κατακερματισμού. Το σύστημα εκτελείται πάνω από κατανεμημένο δίκτυο, κι υλοποιεί τον αλγόριθμο ευρετηρίασης των εισερχόμενων επερωτήσεων σε κόμβους Rjoin, ενώ χρησιμοποιεί και τους αλγορίθμους CQC και CSBV για σύγκριση σε ταχύτητα και πλήθος μηνυμάτων. Το σύστημα κατανεμημένων πινάκων κατακερματισμού Pastry παρέχει τις λειτουργίες επικοινωνίας και μεταφοράς δεδομένων μεταξύ των κόμβων.

ΘΕΜΑΤΙΚΗ ΠΕΡΙΟΧΗ: σημασιολογικός ιστός

ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ: κατανεμημένες βάσεις δεδομένων, κατανεμημένοι πίνακες κατακερματισμού, ροές δεδομένων, συνεχείς επερωτήσεις, σημασιολογικός ιστός

(4)

In this work I present the implementation of a system for processing continuous queries on semantic data over distributed hash tables. The system is executed on a distributed network, and implements the RJoin algorithm for indexing incoming queries to nodes while also using the CQC and CSBV algorithms for speed and communication costs comparison. Communication and data transfer services are supplied by the distributed hash table system Pastry.

SUBJECT AREA: semantic web

KEYWORDS: distributed databases, distributed hash tables, data streams, continuous queries, semantic web

(5)

Η υποστήριξη και συμβουλές που μου παρείχε ο επιβλέπων καθηγητής κος.

Κουμπαράκης υπήρξαν σημαντικές, και τον ευχαριστώ για τη συμβολή του στην ολοκλήρωση της παρούσας εργασίας, καθώς και για την υπομονή του και για το ότι μου επέτρεψε να εκπληρώσω την επιθυμία μου να ασχοληθώ ενεργά με τον τόσο ενδιαφέροντα για μένα τομέα του σημασιολογικού ιστού. Καθοριστική υπήρξε και η βοήθεια και συμπαράσταση που με αυταπάρνηση και υπομονή μου παρείχε η υποψήφια διδάκτωρ Ίρις Μηλιαράκη, και για την οποία της είμαι βαθύτατα ευγνώμων. Θέλω επιπλέον να ευχαριστήσω τους συντρόφους και συναδέλφους μου στο Σύλλογο Αποφοίτων του Τμήματος Πληροφορικής και Τηλεπικοινωνιών Πανεπιστημίου Αθηνών για την εργατικότητά τους που υπήρξε παράδειγμα για μένα, αλλά και τους πολλούς φίλους μου για την ηθική υποστήριξη στις δύσκολες στιγμές που η αποφασιστικότητά μου χώλαινε και η παραγωγικότητά μου ήθελε ώθηση.

(6)

ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ...7

ΠΡΟΛΟΓΟΣ...8

ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ...9

1.1 Αντικείμενο εργασίας...9

1.2. Οργάνωση εργασίας...9

ΚΕΦΑΛΑΙΟ 2: ΥΠΟΒΑΘΡΟ...11

2.1. Δίκτυα Ομότιμων Κόμβων...11

2.2 Κατανεμημένοι Πίνακες Κατακερματισμού...13

2.2.1. Chord...16

2.2.2. Pastry...19

2.3. Ροές Δεδομένων...21

2.4. Κατανεμημένες Βάσεις Δεδομένων...23

2.5 Σημασιολογικός Ιστός, Σημασιολογικά δεδομένα και RDF...25

2.5.1. Μεταδεδομένα...25

2.5.2. RDF...26

2.5.3. Οντολογίες...27

ΚΕΦΑΛΑΙΟ 3: ΣΧΕΤΙΚΗ ΒΙΒΛΙΟΓΡΑΦΙΑ...30

3.1. Επεξεργασία RDF επερωτήσεων πάνω από δίκτυα ομότιμων κόμβων...30

3.2. Αποτίμηση συνεχών επερωτήσεων και επεξεργασία ροών δεδομένων...32

3.3. Περαιτέρω ανάγνωση...33

ΚΕΦΑΛΑΙΟ 4: ΥΛΟΠΟΙΗΣΗ...34

4.1. Επισκόπηση των αλγορίθμων...34

4.1.1 Ο αλγόριθμος CQC...34

4.1.2. Ο αλγόριθμος CSBV...36

4.1.3 Ο αλγόριθμος RJoin...37

4.2. Δομή συστήματος...40

4.2.1. Δομές αποθήκευσης...42

4.2.2. Μηνύματα Επερωτήσεων...43

4.3. Ευρετηρίαση...44

4.3.1. Ευρετηρίαση επερωτήσεων...44

4.3.2. Ευρετηρίαση τριάδων...47

4.4. Επεξεργασία...47

4.4.1. Επεξεργασία επερώτησης...49

4.4.2. Επεξεργασία τριάδας...49

4.5. Παράθυρα σε επερωτήσεις...50

ΚΕΦΑΛΑΙΟ 5: ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΜΕΛΛΟΝΤΙΚΗ ΕΡΓΑΣΙΑ...52

ΟΡΟΛΟΓΙΑ...54

ΣΥΝΤΜΗΣΕΙΣ – ΑΡΚΤΙΚΟΛΕΞΑ...56

ΑΝΑΦΟΡΕΣ...57

(7)

Σχήμα 1: Παράδειγμα δακτυλίου αναγνωριστικών στο DHT Chord, με 3 κόμβους και m=2

...17

Σχήμα 2: Ενδεικτικός πίνακας δρομολόγησης ενός κόμβου στο Pastry (b=4, ψηφία σε δεκαεξαδικό)...20

Σχήμα 3: Παράδειγμα ευρετηρίασης επερώτησης...39

Σχήμα 4: Σχηματική αναπαράσταση της πολυεπίπεδης δομής του συστήματος RJoin...41

Σχήμα 5: Διαχείριση εισόδου από το χρήστη...42

Σχήμα 6: Παράδειγμα ευρετηρίασης επερώτησης με συγκέντρωση RIC πληροφορίας...46

Σχήμα 7: Θέση του query processor στην πολυεπίπεδη δομή του συστήματος RJoin...48

(8)

Η παρούσα διπλωματική εργασία συντάχθηκε μέσα στο έτος 2010 υπό την επίβλεψη του καθηγητή του Τμήματος Πληροφορικής και Τηλεπικοινωνιών του Εθνικού και Καποδιστριακού Πανεπιστημίου Αθηνών κου. Κουμπαράκη, και με την πολύτιμη βοήθεια της Ίριδος Μηλιαράκη. Ελπίδα μου είναι να αποτελέσει κι αυτή ένα λίθο που θα συνεισφέρει στο οικοδόμημα του σημασιολογικού ιστού και θα συμβάλλει στην εξάπλωση και υιοθέτησή του για την εκπλήρωση του οράματος της διασύνδεσης πληροφορίας σε όλες τις μορφές της.

(9)

ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ

1.1 Αντικείμενο εργασίας

Στην παρούσα διπλωματική εργασία, μελετώ το πρόβλημα της επεξεργασίας συνεχών επερωτήσεων πάνω από σημασιολογικά δεδομένα, σε κατανεμημένο περιβάλλον με χρήση Κατανεμημένων Πινάκων Κατακερματισμού (DHT's). Υλοποιώ ένα σύστημα βασισμένο στον αλγόριθμο RJoin [1], προσαρμοσμένο σε σημασιολογικά δεδομένα αφού η πρωτότυπη υλοποίησή του αφορούσε Σχεσιακές Βάσεις Δεδομένων. Επιπλέον υλοποιείται μια παραλλαγή του αλγόριθμου CQC [28]

και ο αλγόριθμος CSBV [28] για δοκιμές και συγκρίσεις αποδοτικότητας των αλγορίθμων. Βασίστηκα στην υλοποίηση του αλγορίθμου RJoin για σχεσιακά δεδομένα από το Βασίλη Τσιρώνη [3].

Στα πλαίσια της εργασίας χρησιμοποιήθηκε το FreePastry ως υπόβαθρο δίκτυο DHT, το οποίο αποτελεί μια υλοποίηση του Κατανεμημένου Πίνακα Κατακερματισμού Pastry [4]. Ως γλώσσα επερωτήσεων χρησιμοποιήθηκε υποσύνολο της C-SPARQL [5].

Σκοπός της εργασίας είναι η αποτίμηση της αποδοτικότητας του αλγορίθμου RJoin για σημασιολογικά δεδομένα, κι η εκτίμηση της χρησιμότητάς του σε μετέπειτα έργα ή εργασίες.

1.2. Οργάνωση εργασίας

Η εργασία, μετά την παρούσα εισαγωγή, δομείται ως εξής:

Στο δεύτερο κεφάλαιο παραθέτω ένα θεωρητικό υπόβαθρο, όπου

παρουσιάζω συνοπτικά τις τεχνολογίες που είναι απαραίτητο να γνωρίζει ο αναγνώστης για να κατανοήσει τη συμβολή της εργασίας: τα δίκτυα ομότιμων κόμβων, τους κατανεμημένους πίνακες κατακερματισμού, τις ροές δεδομένων και το σημασιολογικό ιστό.

Στο τρίτο κεφάλαιο αναφέρω σχετική βιβλιογραφία που ίσως να

ενδιαφέρει τον αναγνώστη που θέλει να εμβαθύνει σε κάποιον από τους σχετιζόμενους με την εργασία μου τομείς. Δίνω μια σύντομη ανασκόπηση των γενικών περιοχών έρευνας με αναφορές σε επιλεγμένες

δημοσιεύσεις.

(10)

Στο τέταρτο κεφάλαιο αναλύω την υλοποίηση του συστήματος, κι εξηγώ τους αλγορίθμους επεξεργασίας κι ευρετηρίασης δεδομένων κι

επερωτήσεων.

Στο πέμπτο κεφάλαιο αποτολμάται μια εξαγωγή μερικών αρχικών

συμπερασμάτων σχετικά με την υλοποίηση της παρούσας εργασίας, και προτείνονται θέματα για μελλοντική δουλειά.

Στο τέλος της εργασίας μπορούν να βρεθούν οι πίνακες ορολογίας, αρκτικόλεξων και η βιβλιογραφία που χρησιμοποίησα στη σύνταξή της.

(11)

ΚΕΦΑΛΑΙΟ 2: ΥΠΟΒΑΘΡΟ

Για την κατανόηση της εργασίας, είναι απαραίτητο ο αναγνώστης να γνωρίζει κάποιες τεχνολογίες που χρησιμοποιήθηκαν στην υλοποίηση αυτής, και οι οποίες την κατέστησαν δυνατή. Στην περίπτωση που δεν έχετε έρθει σε επαφή με αυτές τις τεχνολογίες, παραθέτω εδώ μια συνοπτική εισαγωγή σε κάθε μία από αυτές. Ο αναγνώστης που επιθυμεί μια πιο διεξοδική παρουσίαση παραπέμπεται στις αναφορές που παραθέτω και στις οποίες βάσισα το δικό μου κείμενο.

Θα αναλύσω αρχικά τα δίκτυα ομότιμων κόμβων και τις κατηγοριοποιήσεις τους, και έπειτα, με αυτό το υπόβαθρο, τους κατανεμημένους πίνακες κατακερματισμού που στηρίζονται πάνω σε αυτά. Εν ακολουθία θα δώσω μια συνοπτική παρουσίαση των ροών δεδομένων και συνεχών επερωτήσεων, ενώ θα δώσω περισσότερο βάρος στην ενεργή ερευνητική περιοχή του σημασιολογικού ιστού.

2.1. Δίκτυα Ομότιμων Κόμβων

Το βασικό μοντέλο στα δίκτυα υπολογιστών είναι το μοντέλο πελάτη-

εξυπηρετητή (client-server model). Σε αυτό το μοντέλο οι υπολογιστές ή αλλιώς κόμβοι του δικτύου χωρίζονται σε μια από τις δύο ομάδες: οι πελάτες στέλνουν αιτήσεις στους εξυπηρετητές οι οποίοι αναλαμβάνουν να τις ικανοποιήσουν και να στείλουν την απάντηση (όπου εφαρμόσιμο) πίσω στον πελάτη που τη ζήτησε. Είναι ίσως το απλούστερο κατανεμημένο σύστημα, που διακρίνεται από το βασικό του μειονέκτημα: η καλή του λειτουργία εξαρτάται αποκλειστικά από την ομάδα κόμβων που ανήκουν στους εξυπηρετητές, οι οποίοι τυπικά είναι πολύ λιγότεροι και πολύ πιο ακριβοί από τους πελάτες. Με την ραγδαία ανάπτυξη του διαδικτύου και συνεπακόλουθη αύξηση του αριθμού πελατών (που απαιτούσε αύξηση και στον αριθμό των εξυπηρετητών για να καλύψει τη ζήτηση), γινόταν όλο και πιο ακριβό να συντηρούνται αυτά τα δίκτυα.

Σαν λύση σε αυτά τα προβλήματα των παραδοσιακών δικτύων προτάθηκαν τα Δίκτυα Ομότιμων Κόμβων (Peer to peer networks ή p2p networks). Σε αυτό το μοντέλο δε γίνεται διαχωρισμός των κόμβων, παρά όλοι οι κόμβοι αναλαμβάνουν ταυτόχρονα το ρόλο του πελάτη και του εξυπηρετητή. Έχουν έτσι τα ίδια

“δικαιώματα” και “υποχρεώσεις” στο δίκτυο και θεωρούνται ισότιμοι, κάτι που εξηγεί άλλωστε το όνομα του μοντέλου. Επιτεύχθηκε έτσι ένα δίκτυο πολύ πιο ανθεκτικό σε σφάλματα, αφού απαιτείται η αποτυχία πολύ περισσότερων κόμβων για να αποτύχει

(12)

η παροχή υπηρεσίας από το δίκτυο, και μικρότερο κόστος συντήρησης, αφού ο φόρτος εργασίας μοιράζεται ανάμεσα σε περισσότερους κόμβους κι έτσι αυτοί δεν χρειάζονται τον ακριβό εξοπλισμό που απαιτούν οι εξυπηρετητές για να είναι σε θέση να εξυπηρετήσουν τους πελάτες.

Μετά αυτήν την περιφραστική εξήγηση, είναι χρήσιμο εδώ να δώσω κι έναν τυπικό ορισμό των Δικτύων Ομότιμων Κόμβων. Ο ακόλουθος ορισμός διατυπώθηκε από τον Rüdiger Schollmeier (σε ελεύθερη μετάφραση) [6]:

Μια αρχιτεκτονική κατανεμημένου δικτύου μπορεί να ονομαστεί Δίκτυο Ομότιμων Κόμβων αν οι συμμετέχοντες κόμβοι μοιράζονται τμήμα των πόρων που έχουν στη διάθεσή τους. Οι μοιραζόμενοι αυτοί πόροι είναι απαραίτητοι για την παροχή της Υπηρεσίας και του περιεχομένου που παρέχει το δίκτυο. Είναι προσβάσιμοι άμεσα από άλλους κόμβους, χωρίς να παρεμβάλλονται μεσάζοντες. Έτσι οι συμμετέχοντες κόμβοι σε ένα τέτοιο δίκτυο παρέχουν και αιτούν υπηρεσία ταυτόχρονα.

Στην πράξη, διακρίνονται κάποιες υποπεριπτώσεις αρχιτεκτονικών. Ο προαναφερθείς συγγραφέας του [6] διακρίνει δύο περιπτώσεις:

1. “Γνήσια” δίκτυα ομότιμων κόμβων είναι όσα είναι δίκτυα ομότιμων κόμβων σύμφωνα με τον παραπάνω ορισμό, κι επιπλέον αν αφαιρεθεί ένας

οποιοσδήποτε κόμβος από το δίκτυο αυτό διατηρεί τη δυνατότητα να παρέχει την υπηρεσία του χωρίς απώλεια.

2. “Υβριδικά” δίκτυα ομότιμων κόμβων είναι όσα είναι δίκτυα ομότιμων κόμβων σύμφωνα με τον παραπάνω ορισμό, κι επιπλέον απαιτείται η ύπαρξη μιας κεντρικής οντότητας για να παρέχει τμήμα των παρεχόμενων υπηρεσιών του δικτύου.

Τα δίκτυα ομότιμων κόμβων έχουν βρει πρόσφορο έδαφος στην ανταλλαγή αρχείων μεταξύ κοινών χρηστών του διαδικτύου, κι έτσι έχουν εξαπλωθεί δραματικά γρήγορα, σε σημείο να θεωρείται σήμερα σχεδόν mainstream τεχνολογία. Η

σύνδεσή τους με φαινόμενα παράνομης ανταλλαγής αρχείων και πειρατεία

πνευματικής ιδιοκτησίας έχει μάλιστα συμβάλλει στο να βρίσκουν μεγάλη προβολή και στα μέσα μαζικής ενημέρωσης (παρότι συχνά παρουσιάζονται υπό αρνητικό πρίσμα).

Χάρη στη μεγάλη εξάπλωση που έχει γνωρίσει η τεχνολογία των δικτύων ομότιμων κόμβων, υπάρχουν αρκετά παραδείγματα να διαλέξει κανείς για να τα

(13)

παρουσιάσει. Ενδεικτικά, στην πρώτη κατηγορία ανήκουν ανάμεσα σε άλλα τα DHT (η τεχνολογία που χρησιμοποίησα στην υλοποίησή μου και που θα αναλυθεί

παρακάτω), το Gnutella [7] (πριν την έκδοση 0.4) και το Freenet [8]. Στη δεύτερη κατηγορία, στα δίκτυα που αναφέρονται και ως Super-Peers (Υπερ-κόμβων) ή ιεραρχικά δίκτυα ομότιμων κόμβων, ανήκουν το πρωτόκολλο BitTorrent [9] και το eDonkey [10]. Ανάμεσα σε άλλες εφαρμογές, τα δίκτυα ομότιμων κόμβων

χρησιμοποιούνται και για υπολογισμούς σε Πλέγμα (Grid Computation, αναφέρεται και ως Distributed Computing – Κατανεμημένος Υπολογισμός) όπως για

παράδειγμα στο SETI@home [33], δίκτυα συνεργασίας χρηστών (collaboration networks), κατανεμημένες βάσεις δεδομένων (που επίσης θα αναλυθούν παρακάτω), και άλλα.

Τα δίκτυα ομότιμων κόμβων παραμένουν ενεργή ερευνητική περιοχή με νέες εφαρμογές και υλοποιήσεις να εμφανίζονται συνέχεια.

Στην περίπτωση της χρήσης δικτύων ομότιμων κόμβων για ανταλλαγή αρχείων, που μοιάζει με τη χρήση τους στην παρούσα εφαρμογή, ένα πρόβλημα ήταν πάντα αυτό της ανεύρεσης ενός συγκεκριμένου αρχείου στο δίκτυο, δοθέντος π.χ. του ονόματός του -το λεγόμενο πρόβλημα αναζήτησης (lookup problem). Οι

κατανεμημένοι πίνακες κατακερματισμού αναπτύχθηκαν ως λύση σε αυτό το πρόβλημα.

2.2 Κατανεμημένοι Πίνακες Κατακερματισμού

Για αρκετό καιρό, εμπόδιο στην ανάπτυξη κι αποδοτικότητα των δικτύων ομότιμων κόμβων ήταν, δεδομένου ενός αρχείου, η αποδοτική ανεύρεσή κι ανάκτησή του στο δίκτυο. Το lookup problem, όπως ονομάστηκε, λύθηκε με διαφορετικούς τρόπους κατά καιρούς:

Το Napster διατηρούσε έναν κεντρικό διακομιστή ευρετηρίου, όπου καταχωρούταν το όνομα κάθε αρχείου και σύνδεσμος προς τον κόμβο που το τηρούσε. Η αρχιτεκτονική αυτή δεν είχε καλή κλιμάκωση κι ήταν ιδιαίτερα ευαίσθητη αφού με απώλεια του κεντρικού διακομιστή έπεφτε το δίκτυο. Έτσι, παρότι σε μεγάλο βαθμό ο φόρτος μοιραζόταν στους

κόμβους, διατηρούσε το πρόβλημα του “single point of failure” που

παρουσίαζε η αρχιτεκτονική πελάτη-εξυπηρετητή. Επιπλέον, αποδείχτηκε πως έκανε την εταιρία ευάλωτη στις μηνύσεις των ιδιοκτητών και

διαχειριστών πνευματικών δικαιωμάτων, αφού έπαιρνε ενεργό ρόλο στο

(14)

να βοηθά τους χρήστες να βρουν τα αρχεία που αναζητούσαν και

μπορούσε εύκολα να απαγορεύσει πρόσβαση σε προστατευμένα αρχεία -αλλά προφανώς επέλεγε να μην το κάνει.

Το Gnutella [4] μετά την έκδοση 0.4 υιοθέτησε ένα μοντέλο flooding (πλημμύρας) μηνυμάτων για την αναζήτηση: ουσιαστικά ο κόμβος που εκκινούσε την αναζήτηση διοχέτευε αιτήσεις στους γειτονικούς του, οι οποίοι μετά τις προωθούσαν στους γειτονικούς τους κ.ο.κ. μέχρι κάποιο καθορισμένο όριο. Η κλιμάκωση αυτού του σχήματος ήταν βέβαια

άσχημη, κι επιπλέον, με πεπερασμένο όριο προωθήσεων, δεν μπορούσε να εγγυηθεί ότι το ζητούμενο αρχείο θα βρισκόταν παρότι ίσως υπήρχε στο δίκτυο. Με άπειρο όριο προωθήσεων θα υπήρχε αυτή η εγγύηση, αλλά ο φόρτος στο δίκτυο ήταν δυσανάλογα μεγάλος σε σχέση με την παρεχόμενη υπηρεσία.

Οι Κατανεμημένοι Πίνακες Κατακερματισμού προτείνουν μια λύση που είναι αποκεντρωμένη, κλιμακώνεται ικανοποιητικά και δεν είναι ευάλωτη σε σφάλματα κι απώλειες κόμβων. To [12] παρουσιάζει με εύγλωττο και κατανοητό τρόπο το σκεπτικό της υλοποίησής τους, και τη διαφοροποίησή τους από προγενέστερες λύσεις.

Οι Κατανεμημένοι Πίνακες Κατακερματισμού, ή Distributed Hash Tables (DHT), είναι είδος κατανεμημένου δικτύου, γνήσιο δίκτυο ομότιμων κόμβων σύμφωνα με τους ορισμούς του κεφαλαίου 2.1. Στην πιο απλή μορφή τους, οι λειτουργίες που παρέχουν μέσω της διεπαφής τους είναι δύο: καταχώρηση αντικειμένου με συγκεκριμένο αναγνωριστικό κι ανάκτηση αντικειμένου δεδομένου του

αναγνωριστικού του (αναφέρονται στην αγγλική βιβλιογραφία ως put και get).

Οι βασικές αρχές λειτουργίας ενός Κατανεμημένου Πίνακα Κατακερματισμού είναι οι εξής:

Σε κάθε αντικείμενο που αποθηκεύεται στο δίκτυο αποδίδεται, με κάποιον συνεπή τρόπο, ένα κλειδί. Το σύνολο (set) των κλειδιών που μπορούν να αποδοθούν σε τμήματα δεδομένων λέγεται Χώρος Κλειδιών (keyspace).

Ο χώρος κλειδιών χωρίζεται σε τμήματα, και κάθε κόμβος που συμμετέχει στο δίκτυο ορίζεται, με συνεπή τρόπο, ως υπεύθυνος για ένα τέτοιο

τμήμα. Ολόκληρος ο χώρος κλειδιών ανατίθεται στους κόμβους, χωρίς

(15)

κενά.

Κάθε κόμβος χειρίζεται (αποθηκεύει κι επεξεργάζεται) τα δεδομένα στα οποία έχουν αποδοθεί κλειδιά που εμπίπτουν στο τμήμα του χώρου κλειδιών που του έχει ανατεθεί.

Ως αποτέλεσμα των παραπάνω, η ανάθεση δεδομένων σε κόμβους γίνεται με συνεπή τρόπο, κι η ανεύρεσή τους μπορεί να γίνει με αντίστοιχα συνεπή και αποκεντρωμένο τρόπο.

Ζητούμενο των συστημάτων DHT που υλοποιούνται είναι πάντα η όσο το δυνατόν ισορροπημένη αντιστοίχηση κλειδιών (τμημάτων του χώρου κλειδιών) στους κόμβους, και δεδομένου ενός αιτήματος ανεύρεσης ή αποθήκευσης δεδομένων με ένα συγκεκριμένο κλειδί η όσο το δυνατόν αποδοτικότερη και ταχύτερη εξυπηρέτησή του.

Μερικά από τα πιο γνωστά συστήματα DHT είναι τα CAN [12], Chord [13], Pastry [14], και Tapestry [15]. Μια συνοπτική ανάλυσή και σύγκρισή τους μπορεί να βρεθεί στο [11].

Σύμφωνα με το [11] τα τρία βασικά ζητήματα που αντιμετωπίζουν και καλούνται να λύσουν οι υλοποιήσεις DHT είναι:

Η ισορροπημένη αντιστοίχηση κλειδιών σε κόμβους. Τα προαναφερθέντα συστήματα το επιτυγχάνουν αυτό με τον ίδιο βασικό τρόπο: κόμβοι και κλειδιά αντιστοιχίζονται μέσω μιας τυπικής συνάρτησης κατακερματισμού (hash function) σε μια αλληλουχία ψηφίων. Ένα κλειδί που

κατακερματίζεται σε μια συγκεκριμένη αλληλουχία ανατίθεται στον κόμβο με την “πλησιέστερη” αλληλουχία ψηφίων (η συνάρτηση απόστασης μεταξύ των κλειδιών μπορεί να ποικίλλει στις υλοποιήσεις, ένα

παράδειγμα θα μπορούσε να είναι το μήκος του κοινού προθέματος των δύο κλειδιών).

Προώθηση αίτησης ανεύρεσης ενός κλειδιού στον αντίστοιχο κόμβο. Κάθε κόμβος δύναται να δεχτεί αιτήσεις ανεύρεσης ενός οποιουδήποτε κλειδιού, αλλά να απαντήσει μόνο αυτές που αφορούν κλειδιά που του έχουν

ανατεθεί. Κατά συνέπεια, οφείλει να μπορεί να προωθήσει το αίτημα σε κάποιον κόμβο που είναι “πλησιέστερος” στο ζητούμενο κλειδί (που θα το προωθήσει με τη σειρά του, κ.ο.κ. μέχρι να φτάσει το αίτημα σε κόμβο

(16)

που μπορεί να το απαντήσει). Για να επιτευχθεί αυτό κάθε κόμβος τηρεί έναν πίνακα δρομολόγησης (routing table) όπου κρατά πληροφορίες για έναν μικρό αριθμό προσεκτικά επιλεγμένων ομότιμων κόμβων.

Δημιουργία πινάκων δρομολόγησης. Για την προώθηση αιτημάτων ανεύρεσης είναι απαραίτητο κάθε κόμβος να γνωρίζει κάποιες πληροφορίες για κάποιους άλλους κόμβους. Το ποιους κόμβους θα προσθέσει στους πίνακες δρομολόγησης εξαρτάται από τη συνάρτηση απόστασης που χρησιμοποιεί ο αλγόριθμος.

Για την αντιμετώπιση των παραπάνω ζητημάτων, μία τεχνική που

χρησιμοποιείται ευρέως σε DHT υλοποιήσεις και που είναι χρήσιμο να αναλυθεί γι'αυτό, είναι αυτή του συνεπούς κατακερματισμού (consistent hashing) (στο [34]

παρουσιάζεται εκτενέστερα η χρησιμότητα της τεχνικής σε δικτυακό περιβάλλον, θα δώσω εδώ μια σύνοψη). Παλιότερες μέθοδοι κατακερματισμού που έβρισκαν χρήση σε κατανεμημένα περιβάλλοντα (π.χ. [35], [36], [37], [38]) ήταν ευαίσθητες σε

αλλαγές στο δίκτυο: μια εισαγωγή νέων κόμβων ή αφαίρεση μη λειτουργικών (λόγω αποτυχίας τους) ενδεχομένως να οδηγούσε και σε αναϋπολογισμό των

αναγνωριστικών κι ανακατανομή των αντικειμένων στους κόμβους του δικτύου. Με την ανάπτυξη του διαδικτύου, η αλλαγή τοπολογίας ενός δικτύου είναι υπερβολικά συχνό φαινόμενο για να είναι αποδεκτό τέτοιο κόστος. Ο συνεπής κατακερματισμός αντίθετα εξασφαλίζει τη συνεπή κατανομή των αντικειμένων ανεξαρτήτως του

αριθμού των κόμβων που συμμετέχουν στο δίκτυο, και την ελάχιστη απαραίτητη (για εξισορρόπηση) ανακατανομή φόρτου σε περίπτωση που αυτός ο αριθμός αλλάξει.

Στις επόμενες ενότητες θα γίνει προφανές πώς τα DHT's χρησιμοποιούν την τεχνική.

Παρακάτω θα αναλύσω τον τρόπο λειτουργίας των δύο επικρατέστερων DHT, Chord και Pastry, ως ενδεικτικά παραδείγματα για τον τρόπο λειτουργίας των DHT γενικότερα. Το Pastry ειδικά είναι αυτό που επιλέχθηκε για αυτήν την υλοποίηση, οπότε η γνώση της λειτουργίας του θα είναι χρήσιμη για την κατανόηση του συστήματος.

2.2.1. Chord

Στο Chord [13], μέσω συνεπούς κατακερματισμού, αντιστοιχείται κάθε αντικείμενο και κάθε κόμβος σε ένα αναγνωριστικό m bits, όπου το m είναι

παράμετρος κι οφείλει να είναι αρκετά μεγάλο για να μην υπάρχουν συγκρούσεις

(17)

στη συνάρτηση κατακερματισμού (hash collision). Μπορεί για παράδειγμα να

χρησιμοποιηθεί μια κρυπτογραφική συνάρτηση, όπως η SHA-1 [39] ή MD5 [40], και να κατακερματιστεί η διεύθυνση IP του κόμβου και το όνομα του αρχείου (αν το DHT χρησιμοποιείται για εφαρμογή ανταλλαγής αρχείων) για να παραχθούν τα αντίστοιχα αναγνωριστικά.

Τα αναγνωριστικά που παράγονται ταξινομούνται σε έναν εικονικό δακτύλιο μεγέθους module 2m, δηλαδή από 0 ως 2m-1. Στο σχήμα φαίνεται ένας τέτοιος δακτύλιος.

Τα αντικείμενα τοποθετούνται στους κόμβους με συνεπή τρόπο, βάση των κλειδιών στα οποία έχουν αντιστοιχηθεί. Κάθε κλειδί k (αντικειμένου) αντιστοιχίζεται με έναν κόμβο n με τον ακόλουθο τρόπο. Αν H είναι η συνεπής συνάρτηση

κατακερματισμού που χρησιμοποιείται, το H(k) αντιστοιχείται στον κόμβο με αναγνωριστικό ίσο ή μεγαλύτερο (στην ταξινόμηση του εικονικού δακτυλίου) με αυτό. Στο παράδειγμα του παραπάνω σχήματος, το αναγνωριστικό 1 βρίσκεται στον κόμβο 1, το αναγνωριστικό 2 στον κόμβο 3 και το αναγνωριστικό 6 στον κόμβο 0. Ο κόμβος που αντιστοιχίζεται και αναλαμβάνει τη διαχείριση κάποιου αναγνωριστικού αποκαλείται διάδοχος κόμβος (successor) αυτού του αναγνωριστικού, και

συμβολίζεται ως successor(H(k)). Στο παράδειγμα του σχήματος, στον κόμβο 1 έχει ανατεθεί το διάστημα (0, 1], στον κόμβο 3 το (1,3] και στον κόμβο 0 το (3, 0].

Αν κάθε κόμβος γνωρίζει μόνο τον διάδοχό του, μια αίτηση ανεύρεσης του κλειδιού k (που ανάγεται σε ανεύρεση του κόμβου που είναι υπεύθυνος για αυτό το κλειδί) μπορεί να απαντηθεί σε O(N) βήματα1, όπου Ν ο αριθμός των κόμβων στο

1 Οι αποδείξεις για τις πολυπλοκότητες των αλγορίθμων που παραθέτω υπάρχουν στο [13].

Σχήμα 1: Παράδειγμα δακτυλίου

αναγνωριστικών στο DHT Chord, με 3 κόμβους και m=2

(18)

δίκτυο. Το Chord βελτιώνει αυτήν την επίδοση τηρώντας διάφορους πίνακες δεικτών (finger tables) σε κάθε κόμβο. Κάθε πίνακας δεικτών έχει το πολύ m εγγραφές, και κάθε μία από αυτές δείχνει σε έναν κόμβο. Η i-οστή εγγραφή στον πίνακα δεικτών του κόμβου n δείχνει στον κόμβο n' που είναι διάδοχος κόμβος του H(n)+2i-1. Η εγγραφή i+1 δείχνει έτσι σε κόμβο σε διπλάσια απόσταση από την εγγραφή i, κι έτσι η αναζήτηση μπορεί να επιταχυνθεί. Για πίνακες δεικτών με μέγεθος O(logN), η αναζήτηση μπορεί να γίνει με μεγάλη πιθανότητα σε O(logN) βήματα.

Επιπλέον, κάθε κόμβος τηρεί κι έναν δείκτη στον προκάτοχό του (predecessor), που ορίζεται ως ο πρώτος κόμβος που θα συναντήσει στο δακτύλιο εκκινώντας από τον εαυτό του, με φορά αντίθετη των δεικτών του ρολογιού. Αυτή η πληροφορία χρησιμεύει κατά την άφιξη νέων κόμβων στο δίκτυο: όταν ένας κόμβος n θέλει να συνδεθεί στο δίκτυο βρίσκει έναν κόμβο n' που βρίσκεται ήδη σε αυτό και ζητά από αυτόν να του εντοπίσει το διάδοχο κόμβο του successor(H(n)).

Περιοδικά κάθε κόμβος εκτελεί έναν αλγόριθμο σταθεροποίησης (stabilization algorithm) για να ενημερωθεί για νέες αφίξεις κόμβων στο δίκτυο. Ο κόμβος που τρέχει τον αλγόριθμο, έστω n, ζητά από το διάδοχό του να του πει τον προκάτοχό του, έστω p. Αν δεν υπάρχουν νέες αφίξεις στο δίκτυο, ο p πρέπει να ταυτίζεται με τον n. Αλλιώς, ίσως ο p να καταλήξει ως νέος διάδοχος του n. Κάθε κόμβος ελέγχει επίσης περιοδικά αν ο πίνακας δεικτών του και ο δείκτης στον προκάτοχό του είναι έγκυροι.

Οι δημιουργοί του Chord ενσωμάτωσαν επίσης λειτουργίες ελέγχου της

ευρωστίας του δικτύου κι ανίχνευσης αποτυχιών κόμβων, με τη μορφή μιας λίστας διαδόχων που τηρείται σε κάθε κόμβο. Η λίστα έχει μέγεθος r (παράμετρος) και περιέχει τους r πρώτους διαδόχους του κόμβου που την τηρεί. Αν ο κόμβος, έστω n, ανιχνεύσει ότι ο διάδοχός του έχει αποτύχει (παρουσιάζει δυσλειτουργία και δεν απαντά σε αιτήσεις), συμβουλεύεται τη λίστα αυτή για αντικατάστασή του. Επιπλέον, ένας κόμβος μπορεί να επιλέξει να αποχωρήσει οικειοθελώς από το δίκτυο, κι

ενημερώνει τότε τον διάδοχο και τον προκάτοχό του, ενώ μεταφέρει τα αντικείμενα που έχει αποθηκευμένα στον διάδοχό του.

Με υψηλή πιθανότητα η άφιξη ή αποχώρηση ενός κόμβου σε κι από το δίκτυο μπορεί να επιτευχθεί με Ο(log2N) μηνύματα.

(19)

2.2.2. Pastry

Στο Pastry [14], κάθε κόμβος αντιστοιχίζεται με ένα αναγνωριστικό μήκους 128 bit, που χρησιμοποιείται για να υποδηλώσει τη θέση του σε ένα κυκλικό χώρο αναγνωριστικών κόμβων που παίρνουν τιμές από 0 ως 2128-1. Τα ψηφία στο χώρο αναγνωριστικών κόμβων διατυπώνονται σε βάση 2b, όπου b παράμετρος του αλγορίθμου με τυπική τιμή 4. Υποθέτοντας δίκτυο με Ν κόμβους, το Pastry μπορεί να προωθήσει ένα μήνυμα με συγκεκριμένο κλειδί στον αριθμητικά πλησιέστερο κόμβο σε λιγότερα από log2bΝ βήματα κατά μέσο όρο.

Για τη σωστή παράδοση ενός μηνύματος, απαιτείται μόνο το σύνολο φύλλων (leaf set) του κόμβου που θα στείλει το μήνυμα να είναι σωστό. Το σύνολο φύλλων του κόμβου n περιέχει L κόμβους, τους L/2 πλησιέστερους με αναγνωριστικό

μεγαλύτερο από αυτό του n και τους L/2 πλησιέστερους με αναγνωριστικό μικρότερο από αυτό του n. Έτσι, το Pastry εγγυάται σωστή παράδοση του μηνύματος, εκτός αν L/2 συνεχόμενοι κόμβοι αποτύχουν ταυτόχρονα.

Το Pastry χρησιμοποιεί συνάρτηση απόστασης βασισμένη στο μήκος του κοινού προθέματος. Για τη βέλτιστη απόδοση κατά την προώθηση, ο κάθε κόμβος διατηρεί κι έναν πίνακα δρομολόγησης, που συνήθως αναπαριστάται ως log2bΝ σειρές με 2b-1 στοιχεία η κάθε μία. Κάθε στοιχείο της i-οστής σειράς του πίνακα στον κόμβο n αντιστοιχεί σε κόμβο με αναγνωριστικό που έχει τα i πρώτα ψηφία του κοινά με τον κόμβο n, και του οποίου το i+1 ψηφίο είναι διαφορετικό (άρα το μήκος κοινού προθέματος ισούται με i). Εφόσον τα αναγνωριστικά αναπαριστώνται σε βάση 2b, συμπεραίνουμε πως υπάρχουν το πολύ 2b-1 τέτοια αναγνωριστικά.

(20)

Κάθε κόμβος, έστω n, προωθεί τα μηνύματα που λαμβάνει ως εξής:

Αν το αναγνωριστικό που ζητείται υπάρχει στο leaf set του κόμβου, τότε το μήνυμα προωθείται άμεσα σε αυτόν. Στη γενική περίπτωση, αυτό θα είναι το τελευταίο βήμα (hop) της προώθησης ενός μηνύματος, πριν αυτό φτάσει στον προορισμό του.

Αν i είναι το μήκος του κοινού προθέματος του κόμβου n με το

αναγνωριστικό του μηνύματος, ο κόμβος προωθεί το μήνυμα σε έναν κόμβο από τον πίνακα δρομολόγησής του για τον οποίο το κοινό πρόθεμα με το αναγνωριστικό του μηνύματος είναι τουλάχιστον i (δηλαδή όσο και του n) και βρίσκεται αριθμητικά πιο κοντά σε αυτό.

Βάσει των ανωτέρω, συμπεραίνουμε πως κάθε βήμα (hop) προώθησης του αλγόριθμου προσπαθεί να αυξήσει το μήκος του κοινού προθέματος του

αναγνωριστικού του μηνύματος με το αναγνωριστικό του κόμβου που το λαμβάνει κατά τουλάχιστον 1. Άρα με το πολύ log2bΝ το μήνυμα θα έχει φτάσει στον προορισμό του2.

Η είσοδος ενός κόμβου σε ένα Pastry δίκτυο απαιτεί ο κόμβος να γνωρίζει ήδη έναν κόμβο μέσα στο δίκτυο και να μπορεί να επικοινωνήσει μαζί του. Έστω εισερχόμενος κόμβος με αναγνωριστικό Ε και συνδεδεμένος κόμβος με

αναγνωριστικό Α. Ο κόμβος Ε στέλνει ένα ειδικό “join” μήνυμα στον κόμβο Α, κι ο κόμβος Α το προωθεί όπως οποιοδήποτε μήνυμα στον κόμβο με αναγνωριστικό

2 Πιο αναλυτική απόδειξη της πολυπλοκότητας, και των άλλων στην ενότητα, υπάρχει στο [14].

Σχήμα 2: Ενδεικτικός πίνακας δρομολόγησης ενός κόμβου στο Pastry

(b=4, ψηφία σε δεκαεξαδικό)

(21)

πλησιέστερο στο Ε, έστω Ω. Μόλις οι κόμβοι Α, Ω, κι όλοι οι ενδιάμεσοι λάβουν το μήνυμα, στέλνουν στον Ε τους πίνακές τους (δρομολόγησης, leaf set), ο οποίος τους χρησιμοποιεί για να αρχικοποιήσει τους δικούς του πίνακες. Τέλος, ο Ε ενημερώνει τους κόμβους που βρίσκονται στους πίνακες δρομολόγησής του και τους στέλνει αντίγραφο των πινάκων του. Αφού ολοκληρωθεί αυτή η διαδικασία, ο Ε είναι πλέον σε θέση να λάβει και να στείλει μηνύματα και να συμμετάσχει πλήρως στο Pastry δίκτυο. Το συνολικό κόστος είναι Olog2bΝ .

Η απώλεια ενός κόμβου για το Pastry δίκτυο μπορεί να συμβεί χωρίς

προειδοποίηση. Το δίκτυο χρησιμοποιεί έναν παραδοσιακό μηχανισμό timeout για τον εντοπισμό μιας τέτοιας κατάστασης. Ένας κόμβος του δικτύου θεωρείται

χαμένος όταν οι γείτονές του δεν μπορούν πια να επικοινωνήσουν μαζί του. Για την ορθή λειτουργία του δικτύου επιβάλλεται η αντικατάστασή του στα leaf set των γειτονικών του κόμβων, κατά συνέπεια μόλις ένας κόμβος εντοπίσει πως ένας γείτονάς του δεν είναι πια διαθέσιμος, στέλνει μήνυμα στον κόμβο στο leaf set του με το μεγαλύτερο αναγνωριστικό προς την κατεύθυνση του κόμβου που χάθηκε, και βάσει του leaf set που θα του στείλει αυτός ορίζει το νέο του leaf set, χωρίς τον μη διαθέσιμο κόμβο.

Με αντίστοιχη διαδικασία επιτυγχάνεται και η αντικατάσταση ενός μη διαθέσιμου κόμβου από τους πίνακες δρομολόγησης. Όταν ένας κόμβος αντιληφθεί ότι ένας κόμβος στους πίνακες δρομολόγησής του δεν είναι διαθέσιμος, έστω αυτός στη σειρά i, στήλη j, επικοινωνεί με τους υπόλοιπους κόμβους της σειράς i και ζητά από αυτούς υποψήφιους κόμβους για να αντικαταστήσει αυτόν που χάθηκε.

Από τα παραπάνω είναι προφανές πως οι δομές του Pastry είναι πιο περίπλοκες του Chord, αλλά κατορθώνει να δρομολογεί έτσι πιο γρήγορα τα μηνύματά του.

2.3. Ροές Δεδομένων

Μία πρόσφατη εξέλιξη στην επεξεργασία δεδομένων είναι η εμφάνιση

εφαρμογών όπου τα δεδομένα αναπαριστώνται ευκολότερα ως παροδικές ροές δεδομένων παρά ως μόνιμες σχέσεις. Παραδείγματα περιλαμβάνουν

χρηματοοικονομικές εφαρμογές, παρακολούθηση κίνησης δικτύου, ασφάλεια, δίκτυα αισθητήρων, κ.ά. Στο μοντέλο Ροών Δεδομένων (data streams) τα δεδομένα

μπορούν να αναπαριστώνται με παραδοσιακές δομές, αλλά ο υψηλός ρυθμός άφιξής τους και η μη προβλεψιμότητά τους επιβάλλει διαφορετικό χειρισμό.

(22)

Η διαφοροποίηση των ροών δεδομένων από το παραδοσιακό αποθηκευμένο μοντέλο δεδομένων έγκειται στα εξής [16]:

Τα δεδομένα στη ροή αφικνύονται σε απευθείας σύνδεση, σε πραγματικό χρόνο (ενώ εκτός ροής τα δεδομένα μπορούν να εισαχθούν εκτός δικτύου, κι ενδεχομένως να αποθηκευθούν για να εισαχθούν αργότερα).

Το σύστημα διαχείρισης της ροής δεδομένων δεν έχει έλεγχο στη σειρά με την οποία αφικνύονται τα δεδομένα, είτε εντός της ίδιας ροής είτε σε

περισσότερες από μία.

Οι ροές δεδομένων είναι δυνητικά απεριόριστες σε μέγεθος.

Αφού ένα τμήμα δεδομένων αφιχθεί κι επεξεργαστεί διαγράφεται, εκτός αν αποθηκευθεί ρητά. Ο χώρος μνήμης είναι τυπικά πολύ μικρός σε

σύγκριση με το μέγεθος της ροής δεδομένων.

Οι επερωτήσεις σε ένα τέτοιο μοντέλο μπορούν να ανήκουν σε 2 κατηγορίες: οι επερωτήσεις μίας φοράς και οι συνεχείς επερωτήσεις. Οι πρώτες είναι οι

παραδοσιακές επερωτήσεις που γίνονται στα υπάρχοντα δεδομένα, επιστρέφουν άμεσα την απάντησή τους κι έπειτα αχρηστεύονται. Οι ροές δεδομένων παρέχουν όμως τη δυνατότητα να τεθούν και οι δεύτερες. Συνεχείς επερωτήσεις [17] είναι όσες θέτονται μία φορά από το χρήστη και εκτελούνται συνεχώς πάνω στα δεδομένα. Τα αποτελέσματά τους είναι το σύνολο (με τη συνολοθεωρητική έννοια που

περιλαμβάνει την απάλειψη διπλότυπων) των δεδομένων που θα επιστρεφόταν αν η επερώτηση εκτελούταν κάθε δυνατή χρονική στιγμή.

Ένα ενδιαφέρον μοντέλο θεώρησης για τις συνεχείς επερωτήσεις είναι αυτό του publish/subscribe (δημοσίευση/συνδρομή) [41]. Κατά το publish/subscribe μοντέλο, οι συνδρομητές (subscribers) δηλώνουν την επιθυμία τους να ειδοποιηθούν για κάποιο συγκεκριμένο συμβάν (event) ή για συμβάντα που ακολουθούν κάποιο συγκεκριμένο πρότυπο, που δημιουργούν εκδότες (publishers). Οι συνδρομητές λαμβάνουν μια ειδοποίηση (notification) από το σύστημα μόλις κάποιος δημοσιεύσει κάτι (συμβεί ένα event) που ταιριάζει στις οδηγίες που έχουν δώσει.

Η ευελιξία και χρησιμότητα του μοντέλου έγκειται στην αποσύνδεση μεταξύ συνδρομητή κι εκδότη που προσφέρει:

χωρικά, αφού συνδρομητής κι εκδότης δε χρειάζεται να έχουν κάποια

(23)

άμεση επαφή μαζί τους, πόσο μάλλον να βρίσκονται στον ίδιο χώρο. Ο συνδρομητής μπορεί να ειδοποιείται για δημοσιεύσεις χωρίς καμία γνώση του ποιος τις δημιουργεί, κι όμοια ο εκδότης μπορεί να δημοσιεύει

συμβάντα χωρίς καμία γνώση του ποιος θα ειδοποιηθεί για αυτά.

συγχρονισμού, αφού συνδρομητής κι εκδότης δεν χρειάζεται να είναι συγχρονισμένοι ή να μπλοκάρεται ένας από τους δύο (ή και οι δύο) για να εκτελεστεί η λειτουργία του συστήματος.

Η αποσύνδεση αυτή της παραγωγής από την κατανάλωση της πληροφορίας βοηθά στην κλιμάκωση, αφαιρώντας τις εξαρτήσεις μεταξύ των συμμετεχόντων και τα συνακόλουθα βάρη τους. Προσφέρεται δε ιδιαίτερα για το σημερινό

κατανεμημένο κι ασύγχρονο δικτυακό περιβάλλον.

Στη βιβλιογραφία τα συστήματα που χτίζονται πάνω στη συγκεκριμένο μοντέλο αναφέρονται συχνά ως “push” συστήματα [42] (όπου ο εκδότης “σπρώχνει” τις δημοσιεύσεις προς τον συνδρομητή), ως αντιδιαστολή στα “pull” συστήματα όπου ο συνδρομητής πρέπει με δική του πρωτοβουλία να “τραβήξει” τις δημοσιεύσεις που τον ενδιαφέρουν. Διακρίνουμε τρεις κατηγορίες κόμβων σε ένα τέτοιο σύστημα:

1. Η πηγή δεδομένων (εκδότης ή παραγωγός), που παράγει τα δεδομένα που καταναλώνονται.

2. Ο πελάτης (συνδρομητής ή καταναλωτής), που καταναλώνει τα δεδομένα που τον ενδιαφέρουν από αυτά που παράγει η πηγή δεδομένων.

3. Ο μεσίτης δεδομένων, που φροντίζει να διαθέσει στον δεύτερο αυτά που τον ενδιαφέρουν από αυτά που παράγει ο πρώτος.

Συνεχίζει να γίνεται εκτεταμένη έρευνα στα publish/subscribe συστήματα, που βρίσκουν πολύ ταιριαστή εφαρμογή στις ροές δεδομένων.

2.4. Κατανεμημένες Βάσεις Δεδομένων.

Η ευρεία εξάπλωση των δικτύων υπολογιστών, και οι όλο και υψηλότερες απαιτήσεις σε αποθήκευση κι επεξεργασία δεδομένων στον δικτυωμένο κόσμο μας αναπόφευκτα οδήγησε στην εμφάνιση των κατανεμημένων βάσεων δεδομένων. Οι ΚΒΔ είναι ανώτερες των παραδοσιακών για αυτές τις εφαρμογές, για πολλούς λόγους, όπως καλύτερη αξιοπιστία και διαθεσιμότητα, επεκτασιμότητα, προστασία

(24)

δεδομένων (μέσω αντιγράφων ασφαλείας που τηρούνται μεταξύ κόμβων),

βελτιωμένη απόδοση, διαμοιρασμός φόρτου, και βέβαια οικονομία, αφού το κόστος ενός cluster υπολογιστών είναι μικρότερο ενός υπερυπολογιστή με τις ίδιες

δυνατότητες.

Παρατίθεται ένας τυπικός ορισμός των Κατανεμημένων Βάσεων Δεδομένων [18]:

Κατανεμημένη Βάση Δεδομένων είναι μια συλλογή πολλών, λογικά

συνδεδεμένων και σχετιζόμενων βάσεων δεδομένων κατανεμημένων σε ένα δίκτυο υπολογιστών. Σύστημα Διαχείρισης Κατανεμημένων Βάσεων Δεδομένων είναι το σύστημα λογισμικού που επιτρέπει τη διαχείριση της κατανεμημένης βάσης δεδομένων και παρέχει τις υπηρεσίες του με τρόπο που να καθιστά την ύπαρξη κατανομής διάφανη για το χρήστη.

Με τον όρο Κατανεμημένη Βάση Δεδομένων συνήθως αναφερόμαστε στο συνδυασμό της ΚΒΔ και του Συστήματος Διαχείρισής της.

Η φυσική κατανομή των δεδομένων σε μια Κατανεμημένη Βάση Δεδομένων επιτυγχάνεται με τμηματοποίηση και αντιγραφή τους. Τα τμήματα που παράγονται μπορούν να διανεμηθούν σε κόμβους όπου φτάνουν συχνότερα επερωτήσεις που τα αφορούν, για να μειωθεί η επικοινωνία μέσω δικτύου, και η αντιγραφή τους σε πολλούς κόμβους γίνεται όταν πρόσβαση στα ίδια δεδομένα γίνεται σε πολλά διαφορετικά σημεία.

Οι υψηλές απαιτήσεις ασφάλειας και στιβαρότητας που επιβάλλονται σε μια Βάση Δεδομένων ικανοποιούνται με ακόμα πιο πολύπλοκο τρόπο στην περίπτωση μιας Κατανεμημένης Βάσης Δεδομένων. Μια ΚΒΔ οφείλει να ελέγχει όχι μόνο τον έλεγχο ταυτόχρονης πρόσβασης κι αλλοίωσης ενός τμήματος δεδομένων, αλλά και τη συνέπεια των αντιγράφων των δεδομένων σε όλη τη ΚΒΔ, να λαμβάνει υπόψη την πιθανότητα προβλήματος δικτύου στην εκτέλεση επερωτήσεων (και ως αίτιο αποτυχίας μιας επερώτησης) ή και απώλειας ενός κόμβου. Περαιτέρω, η

βελτιστοποίηση επερωτήσεων οφείλει να λαμβάνει υπόψη και την απόσταση δικτύου μεταξύ κόμβων που εμπλέκονται στην επερώτηση, ενώ ο συγχρονισμός πρόσβασης δεδομένων περιπλέκεται όταν αφορά δεδομένα που έχουν αντίγραφα σε πολλούς κόμβους. Αυτά είναι κάποια ενδεικτικά από τα ερευνητικά ζητήματα που έχουν αντιμετωπιστεί για τις Κατανεμημένες Βάσεις Δεδομένων, τα οποία δε θα αναλυθούν περαιτέρω σε αυτήν την εργασία.

(25)

2.5 Σημασιολογικός Ιστός, Σημασιολογικά δεδομένα και RDF

Καθώς η εργασία μου στηρίζεται πάνω στην τεχνολογία του Σημασιολογικού Ιστού, η οποία όμως δεν έχει ακόμη διεισδύσει σε ικανοποιητικό βαθμό στην ευρύτερη, εξω-ακαδημαϊκή κοινωνία, είναι χρήσιμο σε αυτό το σημείο να αναφέρω και κάποιες βασικές πληροφορίες για αυτήν. Το [19] είναι ένα καλό εισαγωγικό κείμενο για μεγαλύτερη εμβάθυνση.

Η πρωταρχική ιδέα για το Σημασιολογικό Ιστό μπορεί να βρεθεί στο [20], όπου ο Tim Berners-Lee περιγράφει το όραμά του για έναν ιστό Δεδομένων, μια γέφυρα ανάμεσα στον ανθρωποκεντρικό ιστό και τους υπολογιστές που τον χειρίζονται κι επεξεργάζονται. Το σκεπτικό είναι πως παράλληλα με την εμφάνιση πληροφοριών σε ευανάγνωστη για ανθρώπους μορφή (human-readable), μπορεί να παρέχεται η ίδια πληροφορία σε μορφή “κατανοήσιμη” από έναν υπολογιστή (machine-

processable). Έτσι θα διευρυνθεί το πλήθος υπηρεσιών που μπορεί να παρέχει ένας υπολογιστής με δικτυακή σύνδεση, ως το σημείο να μπορεί για παράδειγμα να κλείνει αεροπορικά εισιτήρια πλήρως αυτοματοποιημένα, χωρίς ανθρώπινη

επέμβαση.

Οι υποστηρικτές του Σημασιολογικού Ιστού υποστηρίζουν πως η επίτευξή του, σε έναν μετριοπαθή βαθμό, είναι εύκολη με ήδη υπάρχουσες τεχνολογίες˙ το πρόβλημα βρίσκεται στην υιοθέτηση της τεχνολογίας. Προκρίνουν την ανάγκη ενσωμάτωσης, προτυποποίησης, ανάπτυξης εργαλείων και υιοθέτησης από χρήστες.

Παρακάτω θα αναλύσω σύντομα κάποιες από τις τεχνολογίες στις οποίες στηρίζεται σήμερα ο Σημασιολογικός Ιστός.

2.5.1. Μεταδεδομένα

Από τις κεντρικές ιδέες του Σημασιολογικού Ιστού είναι η ενσωμάτωση μεταδεδομένων στις ιστοσελίδες. Με την παραδοσιακή HTML είναι εύκολη η προβολή πληροφορίας για έναν ανθρώπινο αναγνώστη, αλλά δίνεται επίσης η δυνατότητα ενσωμάτωσης πληροφοριών για την ιστοσελίδα μέσα στην ίδια την ιστοσελίδα. Αυτές οι πληροφορίες μπορούν να τυποποιήσουν τη σημασία (εξού και

σημασιολογικός ιστός”) της πληροφορίας που περιέχεται στη σελίδα και να διευκολύνουν την “κατανόησή” της από έναν υπολογιστή. Παράδειγμα

μεταδεδομένων που θα μπορούσαν να είναι ενσωματωμένα σε μια ιστοσελίδα ιατρείου είναι το εξής (από το [19]):

(26)

<company>

<treatmentOffered>Physiotherapy</treatmentOffered>

<companyName>Agilitas Physiotherapy Centre</companyName>

<staff>

<therapist>Lisa Davenport</therapist>

<therapist>Steve Matthews</therapist>

<secretary>Kelly Townsend</secretary>

</staff>

</company>

Η πληροφορία δίνεται με τη μορφή αποσπάσματος XML που διαβάζεται πολύ πιο εύκολα από κατάλληλο λογισμικό. Ένας κατάλληλα σχεδιασμένος πράκτορας λογισμικού μπορεί να συνδυάσει τις πληροφορίες αυτές με πιθανές άλλες

πληροφορίες του ιατρείου (ωράρια, ειδικότητες, e-mail επικοινωνίας κ.ο.κ.) και με αντίστοιχα δεδομένα που θα λάβει από το ημερολόγιο του χρήστη και να κλείσει αυτόματα ένα ιατρικό ραντεβού σε ώρα που θα εξυπηρετεί το χρήστη.

2.5.2. RDF

Τα κλασικά συστήματα μοντελοποίησης δεδομένων (σχεσιακό, κ.ά.) δεν κρίθηκαν αρκετά ευέλικτα για χρήση στο Σημασιολογικό Ιστό. Το W3C ανέπτυξε λοιπόν το μοντέλο RDF (Resource Description Framework) [26]. Σε αυτό το κεφάλαιο θα αναλύσω τις βασικές έννοιές του.

Βασικό στοιχείο του μοντέλου RDF είναι το triple (τριπλέτα ή τριάδα), όπως για το σχεσιακό θεωρείται η πλειάδα. Ένα triple αποτελείται από 3 στοιχεία, όπως άλλωστε υπονοεί και το όνομά του: subject (υποκείμενο), predicate

(κατηγορούμενο) και object (αντικείμενο). Τα subject και object μπορούν να είναι resources (πόροι), αντικείμενα ουσιαστικά που αναγνωρίζονται με ένα URI (Universal Resource Identifier) που το ταυτοποιεί μονοσήμαντα (για παράδειγμα μπορεί να είναι ένα URL, αλλά αυτό δεν είναι απαραίτητο). Το predicate είναι property (ιδιότητα) που προσδιορίζει το είδος της σχέσης μεταξύ των subject και object στο triple.

Τα objects μπορούν επιπλέον να είναι literals (σταθερές, αλφαριθμητικές αλληλουχίες, κ.ο.κ.). Για την καλύτερη επεξεργασία αυτών, είναι βέβαια χρήσιμο ο πράκτορας να γνωρίζει τον τύπο αυτού του literal. Ως παράδειγμα θεωρήστε το ακόλουθο triple (η αντιστοίχηση των μελών του triple κατά σειρά σε subject,

(27)

predicate, object θα θεωρείται αυτονόητη εφεξής):

http://www.person.com/david-billington, http://www.mydomain.org/age,

“27”

Ο πράκτορας που θα διαβάσει την παραπάνω πληροφορία, στη γενική περίπτωση, δεν έχει κάποια γνώση της σημασίας του predicate

http://www.mydomain.org/age κι άρα δεν μπορεί, όπως ένας άνθρωπος, να καταλάβει ότι ο αριθμός που ακολουθεί είναι ακέραιος (άρα μπορεί για παράδειγμα να τον αφαιρέσει από την τωρινή ημερομηνία και να μάθει το έτος γέννησης του subject).

Για αυτό το λόγο έχουν εισαχθεί στο πρότυπο τα typed literals, που διαφοροποιούνται από τα απλά literals μόνο ως προς το ότι περιλαμβάνουν πληροφορία του τύπου τους.

http://www.person.com/david-billington, http://www.mydomain.org/age,

“27”^^http://www.w3.org/2001/XMLSchema#integer

Ο πράκτορας που θα διαβάσει το παραπάνω triple μπορεί πιο εύκολα να το χρησιμοποιήσει στους λογικούς συλλογισμούς του.

2.5.3. Οντολογίες

Για να ενθαρρυνθεί η δημιουργία πρακτόρων λογισμικού που θα επεξεργάζονται τα δεδομένα που προαναφέρθηκαν, είναι απαραίτητη η ύπαρξη μιας κοινής

“γλώσσας” που θα κατανοούν αυτοί οι πράκτορες. Έτσι με πρωτοβουλία του W3C ορίζεται η Γλώσσα Οντολογιών Διαδικτύου ή Web Ontology Language (OWL) (το [23] παρουσιάζει την πρώτη έκδοση του προτύπου, που αρκεί για τις ανάγκες μας, οφείλω όμως να επισημάνω στον αναγνώστη την ύπαρξη του [24] που ορίζει την ενημερωμένη έκδοση της γλώσσας, OWL2).

Ο Gruber στο [21] έδωσε τον κοινά αποδεκτό ορισμό της οντολογίας, που επέκτεινε αργότερα ο Guarnido στο [22]:

Οντολογία είναι μια λογική θεωρία που τυποποιεί την προοριζόμενη σημασία ενός τυπικού λεξιλογίου, δηλαδή την οντολογική συσχέτισή του με μια συγκεκριμένη

Referências

Documentos relacionados

για θέματα ασφάλειας τροφίμων που αφορούν τα προισντα του • γ να κοινοποιεί σε όλο τον οργανισμό, τις πληροφορίες που αφορούν την ανάπτυξη, την εφαρμογή και την επικαιροποιήση του