Τίμος Σελλής - Ιόνιο Πανεπιστήμιο 01/11/2011 (Ιόνιο Πανεπιστήμιο, 2011)
: Είναι πραγματικά μεγάλη μου χαρά που είμαι εδώ σήμερα και πρέπει να σας πω ότι δίνω πολύ μεγαλύτερη σημασία και με χαροποίη πολύ πιο πολύ να δίνω ομιλίες σε ανθρώπους σαν κι εσάς και σε τέτοιο ακροατήριο σε σχέση με πιστημονικά συνέδρια όπου ο άλλος θα ακούει στη δουλειά που έχεις κάνει αλλά δεν θα δούμε αυτή τη ζωντανία που βλέπουμε εδώ σήμερα. Προβληματίστηκα πάρα πολύ στο αν θα πρέπει να σας δώσω μια ομιλία που να είναι κάπως γενική ή αν θα πρέπει να επικεντρώσω σε ένα θέμα ερευνητικό που θα ξεκινήσω από τις γενικές του πτυχές και μπορεί να μην πάμε πάρα πολύ σε βάθος, αν και οι διαφάνειες που έλεξα να τα έχω στις διαφάνειες πηγαίνουν λίγο πιο βαθιά. Εν τούτοις θέλα να σας κεντρίσω το ενδιαφέρον σε κάποια θέματα τα οποία απτονται βάση των δεδομένων ξέρετε το τομέα στον βάση των δεδομένων πια δεν είναι αυτό που ίσως κάποιοι από εσάς έχετε γνωρίσει σε μαθήματα. Να το πω έτσι, τα πιο πολλά προβλήματα έχουν λυθεί στις βάσεις των δεδομένων. Αυτό που τώρα κάνουμε είναι γενικότερα αυτό που λέμε διαχείριση των δεδομένων και ένα πολύ καλό παράδειγμα είναι αυτό που λέμε τα κοινούμενα αντικείμενα και τα λεγόμενα ρεύματα εδομένων που δεν σας λέει τίποτα αυτή η λέξη data streams στα αγγλικά αλλά θα προσπαθήσω να σας δώσω μια εικόνα σήμερα και όπως είπα θέλω να κεντρίσω έτσι το ενδιαφέρον σας στα προβλήματα και τις εφαρμογές που έχουμε σε αυτό το τομέα γιατί θεωρώ ότι είναι από τους τομείς που είναι μοντέρνος και που θα εξακολουθήσει να υπάρχει για αρκετό διάστημα. Δυστυχώς δεν ξέρω επειδή η οθόνη είναι μεγάλη δεν φαίνεται κάτω κάτω ότι αυτή η δουλειά που θα παρουσιάσω είναι κοινή δουλειά με έναν υποψήφιο διντάκτορα στο εργαστήριό μου τον Κώστα Πατρούμπα απόφυτο της Πάτρας και όχι του πολιτεχνίου. Δεν ξέρω πρέπει να χαμηλώσουμε τα φώτα είναι καθαρή η οθόνη. Καταρχάς να αρχίσω έτσι λέγοντας λιγάκι τι είναι αυτά τα ρεύματα δεδομένων τα λεγόμενα data streams. Τα ρεύματα δεδομένων θέλω να τα φανταστείτε ότι είναι δεδομένα τα οποία όμως έρχονται συνεχώς. Ενώ έχουμε συνηθίσει σε πολλές εφαρμογές όπου για παράδειγμα μαζεύουμε δεδομένα από κάπου. Ας ποθέσουμε μια που είμαστε και εδώ πέρα στο κτήριο της σχολής ιστορικό τμήμα. Μαζεύουμε πληροφορίες για παράδειγμα που έχουμε συνεργαστεί με αρχαιολόγους από παλιά για ευρήματα σε διάφορες περιοχές. Βάζουμε και ένα GIS από πάνω και τα παρουσιάζουμε μέσα σε μια βάση δεδομένων. Τέτοιου είδους εφαρμογές βάζει ένα δεδομένο όπως ξέρετε έχουμε πάρα πολλές. Τα ρεύματα δεδομένων θέλω να τα φανταστούμε σαν δεδομένα τα οποία μας έρχονται συνέχεια και δυναμικά. Παράδειγμα, τιμές με το χόνι ο οποίες ρέουν ή μετρήσεις θεμοκρασίας από κάποια σημεία που μετράμε και ούτω καθεξής. Άρα γενικά έχουμε δεδομένα τα οποία έρχονται συνέχεια είναι πάρα πολλά και εδώ πέρα μπαίνει ένα ερώτημα πολλές φορές. Όταν θέλεις να κάνεις ερωτήματα πάνω σε αυτά τα δεδομένα θα τα αποστοικεύεις και κάθε φορά συνέχεια θα ρωτάς. Ή μήπως όπως έρχονται θα μπορείς να απαντάς σε αυτά τα ερωτήματα. Οπότε πρώτον τα ρέματα δεδομένων προκύπτουν δυναμικά όπως λέμε από καταγραφές στοιχείων. Παραδείγματα τέτοια έχουμε πάρα πολλά απλώς θα σας δώσω μερικά έτσι για να πάρετε μια ιδέα. Τα δίκτυα αισθητήρων τα οποία είναι πάρα πολλοί και αυτά της μόδας. Έτσι αισθητήρες έχουμε παντού οπότε δεδομένα μπορεί να έρχονται από ένα δίκτυο αισθητήρων τα οποία μετράνε για παράδειγμα θεμοκρασία. Βλέπετε συντέσεις μεταξύ αισθητήρων επειδή πάρα πολλές φορές τα δεδομένα δεν τα στέλνουν οι αισθητήρες όλοι κάπου κεντρικά αλλά μπορεί να τα μαζεύουν κάπου μεταξύ τους και μετά να προωθούνται. Πάντως γενικά δεδομένα τα οποία ρέουν και είναι πάρα πολλά μπορεί να έρχονται από δίκτυα αισθητήρων και μπορεί να φανταστείτε αισθητήρες που μετράνε διάφορα πράγματα από πάνω σε ανθρώπους ρούχα που φοράμε μέχρι για πυρκαγιές μέχρι ό,τι εφαρμογές μπορεί να φανταστείτε. Τηλεφωνικά συνδιαλέξεις επίσης είναι δεδομένα τα οποία ρέουν. Δηλαδή έχουμε τα λεγόμενα logs από τηλεφωνήματα που γίνονται, που μπορεί να έχουμε κάποιες παραμέτρους, ποιο τηλέφωνο κλήθηκε, πόσο ήταν η διάρκεια κλπ. Και φανταστείτε ότι αυτά συνέχεια καταγράφονται. Μηχανές αναζήτης στο διαδίκτυο και αυτά μπορεί να τα φανταστείτε σαν δεδομένα που ρέουν. Δηλαδή κάθε αναζήτηση που γίνεται στο διαδίκτυο και όπως ξέρετε γίνονται εκατομμύρια αναζητήσεις αναλεπτό, κάθε αναζήτηση που γίνεται αντιπροσωπεύει αν θέλετε κάποια πληροφορία, για παράδειγμα τι ρώτησε ποιος, ποια μηχανή αναζήτησης. Εμείς θα επικεντρώσουμε σε αυτή την ομιλία και σε κάποιες άλλες μορφές ρευμάτων δεδομένων που είναι επίσης πολύ της μόδας, που έχουν να κάνουν με αποκτία κίνησης ή με καταγραφή της θέσης. Παράδειγμα οχημάτων που κινούνται. Πάρα πολλές συσκευές τώρα τις βλέπουμε και σε αυτοκίνητα μέσα αλλά και αυτές που κουβαλάμε πάνω μας έχουν GPS και μπορεί να στέλνουν το στίγμα της κίνησης κάπου κεντρικά για να καταγράφονται και το καθεξής. Και αυτά μπορείτε να φανταστείτε ότι είναι ρεύματα δεδομένων. Παρακολούθηση με το χώνο όπως έλεγα, δεδομένα τα οποία αλλάζουν πάρα πολύ γρήγορα. Εκεί βλέπετε μία όπως λέμε χρονοσύρα, δηλαδή κάτω μπορεί να είναι σε επίπεδο μήνα αλλά μπορεί να είναι και σε επίπεδο λεπτού. Και πώς κοιμένεται οι τιμήμιας μετοχής. Άρα φανταστείτε αυτές όλες οι περιπτώσεις δεν τα λέμε απλά δεδομένα για να τα ξεχωρίσουμε λίγο από τα στατικά να το πω έτσι δεδομένα. Πράγματα τα οποία παρατηρούμε κάπου, τα μαζεύουμε, τα αποθηκεύουμε. Εδώ τα δεδομένα ραιούν και επομένως αλλάζει λίγο και το στυλ των ερωτημάτων που θέλουμε να κάνουμε. Για παράδειγμα σε τέτοιους ερωτήματα, πόσοι από σας έχετε πάρει ένα μάθημα βάσης των δεδομένων και έχετε δει την SQL που λέμε, έτσι όλοι, έτσι. Λοιπόν, σε αυτού του είδους τα συστήματα που λέμε, θα μπορούσε κάποιος να φανταστεί ότι παίρνει τις τιμές των μετοχών όπως έρχονται, βάζει σε μια βάση δεδομένων και μετά κάνει μία από αυτή την πανέμορφη γλώσσα που έχουμε, Select From Where, την SQL και μπορεί να απαντήσει οποιοδήποτε ερώτημα. Εμείς εδώ πέρα όμως δεν θέλουμε αυτό. Εμείς θέλουμε να έχουμε κάτι σαν αυτό που λέμε monitoring, παρατήρηση. Δηλαδή, όπως ραιούν τα δεδομένα, για παράδειγμα, μπορεί εγώ να θέλω να βλέπω συνεχώς τη μέση τιμή μιας μετοχής για τα τελευταία 10 λεπτά. Δηλαδή, όπως έρχονται οι τιμές μέσα, θέλω να βλέπω στην οθόνη μου τη μέση τιμή της μετοχής κάθε φορά σε ένα παράθυρο 10 λεπτών. Φυσικά μπορώ να το κάνω αποτικεύοντας τα δεδομένα και υπολογίζοντας το κάθε 10 λεπτά. Μη σχόλετε, υπολογίζοντας το συνεχώς. Γιατί το παράθυρο είναι 10 λεπτά, αλλά εγώ θέλω αυτό το πράγμα να το υπολογίζω συνεχώς. Θα είναι πάρα πολύ αργό όμως. Υπάρχει μια ολόκληρη τεχνολογία στον χώρο αυτό των ρευμάτων δεδομένων και αυτό είναι που θέλω να θύξω σήμερα. Αλλά περισσότερο θα δώσω ένα κερασάκι εδώ, θα εντοπίσουμε σε δεδομένα τα οποία είναι όπως λέμε δεδομένα που έρχονται από κινούμενα αντικείμενα. Για παράδειγμα, οχήματα τα οποία κινούνται και το καθεξής. Τα κύρια χαρακτηριστικά λοιπόν αυτόν τον ρευμάτων δεδομένων είναι ότι πρώτον έχουμε ένα μη πεπερασμένο σύνολο στοιχείων, δηλαδή συνέχεια μας έρχονται και άλλα. Ενώ σε συμβατικές βάσεις δεδομένων υπάρχει αυτή η έννοια του συνόλου του πεπερασμένου, έχω μια βάση δεδομένων, την έχω φτιάξει και εκεί πάνω δουλεύω. Είναι μη φραγμένο αυτό το σύνολο δεδομένων, δηλαδή είναι ένα συνεχές σύνολο το οποίο ενημερώνεται, ένα σύνολο που ενημερώνεται συνεχώς. Με χρονικά όπως λέμε εκειμενόμενο όγκο, αλλάζει συνέχεια όγκος. Και το κυριότερο είναι αυτή η τελευταία γραμμή που έχω που λέει ότι αυτές όλες οι αλλαγές γίνονται γρήγορα, τα δεδομένα είναι αυτό που λέμε εφήμερα και πιθανόν ανεξάδητα. Εφήμερα σημαίνει ότι αυτά τα δεδομένα όπως τα βλέπουμε περνάνε συνέχεια από μπροστά μας και φεύγουν. Οπότε ό,τι προλάβεις εκείνη την ώρα είναι να κάνεις. Τώρα σε τέτοιου είδους συστήματα τα οποία το ονομάζουμε και data stream management systems που βλέπετε εκεί δεξιά με κόκκινο, συστήματα διαχείρισης ρευμάτων δεδομένων και μοιάζει πάρα πολύ με αυτό που λέμε database management systems. Σε τέτοια συστήματα εμείς έχουμε κάποιους όπως λέμε νεοτερικούς μηχανισμούς επεξεργασίας αυτών των ρευμάτων. Δηλαδή δεν αρκούν οι αλγόριθμοι να το πω έτσι και οτισδήποτε διαδικασίες χρησιμοποιούσαμε για απλές βάσεις δεδομένων. Έχουμε πρώτα απ' όλα αυτό που λέμε ερωτήματα διάρκειας. Σε τέτοιου συστήμα δηλαδή πηγαίνει ο χρήστης ο οποίος δεν πηγαίνει ξέρετε κάθε δευτερόλεπτο και πατάει ένα SQL να το πω έτσι ερώτημα να εκτελεστεί. Πάει και βάζει μια φορά ένα ερώτημα και λέει θέλω να μου δείχνει συνέχεια το μέσο όρο των τελευταίων 10 λεπτών. Αυτό λέγεται ένα ερώτημα διαρκίας ή continuous query το οποίο τελικά τι γίνεται. Το αφήνει ο χρήστης το σύστημα μια φορά το δηλώνει και μετά υπάρχει σταδιακή επικαιροποίηση όπως λέμε με τα δεδομένα που προσέρχονται online δηλαδή συνεχώς. Αυτός είναι ο τρόπος λειτουργίας που θέλουμε να έχουμε σε αυτά τα συστήματα. Η ανεπάρκεια των συμβατικών βάσεις δεδομένων και θα εξηγήσω τι εννοώ με pool based δηλαδή οι βάσεις δεδομένων είναι συστήματα που τραβάμε δεδομένα από αυτά. Αυτό εννοούμε pool based. Η ανεπάρκεια προκύπτει από το γεγονός ότι όπως λέμε είναι πρακτικά ανέφεκτη αποθήκευση όλων των στοιχείων στο δίσκο. Λέει φανταστείτε όλες τις τιμές με το χων όπως περνάνε από μπροστά μας κάθε δευτερόλεπτο να τις αποθηκεύω στο δίσκο για να μπορώ να απαντάω τέτοιούς ερωτήματα. Θα μου πείτε βέβαια ναι αλλά αν μου ζητάς να απαντάς το μέσο όρο των τελευταίων 10 λεπτών μπορεί να έρχονται τα δομένα τα αποθηκεύω μετά τα πετάω και συνεχίζω βάζω φρέσκα. Ναι όλο αυτό όμως είναι πάρα πολύ βαρύ για το σύστημα αν το κάνεις έτσι. Δηλαδή αν καθίσεις πάνω από ένα σύστημα διαχείρισης βάσης δεδομένων και προσπαθήσεις να κάνεις αυτήν την επεξεργασία θα είναι πάρα πολύ αργή αυτό είναι το βασικό. Και το ερώτημα είναι πως θα το κάνουμε πιο γρήγορο. Για αυτό εδώ πέρα έχουμε αυτό που λέμε push based διαδικασία. Δηλαδή αντί να προκαλούμε εμείς τα ερωτήματα ρωτώντας τη βάση θα έχουμε βάλει το ερώτημα μια φορά και κάθε φορά που έρχονται δεδομένα καινούργια θα σπρώχνουμε την απάντηση αυτό εννοούμε push based θα σπρώχνουμε την απάντηση προς το χρήστη. Άρα θα δουλεύουμε απευθείας στην κύρια μνήμη για ταχύτερη αποτίμηση εδώ δηλαδή όπως θα δούμε σε αυτήν την επεξεργασία υπάρχουν οι λεγόμενοι buffer από μονοτές στα ελληνικά που όπως μπαίνουν τα δεδομένα τα επεξεργαζόμαστε εκεί επάνω που περνάνε από μπροστά μας να σας το πω έτσι πως είναι ο δίσκος που περνάει η κεφαλή μπροστά από την κεφαλή περνάνε τα δεδομένα πως γυρίζουν και διαβάζουμε. Έτσι φανταστείτε και εδώ πέρα έχουμε ένα κομμάτι μνήμης από το οποίο περνάνε αυτά τα εφήμερα δεδομένα και όπως περνάνε από μπροστά εκεί κάνουμε υπολογισμούς. Και βεβαίως εδώ πέρα υπάρχουν πολλά πράγματα τα οποία παίζουν ρόλο όταν στις βάσεις δεδομένων δεν παίζουν στις βάσεις δεδομένων και να βάλεις τα στοιχεία μέσα ανάκατα να το πω έτσι και να κάνεις μια ερώτηση θα τα βγάλει. Εδώ πέρα αν χάσεις τη σειρά αν χάσεις τη σειρά άφιξης των στοιχείων θα σου βγάλει άλλα τα άλλα. Έτσι τελείωνα. Οπότε για να το δώσουμε και λίγο σχηματικά δεν ξέρω αν φαίνεται εκεί πέρα κάτω η εικόνα. Στην διαδικασία αυτή που λέμε την pool base δηλαδή που τραβάμε πληροφορία έχουμε ένα σύστημα διαχείρισης βάσεων δεδομένων και ένα σταθμού εργασίας. Στέλνουμε το ερώτημα στη βάση επεξεργάζεται η βάση αυτού το ερώτημα και μας επιστρέφει μια απάντηση αυτό είναι αυτό που ξέρουμε το κλασικό από το χώρο των βάσεων δεδομένων. Αυτό όμως που έχουμε στο pool base όπως λέμε μοντέλο έχουμε ένα ρεύμα δεδομένων το οποίο έρχεται βεβαίως όπως θα δούμε παρακάτω κάποια αυτά τα δεδομένα θα τα αποθηκεύσουμε και στη βάση δεδομένων. Αλλά όπως έχει αυτό το ρεύμα δεδομένων εμείς έχουμε πάλι ένα ερώτημα διάρκειας έτσι πάνω στο σύστημα και όπως έρχονται τα ρεύματα δεδομένων αυτές οι επίκαιρες απαντήσεις όπως λέμε στέλνονται προς το σταθμό. Το σχήμα δεν αλλάζει και πολύ πάλι υπάρχει εκεί πέρα ένα σύστημα διαχείριση απλώς τώρα το λέμε σύστημα διαχείριση ρευμάτων δεδομένων τα ρεύματα δεδομένων είναι κάτι εξωτερικό δεν λέμε ότι θα αποθηκεύονται στον δίσκο όσο αν και καλά όλα και οι απαντήσεις θα στέλνονται προς τα πίσω. Τώρα στη διαχείριση των ρευμάτων δεδομένων υπάρχουν ενδιαφέροντα ερωτήματα για παράδειγμα ένα είναι πώς κάνεις αποτίμηση των ερωτημάτων. Δηλαδή πώς εγώ μπορώ αυτό που σας έλεγα δώσε μου τη μέση τιμή ανά 10 λεπτά τη μέση τιμή συνεχώς σε παράθυρο 10 λεπτών. Εδώ πέρα τώρα υπάρχουν αν θέλετε νέα πράγματα τα οποία μπαίνουν στην εικόνα για παράδειγμα για να μπορώ να απαντήσω αυτό το ερώτημα γρήγορα μπορεί να δώσω και προσεγγιστική απάντηση. Δηλαδή τι σε πειράζει αν το δεύτερο δεκαδικό ψηφίο είναι λάθος. Σε μερικά προβλήματα μπορεί να είναι σημαντικό όπου μετράς τη θερμοκρασία ενός περινικού αντιδραστήρα και πρέπει να είσαι πάρα πολύ ακριβής. Αλλά σε άλλες εφαρμογές το να δίνω όπως λέμε έγκαιρες απαντήσεις δηλαδή καλύτερα να σου δώσω άμεσα την απάντηση κι ας είναι και λίγο προσεγγιστική να μην είναι 100% ακριβής. Προσεγγίσεις υπάρχουν διάφορες διαδικασίες και διάφοροι τρόποι για να τις πετυχαίνουμε. Είναι αυτό που ονομάζουμε συνόψεις στο χώρο των βάσεων δομένων. Οι συνόψεις μπορεί να έχουν τη μορφή αυτών που λέμε και έτσι πάρτε το λιγάκι και όπως το λέμε και εμείς σκίτσο. Το σκίτσο είναι μια αχνή περιγραφή του ακριβούς πράγματος. Φανταστείτε ότι κάπως έτσι βγάζουμε και τα λεγόμενα σκέτσες, τα σκίτσα από τα δεδομένα. Μια άλλη διαδικασία είναι η δειγματολυψία. Αυτή την ξέρετε δηλαδή αντί να κοιτάω όλες τις στιγμές που περνάνε από μπροστά μου κάνω μια με κάποια λογική δειγματολυψία και παίρνω το μέσο ώρα από αυτές τις στιγμές. Μπορεί να είναι τα λεγόμενα wavelets, κυματίδια, αυτό έχει να κάνει πιο πολύ αν θέλετε με κάποιες τεχνικές που έχουμε δανειστεί από το χώρο της επεξεργασίας των σημάτων, που και εκεί πέρα όπως ξέρετε παράδειγμα αν πάρεις ένα ηχητικό σήμα, ένα τραγούδι και το ψηφιοποιήσεις, έτσι δεν είναι και εκεί χρησιμοποιούμε κάποια τεχνική συμπίεση σε. Τα κυματίδια είναι μια τέτοια τεχνική, για να μην πω στη λεπτομέρεια τώρα, είναι κάτι σαν δειγματολυψία αλλά όχι ακριβώς με τη λογική της δειγματολυψίας. Ενώ τα περισσότερα που ξέρουμε συστήματα τα οποία κάνουν συμπίεση ήχου, εικόνας κτλ. χρησιμοποιούν δειγματολυψία, υπάρχουν και άλλα συστήματα που χρησιμοποιούν τεχνικές που πάλι, ξέρετε, παίρνουν, ας πούμε, τιμές που είναι κοντά και αντί να τις καταγράφουν όλες, καταγράφουν εξεργουάνα τρεις μία, το μέσο όρο και το καθεξής, κάπως έτσι φανταστεί εδώ. Και υπάρχουν και τα λεγόμενα ιστογράμματα, τα ιστογράμματα όπως ξέρετε είναι συμπαγής κάπως, περιληπτικές αναπαραστάσεις μιας κατανομής, άρα μπορεί να έχω μια συνεχή κατανομή. Παίρνω ένα ιστογράμμα το οποίο την προσεγγίζει κάπως, το ίδιο πράγμα μπορεί να κάνουμε και με τα δεδομένα που έχουμε εμείς, δηλαδή αντί να παίρνουμε όλες τις τιμές των δεδομένων, παίρνουμε αν θέλετε κάποιο ιστογράμμα το οποίο μας δίνει μια αίσθηση για την κατανομή τους. Πάντως γενικά καταλαβαίνετε εδώ πέρα μπορούμε να απαντάμε ερωτήματα τα οποία είναι συνεχή και στα οποία δεν θέλουμε όλη την ακρίβεια προσεγγιστικά, με διάφορες τεχνικές που τις έχουμε δανειστεί από άλλους χώρους. Δεν είναι του χώρου των βάσεων δομένων, το έξυπνο είναι πώς παίρνεις μία τεχνική όπως σας είπα για παράδειγμα από την επεξεργασία σήματος και την εφαρμόζεις στο χώρο των βάσεων δομένων. Γενικά στην αποτίμηση ερωτημάτων εμείς εστιάζουμε σε πεπερασμένα στοιχεία, είναι αυτό που σας έλεγα πριν τα πρόσφατα αυτά που περνάνε από μπροστά μας, και γι' αυτό υπάρχει εδώ πέρα η έννοια του κυλιώμενου παραθύρου. Στα ερωτήματα διαρκίας, πώς σας έλεγα πριν θέλω να βλέπω ανα 10 λεπτά πώς παίζει η μετοχή. Το βλέπω συνεχώς σε αυτό το παράθυρο, το κυλίω στον χρόνο, αυτά είναι τα λεγόμενα κυλιώμενα παράθυρα, τα sliding windows. Επίσης, σε τέτοιου τους εφαρμογές έχουμε κάτι το οποίο μπορεί να τους συναντήσετε και σε άλλους χώρους, η λεγόμενη απόρριψη φόρτου, το load shedding. Απόρριψη φόρτου είναι αυτό που λένε οι λέξεις. Δηλαδή, όπως περνάνε τα δεδομένα, με κάποια λογική μπορεί να πετάω κάποια από αυτά. Γιατί, γιατί αν τα κοιτάω όλα θα είναι πολύ μεγάλο το φορτίο. Αυτό λέγεται απόρριψη φόρτου. Οπότε, κατά κάποιο τρόπο προσπαθώ να χαμηλώνω το φορτίο που έχω, αλλά βέβαια αυτό πρέπει να το κάνεις έξυπνα. Μπορείς να πετάς δεδομένα τα οποία δεν θα σου αλλειώσουνε κατά κάποιο τρόπο το αποτέλεσμα. Απλώς έτσι παραθέτω τώρα κάποιες γενικές πτυχές, αν θέλετε, που μπαίνουν στην αποτίμηση ερωτημάτων, περισσότερο για να σας δείξω και πόσο διαφέρει από την αποτίμηση ερωτημάτων σε βάση δεδομένων. Στις βάσεις δεδομένων το πρωταρχικό στοιχείο είναι ένα. Όταν μου δίνεις ένα ερώτημα, τι πρέπει να βλέπεις στο πίσω, αν θυμάστε. Τον αριθμό, τον IOP θα κάνω στο δίσκο. Δηλαδή, μου δίνεις ένα ερώτημα που λέει φέρε μου όλους αυτούς που κάνουν αυτό και εκείνο και τα άλλο, τα select όπως θα ξέρετε, αυτό, αν πάω να το τρέξω πάνω στο δίσκο, που είναι πολύ μεγάλη βάση δεδομένων, ο αντικειμενικός σκοπός είναι να φέρω το αποτέλεσμα, αλλά διαβάζοντας από το δίσκο τα λιγότερα δυνατά στοιχεία. Γιατί το κόστος όλος, όπως ξέρουμε, δεν είναι η CPU. Στις CPU έχουμε ποια που τρέχουν πολύ γρήγορα. Το κόστος είναι στη μεταφορά δεδομένων από το δίσκο. Εδώ αυτό θέλω να σας δείξω ότι αυτά που μας ενδιαφέρουν να βελτιστοποιήσουμε δεν είναι τα δεδομένα από το δίσκο. Ναι μεν και εδώ κάποια δεδομένα αποθηκεύονται στο δίσκο ή θα τα χρησιμοποιήσουμε και αργότερα, αλλά κυρίως αυτό που θέλουμε να βελτιστοποιήσουμε είναι το διάβασμα των δεδομένων που περνάει από μπροστά μας. Η γλώσσα ερωταποκρίσεων που έχουμε στο χώρο αυτό μοιάζει με την SQL, δεν θα σας δώσω παραδείγματα, έχουν αναπτυχθεί κάποιες, continuous query language που λέγεται σε ένα σύστημα που έχει φτιαχτεί το stream, strql σε ένα άλλο σύστημα, εδώ είναι τα συστήματα που βλέπετε μέσα σε αγγείλες, έχω μια πλήρη σειρά αναφορών στο τέλος της παρουσίας, οπότε αν κάποιοι θέλετε να διαβάσετε λίγο παραπάνω θα βρείτε στοιχεία. SQL βλέπετε εκεί κάπως με κάποια άλλα γράμματα ανάμεσα, είναι παραλλαγές της SQL, όπως το φαντάζεστε, όπως γράφει στην SQL κάπου πρέπει να του πεις πόσο είναι το μέγεθος του παραθύρου που θέλεις να παρατηρεί, κάθε πόσο να γλυστράει το παράθυρο αυτό που λέμε να ορισθένει κάθε δευτερόλεπτο και το κατεξής, είναι γλώσσες οι οποίες μοιάζουν με SQL απλώς έχουν και κάποια πράγματα ακόμα. Τώρα, για να μπω λιγάκι σε αυτό που θέλω να σας μιλήσω λίγο παραπάνω, είναι οι εφαρμογές που λέμε monitoring παρακολούθησης. Θέλεις ας πούμε να παρακολουθήσεις επεξεργασία συμβάντων, τα συμβάντα μπορεί να είναι ασφάλεια δικτύων που σας έλεγα πριν ότι παρατηρούμε ξέρω εγώ από ποια IP άντρεσες έχουμε προσπελάσεις στο web server μας. Αυτό είναι ένα stream συνέχεια, είναι ένα ρεύμα δεδομένων που καταγράφουμε συνέχεια, τιμές με το phone, ειδοποίησης συντρομητών και ούτω καθεξής. Πολύ μεγάλο ενδιαφέρον υπάρχει και το δεύτερο που σε αυτό θα εντοπίσω και εγώ, που είναι οι υπηρεσίες εντοπισμού, αυτό που λέμε τα location based services ή υπηρεσίες με βάση τη θέση. Τέτοιες υπηρεσίες χρησιμοποιείται πολύ από εσάς τώρα με την έννοια δηλαδή της πιο απλής υπηρεσίας που αν έχω GPS ή και αν δεν έχω GPS όπως ξέρετε πολλά κινητά έχουν και τη δυνατότητα να σου δίνουν τη θέση ακόμα και αν δεν έχεις GPS χρησιμοποιώντας τι αν έχετε δει έτσι τα κινητά. Έχετε δει που υπάρχουν πολλά κινητά τώρα που σου δείχνουν που είσαι στο χάρτη αλλά μπορεί να μην έχετε GPS στο κινητό σας, έχει κανείς, κανείς. Όλοι έχετε έξυπνα κινητά με GPS. Ποιος έχει χάρτη ας πούμε να το πω έτσι μια αφαρμογή στο κινητό που του λέει που είναι αλλά που δεν έχει GPS. Πώς το κάνει ξέρεις, όχι. Με τις κερές. Τι κάνουν με τις κερές κινητής τηλεφωνίας, ανοιχνεύουν ποιες κερές πιάνουν, επειδή όπως ξέρετε υπάρχουν οι λεγόμενες κυψέλες, όπως είσαι σε κάποια θέση, αυτός λέει ότι πιάνουν την κερέα τάδε, γιατί στην κάθε κερέα όταν είναι ένα συνδεθείς με κάποια κυψέλη, όπως λέμε, υπάρχει το λεγόμενο ID της κυψέλης, μια ταυτότητα της κυψέλης, οπότε σου λέει αυτό το πιάνω με τόσα δισιμπέλ, ένταση σήματος, το άλλο τόσο, το άλλο τόσο, οπότε έχει έναν αλγόριθμο μέσα, που ξέροντας τις θέσεις των κερεών, και αυτό είναι σημαντικό έτσι, γιατί άμα δεν ξέρεις τις θέσεις των κερεών δεν μπορείς να το προσδιορίσεις, ξέροντας τις θέσεις των κερεών μπορείς περίπου να πεις που είσαι, με μια ακρίβεια παρεπτώντας που έχουν αυτά τα συστήματα της τάξος των 300 με 400 μέτρα, ανάλογα και πόσες κερές έχεις. Τώρα, γενικά υπάρχουν υπηρεσίες αυτή τη στιγμή σε πάρα πολλά devices, σε πάρα πολλές συσκευές, που σου λέει που είσαι. Και βεβαίως, με αυτές τις υπηρεσίες κάνουμε πλοήγηση, τα μηχανάκια που έχετε δει μέσα σε αυτοκίνητα γενικά, ή τηλεμαντική, μπορείς να κάνεις προστασία περιβάλλοντος, δηλαδή αν μαζεύεις πληροφορίες, θέλω να πω, για το περιβάλλον, διαφήμιση, τουρισμό, και βλέπετε κάτω, υπάρχουν ένα σωρό εφαρμογές που μπορείς να κάνεις. Σε αυτές εδώ, τις εφαρμογές, το χαρακτηριστικό είναι ότι κάπως έχω τη θέση του αντικειμένου. Παράδειγμα, αν έχω τη θέση ενός ανθρώπου που κρατάει ένα κινητό στη τσέπη του, μπορώ να τους πρόξω διαφημίσεις για μαγαζιά τα οποία είναι και κοντά, κλπ. Τώρα, ειδικά για τα ρεύματα θέσεων αντικειμένων, άρα βλέπετε, φεύγω από τα ρεύματα δεδομένων και πάω στα ρεύματα θέσεων αντικειμένων. Εδώ τι θα έχουμε λοιπόν, φανταστείτε το εξής, έχουμε ρεύματα δεδομένων μόνο που αυτό που έρχεται, δεν είναι μια θερμοκρασία, μία τιμή μετοχής και τα λοιπά, αλλά είναι ένα στίγμα. Μούρχονται δηλαδή συνέχεια στίγματα, έχω ένα μεγάλο πλήθος κινούμενων αντικειμένων. Άνθρωποι, συσκευές, εμπορεύματα, ζώα. Σε πολλά ζώα τώρα, όπως ξέρετε, βάζουν πάνω κάποιο κολάρο για να μπορούν να τα παρατηρήσουν πού είναι και το καθεξής. Αυτό, υπάρχουν ένα σωρό εφαρμογές που εδώ μπαίνουν και θέματα ιδιωτικότητας βέβαια, αλλά φανταστείτε σε εφαρμογές που δεν παραβιάζουμε την ιδιωτικότητα και θέλουμε να παρακολουθούμε πάρα πολλές εταιρίες πλέον το στόλο τους, η ΔΕΛΤΑ, η ΦΑΓΙΕ, όλες οι εταιρίες τελος πάντων που έχουν στόλους οχημάτων, θέλουν να παρακολουθούν τους στόλους γιατί τους βοηθάει να κάνουν καλύτερους αργορίθμους, αν θέλετε, μετά για να μοιράζουν προϊόντα και το καθεξής. Σε τέτοιους εφαρμογές, λοιπόν, υπάρχει το παρόν, η θέση που είμαστε τώρα, το location που λένε, η καταγραφή της θέσης, υπάρχει το παρελθόν που είναι η τροχιά και θα δούμε παρακάτω ότι οι τροχές προσφέρουν ενδιαφέροντα προβλήματα για να τις αναλύσουμε, έτσι, άρα η ιστορία, αν θέλετε, το παρελθόν και υπάρχει και το μέλλον, η πρόβλεψη της πορείας. Δηλαδή, κρατώντας αυτά τα τρία, μπορεί κάποιος να σκεφτεί ότι εδώ υπάρχουν τώρα ενδιαφέροντα προβλήματα και να σας δώσω ένα πρόβλημα που είχε μια μεγάλη εταιρεία έτσι που ασχολιόταν με τέτοια συστήματα, όταν έχεις οχήματα που παρακολουθείς, με το που μπαίνουν μέσα σε τούνελ, να το πω έτσι, σε χώρους που δεν πιάνει το GPS, δεν μπορούν να στείλουν το στίγμα τους. Σωστά. Εσύ όμως θες να τα παρακολουθήσεις. Ας πούμε, ένα ενδιαφέρον πρόβλημα έτσι αργόριθμος είναι ξέροντας το οδικό δίκτυο, ξέροντας, έχοντας τα στίγματα από όπου είχε περάσει αυτός το παρελθόν, μπορείς να μου κάνεις μια πρόβλεψη που θα πάει μετά. Το λάβατε, λέω. Άρα ακόμα και να πέσω σε περιοχή που δεν έχει, δεν μπορώ να πάρω το GPS πληροφορία, θα μπορώ να προλέψω τη θέση του. Αυτά λοιπόν τα ρεύματα σημιακών θέσεων, είναι ρεύματα τα οποία έχουμε άφιξη πλήθως όπως λέμε γεωγραφικών στιγμάτων με κειμενόμενο ρυθμό και λέω με κειμενόμενο ρυθμό, γιατί σε διάφορες εφαρμογές και ανάλογα με το πώς δουλεύει η εφαρμογή, μπορεί να μην έχει συνεχώς κάθε δευτερόλεπτο την πληροφορία. Έχεις πληροφορία που έρχεται με κάποιο κειμενόμενο ρυθμό. Θέλουμε να δώσουμε επίκαιρες απαντήσεις σε επικοιλία ερωτημάτων, σαν και αυτά που σας έλεγα πριν, τα συνεχή ερωτήματα. Και υπάρχει η ανεπάρκεια των συμβατικών βάσεων δομένων γιατί είναι πολύ απλό, επειδή αυτό έχουμε δοκιμάσει κιόλας πειραματικά να το δουλέψουμε. Αν πας και καταγράφεις σε μια βάση δεδομένων κάθε τύπου έρχεται και εκείνη την ώρα ρωτάς κιόλας, όλο το σύστημα κάθεται. Φανταστείτε όμως και κάτι παραπάνω τώρα. Φανταστείτε να στέλνουν 20.000 αντικείμενα το στίγμα τους και να υπάρχουν και 5.000-200.000 χρήστες να ρωτάνε ερωτήματα. Αυτό το σύστημα κάθεται. Άρα πρέπει να βρεις τρόπους, αλγορύθμους, τρόπους αποθήκευσης, επεξεργασίας κτλ. ώστε να τα κάνεις γρήγορα. Αυτό είναι το ζουμί αν θέλετε σε αυτή την περιοχή. Και θα σας δώσω ένα παράδειγμα για να μην νομίζετε ότι αυτά είναι και λίγο τεχνητά τα θέματα που κοιτάμε. Φανταστείτε αν στην Αθήνα, γιατί εδώ δεν έχει και πολύ ενδιαφέρον θα έλεγα στην Κέρκυρα, στην Αθήνα σε κάθε ταξί είχαμε ένα μηχανάκι το οποίο έστρεπε το στίγμα του, που τώρα περίπου όλα τα ταξί έχουν μηχανάκια και μπορούν να στείλουν το στίγμα. Δεν θα είχαμε real time πληροφόρηση της κίνησης στην Αθήνα. Θα είχαμε. Πολύ απλά δηλαδή, χωρίς να σπαταλίσουμε τίποτα. Τώρα το υπερχοδέ βγάζει στοιχεία κίνησης που τα μετράνε όπως ξέρετε με κάτι καλόδια που ρίχνουν στους δρόμους και τα πουλάει κιόλας και πανάκρυβα. Τώρα φανταστείτε όλους τους ανθρώπους που θελοντικά, αυτοί που έχουν smartphones μπορούνε και θέλουν να συμμετάσχουν αυτό που λέμε το crowdsourcing και να μαζεύουμε κάπου στίγματα, το οποίο όταν φεύγει το στίγμα μπορεί να φτιαχτεί και έτσι εφαρμογή, να αποκρύπτει και από ποιο κινητό έρχεται, ούτε private. Απλώς μας έρχεται ένα στίγμα που λέει ότι το ID τάδε που δεν έχει σημασία ποιος είναι, δεν με ενδιαφέρει να ξέρω ποιος είναι, μου στέλνει το στίγμα του και έχω συνεχώς πληροφορία την κίνηση. Τέτοιου είδους εφαρμογές μας ενδιαφέρουν. Και ερευνητικά θέματα είναι όταν κάνεις σύνθετα όπως λέμε χωροχρονικά ερωτήματα διάρκειας, δηλαδή κάνω τώρα ερωτήματα εδώ και γιατί λέω χωροχρονικά, γιατί τα ενδιαφέροντα ερωτήματα σε αυτό το πεδίο είναι πες μου για παράδειγμα στον τακτήλιο της Αθήνας ή στο κέντρο της Κέρκυρας με τι ρυθμό μπαίνουν τα αυτοκίνητα που έρχονται από την κατεύθυνη στάδα, δηλαδή να βάλεις μέσα και το χρόνο και το χώρο, να προσδιορίσεις παράδειγμα μια περιοχή αυτό είναι το χωρικό κομμάτι και μετά το χρονικό. Τι τεχνικές αποτίμησης θα χρησιμοποιήσουμε, τι ευρετήρια το ίντεξιν που λέμε, εσείς έχετε ακούσει κάποιες δομές για β-δέντρα, χάσινκιου το καθεξής, τι ευρετήρια χρησιμοποιούμε για να τα κάνουμε αυτά να πάνε γρήγορα, γιατί προφανώς τίποτα από αυτά δεν δουλεύει γρήγορα αν δεν του βάλεις και κάποιες δομές από κάτω να τα υποστηρίζουν. Και μετά στην διαχείριση δεδομένων αυτό που λέγαμε περιορισμό του όγκου, δηλαδή να προσπαθήσω όσο δυνατόν λιγότερα δεδομένων να επεξεργάζομαι και να μπορώ να έχω και κλιμάκους της επεξεργασίας, δηλαδή θα μου βάλεις χιλιούς χρήστες και αύριο θα είναι εκατό χιλιάδες χρήστες να δουλεύει. Αυτή είναι η κλιμάκος, το scaling που λέμε. Έχουν εφιαχθεί διάφορα πρωτότυπα, prototype, κυρίως στην Αμερική, γι' αυτό βλέπετε και τα πανεπιστήμια εκεί είναι δυστυχώς από την Αμερική μόνο. Ήταν οι πρώτοι που ξεκίνησαν σε αυτή την περιοχή. Όπως σας είπα σε αυτά, υπάρχουν αναφορές πίσω που μπορεί κάποιος να ανατρέξει μετά, αν θέλετε. Βασικά είναι από πανεπιστήμια όλα, αν και πολλά από αυτά τώρα έχουν εφιαχθεί σαν spin-off εταιρίες και πουλάνε υπηρεσίες χρησιμοποιώντας αυτά τα συστήματα. Αυτές είναι μηχανές, όπως λέμε, επεξεργασίας ρευμάτων, όχι δηλαδή χωρικών στιγμάτων που λέω, αλλά γενικά ρευμάτων δεδομένων. Υπάρχουν και συστήματα που επεξεργάζονται αυτό που λέμε events, για complex events processing, που αν του βάλεις, να το πω έτσι, σύνθετα πράγματα που θέλεις να παρατηρείς και υπάρχουν και κάποια χρονικά συστήματα, συστήματα δηλαδή που επεξεργάζονται χωρικά ρευμάτα δεδομένων. Και τα εμπορικά συστήματα που σας λέω εκεί δεξιά είναι στην ουσία, αν θέλετε, κάποια ακαδημαϊκά πρωτότυπα τα οποία τα πήραν εταιρείες και γνωστές εταιρείες, έτσι, και η IBM και ο Oracle και τα λοιπά και τα ενσωματώσανε μέσα σε συστήματα τους. Γιατί αυτές τις εφαρμογές είναι εμπορικές εφαρμογές. Δηλαδή αυτή τη στιγμή, έξω οι πελάτες ζητάνε τέτοιους εφαρμογές, δεν είναι κάτι που περιορίζεται στη σφαίρα του ακαδημαϊκού πρωτοτύπου. Λοιπόν, αυτό εδώ που βλέπετε τώρα είναι μια, πώς τα λέμε αυτά τα thematic clouds, τα tags που λέμε, απλώς έτσι για να πάρετε μια ιδέα πόσοι πολλοί όροι μπαίνουν σε αυτό το χώρο. Το data stream είναι εκεί στο κέντρο, continuous queries, ιστογράμματα, sampling, accessibility, τώρα μην τα πούμε όλα αυτά, πάντως είναι πάρα πολλά τα themata. Αυτό θέλω να δείξω δηλαδή ότι ο χώρος αυτός έχει περιθώριο και γι' αυτό ήθελα να σας μιλήσω γι' αυτό σήμερα που είσαστε και φρέσκοι τώρα και θα έρθουν αργότερα και μεταπτυχιακά και διδακτορικά, είναι μια περιοχή, και θα κρατήσει, γιατί όπως σας είπα αυτές οι εφαρμογές ζητιούνται και επομένως αν αρχίζεις και βγάζεις και συστήματα και τα βάζεις σε αυτούς τους εφαρμογές θα προκύπνουν και καινούργιες απαιτήσεις, έτσι άρα και καινούργια προβλήματα. Αυτό είναι ένα σύστημα που έχουμε φτιάξει στο Πολυτεχνείο που το λέμε TSV, trajectory stream visualizer, γενικά είναι ένα σύστημα το οποίο σου επιτρέπει να έχεις διάφορα ρεύματα δεδομένων με στίγματα, αυτά μπαίνουν στο σύστημα Telegraph-CQ που είναι του Berkeley ένα γενικό σύστημα επεξαγραφίας ρευμάτων δεδομένων και το οποίο επειδή στηρίζεται πάνω στην Postgres, μπορεί να την έχετε ακούσει είναι μια open source βάση δεδομένων, είχαμε τη δυνατότητα να επέμβουμε πάνω στην Postgres και να προσθέσουμε να το πω έτσι και επεξεργασία χωρικής πληροφορίας και επομένως μπορούμε να βάλουμε συνεχή ερωτήματα πάνω σε στίγματα, πάνω σε τροχές όπως λέμε εκεί πέρα και το καθεξής. Αυτή είναι μια γενική αρχιτεκτονική πάρα πολύ χοντροειδής η οποία λέει ότι τα ρεύματα που μπαίνουν μέσα από κάποια επεξεργασία που λέμε rappers εκεί αριστερά κάτω μπαίνουν μέσα σε ένα σύστημα επεξεργασίας ρευμάτων, δηλαδή επειδή έχουμε και τη θέση και τα λοιπά, μπαίνουν σε ένα σύστημα ρευμάτων που μετά μπορεί να απαντάει συνεχή ερωτήματα που υποβάλλονται από πάνω μέσα από κινητά, δεν έχει σημασία από που, εμείς λέμε γενικά ότι είναι μια διεπαφή σε Java η οποία σου επιτρέπει να μιλάς με αυτό το σύστημα και να έχεις παράδειγμα αυτό που βλέπετε πάνω σε μια μικρή εικόνα που το υλοποιήσαμε χρησιμοποιώντας τις ESRI που είναι από τις πιο γνωστές εταιρίες για GIS με τα λεγόμενα map objects μπορεί να βλέπεις στο διαδίκτυο την κίνηση αντικειμένων και τα αποτελέσματα των συνεχών ερωτημάτων σου, δηλαδή ένα συνεχές ερώτημα είναι θέλω να βλέπω συνεχώς τους πέντε κοντινότερους φίλους μου όπως κινούμε, γιατί θέλω να ξέρω, θα πάω για καφέ, ποιοι είναι οι πέντε πιο κοντινοί μου για να μπορώ να τους ενημερώσω άρα όπως προχωράω εγώ και φαίνομαι το στίγμα μου στο χάρτη μου δείχνει και σε πέντε κουκίδες ποιοι είναι οι πέντε κοντινότεροι κάθε φορά παρατηρώντας βέβαια υπάρχουν και άνθρωποι που έχουν χιλιάδες φίλους στο facebook. Τώρα, θα περάσω πάρα πολύ γρήγορα από κάποια θεματάκια γιατί ήθελα να σας δώσω έτσι λίγο αναλυτικά την περιοχή και τώρα θα εντοπίσω σε ένα δυο σημεία από αυτά που βάζω εδώ πέρα για να σας δείξω ενδιαφέροντα προβλήματα προκύπτου. Το πρώτο είναι πώς χειριζόμαστε συνεχώς κινούμενα αντικείμενα, το δεύτερο αυτό που λέω συμπίεση θεωρώ ότι είναι ένα ενδιαφέρον παράδειγμα με αυτό που σας έλεγα πώς μπορούμε και ελαττώνουμε τον όγκο των δεδομένων και στηρίζεται στην εξής λογική. Όταν παρατηρώ την τροχιά ενός αντικειμένου, αυτό που με ενδιαφέρει πιο πολύ συνήθως είναι τι, τα πρόσφατα εδομένα. Το παρελθόν δεν με ενδιαφέρει να το κρατάω και σε πολύ μεγάλη ακρίβεια. Εδώ μπαίνει το θέμα πώς αποθηκεύεται αυτή η πληροφορία στη βάση θεοδομένων. Σας είπα ότι είναι πάρα πολύ πληροφορία αυτή. Αν κρατάω στίγμα κάθε 10 δευτερόλεπτα της κίνησης ενός οχείματος καταλαβαίνετε πόση πολύ πληροφορία μαζεύουμε στη μέρα. Και βέβαια φανταστείτε αυτό να το κρατήσω για πολλές μέρες, έτσι. Οπότε τι μπορώ να κάνω εδώ πέρα. Εγώ μπορεί να κρατάω ναι μεν την πρόσφατη πληροφορία αναλυτικά γιατί αυτή μου χρειάζεται για να απαντάω σωστά τα ερωτήματα. Αλλά όσο πάω πιο πίσω να κάνω τι. Να κάνω μια προσέγγιση. Δηλαδή στην τροχιά αν το φανταστείτε σαν μια καμπύλη να μην την κρατάω όλη πλήρως αλλά να κάνω μια προσέγγιση της τροχιάς. Με λιγότερα σημεία. Αυτό είναι πώς συμπιέζω τροχές. Πώς λέμε πώς συμπιέζω εικόνα, πώς συμπιέζω φωνή, πώς συμπιέζω τροχές. Έτσι ώστε όπως ξέρετε όταν συμπιέζεται φωνή, όταν ακούω μετά το τραγούδι πρέπει να βγει κανονικό. Να έχω δηλαδή μικρή απώλεια. Εδώ πώς συμπιέζω τροχές ώστε να έχω μικρή απώλεια. Γενικά πάντως στα ρεύματα δεδομένων αυτό το οποίο έχουμε είναι, να σας δώσω την εικόνα του μοντέλου, είναι σχεσιακές πλυάδες. Τάπλες που λέμε, έτσι στα αγγλικά. Υπάρχει και ένα πεδίο που το λέμε timestamp, το χρονώσιμο. Τι είναι το χρονώσιμο, είναι κάθε τι που έρχεται και καταγράφεται παίρνει προφανώς και μία τιμή χρόνου. Πότε το μέτρησα ή πότε το κατέγραψα. Όλα τα χρονώσιμα έρχονται από ένα κοινό συνολοτάφ, το time domain που λέμε, το οποίο είναι διατεταγμένο, έτσι. Βεβαίως ο χρόνος είναι διατεταγμένος, αλλά είναι άπειρο. Και παρεπιπτόντως εκτός από τέτοια έχουν μελετήσει και άλλα πράγματα. Μπορεί να μελετήσεις XML streams που λέμε. Δηλαδή μπορεί να σου έρχονται δεδομένα σε XML, όχι απλές τιμές, δηλαδή μια θερμοκρασία, μια μετρική κλπ. Είναι κάτι πιο σύνθετο, όπως ένα XML δεντράκι, τα οποία όμως έρχονται και αυτά με τη μορφή streams. Δηλαδή είναι πιο σύνθετη πληροφορία από μια απλή τιμή. Θα περάσω λίγο τον τυπικό ορισμό, αν θέλετε, του τι είναι ένα stream, έτσι. Και θα πάω να δούμε λιγάκι σχηματικά, αν θέλετε, τι είναι τελικά αυτά τα ρεύματα θέσεως αντικειμένων. Στο πεδίο του χώρου βλέπετε ότι έχω στίγματα, έτσι δεν είναι, δηλαδή κάθε τι που έρχεται είναι ένα στίγμα στον χώρο. Και στο πεδίο του χρόνου έχω χρονώσιμα. Αυτό που βλέπετε τώρα τα μω που γίναν πράσινα, που γίναν κόκκινα κτλ, αυτό τι δείχνει τώρα. Δείχνει το ίδιο αντικείμενο, εδώ πέρα είναι στη χρονική στιγμή ταφ, έτσι. Και μετά βλέπετε τώρα, τη χρονική στιγμή ταύσιν ένα, ταύσιν δύο, ταύσιν τρία, ταύσιν τέσσερα. Αυτά είναι τα αντικείμενα τα οποία κινούνται, τα οποία έχουν ένα αποτύπωμα στον χώρο, έτσι δεν είναι, και στον χρόνο. Τώρα, τα ρεύματα σημιακών θέσεων, αυτά τα positional stream που λέμε, είναι μια, έναν έφωση από τέτοιες πλειάδες που έρχονται, τα οποία είναι μη φραγμένες ακολουθίες, πεπερασμένο πλήθος στιγμάτων αναχρονώσεων, λέει κάθε φορά που μετράω, ξέρω ότι μαζεύω έξω χίλια σημεία, εντάξει, αυτό είναι πεπερασμένο. Και, εδώ πέρα, μπαίνουν πολλά ενδιαφέροντα ερωτήματα που έχουν να κάνουν με την κίνηση, εξού και οι τροχές. Δηλαδή, τα ερωτήματα τα οποία μας ενδιαφέρουν εδώ, τα διαρκή ερωτήματα που λέμε, μπορεί να είναι, όπως σας είπα πριν, θέλω ανά πάσα στιγμή να ξέρω ποια αυτοκίνητα είναι μες στο δακτήλιο, αν αύριο τα αυτοκίνητα όλα πάνε και μας κολλήσουν ένα μηχανάκι, να το πω έτσι επάνω, που θα στέλνουν το στίγμα. Ίσως έχετε ακούσει ότι στην Αθήνα σκεφτόντουσαν να βάλουν διόδια στο δακτήλιο. Προφανώς διόδια δεν μπαίνει στο δακτήλιο με φυσικά διόδια. Έτσι δεν μπορεί να γίνει. Δηλαδή, δεν μπορούμε να βάλουμε μπάρες τώρα και να καθυστερούμε. Τι θα κάνανε, θα βάλουν μηχανάκια πάνω στα αυτοκίνητα και θα πληρώνεις διόδια με βάση τη χρήση του δακτυλίου, να το πω έτσι. Όπως επίσης, θα μπορεί να παρατήρει κάποιος πώς αυτοκίνητα έχουμε μέσα στο δακτήλιο κλπ. Άρα, οι εφαρμογές μπορεί να κάνουνε με κάποια συνεχή ερωτήματα. Παράδειγμα, βάζω το δακτήλιο και λέω θέλω συνεχώς να ξέρω πώς αυτοκίνητα είναι μέσα στο δακτήλιο. Μπορεί να θέλω να πω πώς αυτοκίνητα μπαίνουν συνεχώς μέσα στο δακτήλιο. Δηλαδή, πόσο είναι η ισροή αυτοκίνητων, έτσι, ή βγαίνουν από το δακτήλιο, όχι στατικά μόνο πόσα είναι και ούτε κάτι εξής. Τροχές δηλαδή. Και να, οι τροχές, οι τροχές τι είναι, είναι η ακολουθία σημιακών σημείων, στίγματα με χρονώσιμα, δηλαδή να το πω έτσι απλά, συσδεταγμένη και τάφ, που εξελίζεται διαρκώς το χρόνο, αλλά αυτό που βλέπετε το πράσινο είναι μια τροχιά, το μπλε είναι το αποτύπωμα της τροχιάς πάνω στον χήψη άξονα, δηλαδή στο χώρο, έτσι. Και οι χρονικές στιγμές φαίνονται στον κάθε το άξονα που είναι το τάφ. Αυτό είναι μια τροχιά. Και ρεύμα τροχιών είναι στην ουσία μια ακολουθία από στίγματα, από πολλά αντικείμενα που όμως έχουν μια ταυτότητα σε κάθε πλειάδα, δηλαδή αυτό που βλέπετε είναι η τροχιά του αυτοκινήτου του Σελή. Μπορεί να έχουμε άλλη τροχιά αυτοκινήτου του Γεωργίου, άλλη τροχιά και φανταστείτε ότι μπορεί να έχω χιλιάδες τέτοιες τροχές. Άρα, υπάρχουν ενδιαφέροντα ερωτήματα που με ενδιαφέρει να κάνω πάνω στα στίγματα όπως έρχονται, αλλά υπάρχουν και πολύ ενδιαφέροντα ερωτήματα τα οποία θέλω να κάνω πάνω στις τροχές. Και να σας δώσω ένα παράδειγμα. Πάνω σε τροχές, το οποίο είναι και πραγματικό και πρακτικό και το έχουν κάνει. Αν μαζέψω τις τροχές που κάνει ο κόσμος το πρωί, μπορώ να βγάλω από αυτές αυτό που λέμε ποια είναι τα καυτά σημεία αντιέλευσης. Δηλαδή, αν δείτε πολλές τροχές που περνάνε από συγκεκριμένο κομμάτι ενός οδικού άξονα, σημαίνει ότι εκεί περνάνε πολλά αυτοκίνητα. Κλάστερ είναι να κάνω, να σας το πω έτσι, συσταδοποίηση. Δηλαδή, μπορεί να με ενδιαφέρει να επεξεργαστώ τις τροχές και τις ίδιες, η οποία κάθε τροχή αντιπροσωπεύει ένα αντικείμενο, έναν άνθρωπο είναι αυτοκίνητο όπως θέλετε πείτε το, αλλά και τα στίγματά τους. Συνήθεια ερωτήματα διάρκειας, βάσης δεταγμένων για παράδειγμα, μπορεί να έχω χρονοχρονικά αυτό που λέμε περιοχής. Δηλαδή βάζω μια περιοχή στο χώρο και λέω ανά πάσα στιγμή θέλω να ξέρω ποια σημεία είναι μέσα εκεί πέρα, είτε κύκλο, είτε ορθογόνι, είτε οτιδήποτε. Αυτά τα λέμε range ερωτήματα. Άλλα ερωτήματα, οι κάπα γείτονες. Ας πούμε θέλω να ξέρω τους πέντε κοντινότερους φίλους μου. Δηλαδή έχω ένα σημείο, βλέπετε το Q1 με κόκκινα χ σημείωμένα, Q1, Q2, Q3 κτλ. Αυτά τι είναι, έχουν έρθει οι χρήστες και λένε εγώ είμαι ο Q1, ο Q2, ο Q3, αυτοί οι χρήστες μπορεί να κινούνται και θέλουν να πάσα στιγμή σε μια ακτίνα που έχει προσδιορίσει ο καθένας, ή αν δεν προσδιορίσει ακτίνα να μου πει θέλω τους τρεις κοντινότερους. Οπότε εγώ πρέπει να πάσα στιγμή να του δείχνω στην οθόνη του όπως κινείται τους κάπα κοντινότερους γειτονές μου. Θέλω να έχω ερωτήματα συνάθρησης, θέλω δηλαδή να ξέρω το μέσο όρο, μια μέση τιμή, να το πω έτσι, παράδειγμαν αυτά είναι αυτοκίνητα και μου στέλνουν την ταχύτητά τους, θέλω να ξέρω τη μέση ταχύτητα μέσα στο παράθυρο αυτό που έχω ζωγραφίσει, των σημείων να πάω σε χρονική στιγμή. Υπολογίζω δηλαδή ένα average, ένα count, μια συναθρηστική συνάρτηση. Πυκνότητα, έτσι, πόσα σημεία είναι μέσα σε κάποιο χώρο, θέλω να ξέρω, να υπολογίζω συνεχώς αυτά που λέμε τα clusters, που μαζεύεται για παράδειγμα ο κόσμος. Θέλω να μου δείχνεις ανά πάσα στιγμή που δημιουργούνται συστάδες clusters. Και υπάρχουν διάφορα άλλα ρωτήματα, θέλω να υπολογίζω το convex hull, το convex hull είναι αυτό το κυρτό περίβλημα που βλέπετε, δηλαδή έχω μια ομάδα από σημεία και θέλω να πάρεις σε στιγμή να μου στέλνεις αυτό το πολίγωνο, περίκλει αυτά τα σημεία. Τα βόρωνό η κελιά και ούτω κάθε εξής. Δηλαδή υπάρχουν και πάμε τώρα στις στροχές, όπου εκεί μπορεί να θέλω να έχω ρωτήματα ομοιότητας, δηλαδή φέρ' μου όλες στροχές που κινούνται ομοιόμορφα, οχήματα που κινούνται ομοιόμορφα. Ή πού έχω συγχρονισμό, αυτό που σας έλεγα, πού έχω αυτά που λέμε κονβόι. Ή και κάπα εγγύτεροι γείτονες, δηλαδή φέρ' μου τις τρεις κοντινότερες στροχές. Αυτό, ας πούμε, για παράδειγμα, είχε ενδιαφέρομαι αεροπλάνα που καταγράφουν τις στροχές και πολλές φορές μπορεί να ακούτε ότι, ξέρω εγώ, στο τάδε μέρος είχαμε αυτό που λένε νεέρ, πετάξανε πολύ κοντά, κάτω από το όριο ασφαλείας, τέλος πάντων. Αν θες να κάνεις ανάλυση τροχιών, θέλεις να δεις ποιες ήταν οι τροχές οι οποίες ήταν πιο κοντά μου. Βλέπετε εκεί πέρα, αναπάσα χρονική στιγμή, δηλαδή όπως εξελίσει το χρόνος, θέλω να ξέρω τις τροχές οι οποίες είναι οι κοντινότερες, αναπάσα χρονική στιγμή. Θα περάσω λίγο, αυτό είναι ένα παράδειγμα ας πούμε. Για κάθε όχημα εντός της περιοχής μιας συγκεκριμένης του δακτυλίου, βρέσει το κοντινότερο του εντός της περιοχής αυτής κάθε 10 δευτερόλεπτα. Αριστερά βλέπετε το κατηγόρημα, είναι η κόκκινη περιοχή, αντίστοιχα διαμορφώνεται ένα παράθυρο εκεί που κινούνται τα αντικείμενα και το παράθυρο αυτό θέλουμε κάθε 10 δευτερόλεπτα να υπολογίζει ποια είναι τα κοντινότερα εκεί πέρα μέσα αντικείμενα. Και εδώ δείχνει απλώς, θα περάσω λίγο γρήγορα, όπως κινούνται. Θέλω να πάω, θα αφήσω κάποιες διαφανές, θέλω να σας δείξω λιγάκι. Θα θέλα να πάω σε κάποια παραδείγματα, αυτά είναι παραδείγματα χωροχρονικών παραθύρων. Θέλω να πάω σε κάποια παραδείγματα τα οποία έχουν να κάνουν με ερωτήματα που έχουν ενδιαφέρον σε αυτό το χώρο, για να σας κεντρήσω και λίγο το ενδιαφέρον από πλευράς ενδιαφερόντων προβλημάτων που μπορεί να έχουμε. Δεν είχα απολογίσει πολύ καλά το χρόνο, οπότε θα πάω λίγο... Συμπίεση, εδώ μια διαφάνεια αναδικείμενο θέλω να σας δείξω. Όπως είπαμε έχουμε πάρα πολλά εφήμερα δεδομένα και αυτό το οποίο μας ενδιαφέρει είναι να συμπιέσουμε κάπως τα δεδομένα ώστε όταν καταχωρηθούν μέσα στη βάση δεδομένων ή δυνατόν να μην πιάνουν το χώρο όλο αυτό που θα πιάνουν τα αποθηκεύαμα όπως ήταν. Έτσι λοιπόν μια ιδέα είναι να έχουμε αυτό που λέμε το time decaying process, δηλαδή όσο περνάει ο χρόνος, η πληροφορία που είναι πιο παλιά να συμπιέζεται και να κρατάει λιγότερο χώρο. Και θα σας το δείξω αυτό και σχηματικά. Άρα έχουμε επεξεργασία στην κύρια μνήμη, αυτό δεν το ξεχνάμε, δηλαδή ό,τι έρχεται και περνάει μπροστά μας το επεξεργαζόμαστε. Αυτό που έχει όμως σημασία είναι να κάνουμε απευθεία συμπίεση αυτών των ρευμάτων ώστε όταν αποθηκεύονται μέσα στη βάση δεδομένων να πιάνουν λίγο χρόνο. Και εδώ πέρα στην ουσία μπορείς να χρησιμοποιήσεις διγματολυψία πάνω στα εισερχόμενα στίγματα και να φτιάξεις αυτό το οποίο είχαμε ονομάσει αμνησιακές συνόψεις. Δηλαδή πώς λέμε ο άνθρωπος παθαίνει αμνησία, δηλαδή το σύστημα δεν θυμάται τόσο καλά πράγματα τα οποία είναι πολύ πιο πίσω στο παρελθόν. Και γι' αυτό θα σας το δείξω και λίγο σχηματικά. Αν έχουμε μια τροχιά που βλέπετε εδώ πέρα, αυτή η μπλε γραμμή, η τροχιά αυτή A, B, C είναι αυτή που περνάει η μπλε γραμμή, η συνεχής γραμμή να το πω, να προσεγγιστεί, τώρα λέμε πάλι όσο πάμε στο παρελθόν, μπορεί να προσεγγιστεί από, να το πω έτσι, μια γραμμική παρεμβολή A, B, C. Αυτό θα πιάσει πολύ λιγότερο χώρο μέσα στο σύστημα και το βασικό είναι να το κάνεις με έναν έξυπνο τρόπο και εκεί έχουμε προτείνει μια συγκεκριμένη δομή γιατί ξέρετε κάποιος θα μου πει ναι αλλά τι θα κάνεις, θα πηγαίνεις συνέχεια στα δομένα τα παλιά και εκεί που ήταν να το πω έτσι η αναπαράσταση αναλυτική θα την κάνεις προσεγγιστική και άντε πάλι περνάει ο χρόνος λίγο και θα ξαγυρίζουμε πίσω και το καθεξής. Εδώ πέρα λοιπόν η λογική είναι να χρησιμοποιήσεις μια δομή για να αποθηκεύσεις την τροχιά έτσι ώστε αυτή η διαδικασία που σας περιέγραψα, η διαδικασία δηλαδή του να προσεγγίζω την τροχιά με λιγότερα σημεία να γίνεται γρήγορα. Αλλά θέλω να κρατήσετε μόνο την έννοια της ας πούμε δειγματοληψίας και της αμνησίας δηλαδή να βρω έναν τρόπο ώστε οι τροχές να συμπιέζονται όταν αποθηκεύονται στο σύστημα. Παρεπτώντας τις τροχές δεν τις πετάμε γιατί κάποια στιγμή αργότερα μπορεί κάποιος να ρωτήσει ένα ερώτημα πάνω σε κάποια τροχιά. Εκεί θα πάρει μια προσεγγιστική απάντηση, δεν θα πάρει τόσο ακριβή όπως την ώρα που περνούσαν τα εδομένα από μπροστά του. Ένα άλλο ενδιαφέρον ερώτημα είναι η πρόβλεψη. Να πάω σε αυτό το σχήμα. Έτσι, η πρόβλεψη. Δηλαδή έχω μια κίνηση που βλέπετε εκεί, CDEFG. Τώρα, αυτό που θα θέλεις να κάνεις είναι όπως κινείται το αντικείμενο, παράδειγμα ένα αυτοκίνητο, και έχω κάποια στοιχεία για την κίνηση. Τι σημαίνει στοιχεία για την κίνηση. Εγώ ξέρω τις θέσεις από τις οποίες περνάει. Αφού έχω και τον χρόνο, ξέρω για πράγμα και την ταχύτητα με την οποία κινείται. Και το ερώτημα είναι, αν μπορώ να προσδιορίσω, να κάνω δηλαδή μια πρόβλεψη, που θα είναι η επόμενη θέση του. Και αυτό είναι ένα ερώτημα πολύ χρήσιμο. Έχει να κάνει μερεύματα εδομένων. Δηλαδή δεν μας ενδιαφέρει μόνο αυτό που λέμε παρατήρηση όπως περνάει μπροστά μας. Μπορεί να έχουμε και ερωτήματα τα οποία προβλέπουν την κίνηση στο μέλλον. Και εκεί πέρα πρέπει να μπορέσεις να βρεις μια τεχνική η οποία κάνει μια τέτοια. Και να μπορώ να σας το δείξω κιόλας. Αυτό είναι το δέντρο που έλεγα πριν, το αμνησιακό δέντρο, θα το περάσω. Θα σας δείξω λιγάκι. Δεν έχω το άλλο σχήμα. Πάντως, με αυτή τη λογική που λέμε εδώ πέρα, μπορώ να κάνω μια πρόβλεψη που θα είναι η θέση του αντικειμένου εκεί που βλέπετε το σημείο G, χρησιμοποιώντας πληροφορία που έχω από τη μέχρι τώρα κίνηση. Τώρα, απλώς εδώ πέρα για να κλείσω αυτό το κομματάκι και να περάσω στο επόμενο που νομίζω επίσης έχει ενδιαφέρον. Ζητήματα τα οποία σε αυτό το χώρο μας ενδιαφέρουν είναι αυτό που λέω προηγμένη συμπίεση. Δηλαδή να βρω αλγορύθμους που κάνουν συμπίεση σαν τον αμνησιακό που σας είπα αλλά με εγγυήση σφάλματος. Δηλαδή να ξέρεις ότι και βασικά αυτό το έχουμε υλοποιήσει. Αν θέλεις συμπίεση με σφάλμα μέχρι τόσο, θα κάνω άλλου είδους, να το πω έτσι, προσέγγιση σε σχέση με περίπτωση που θέλεις λιγότερο σφάλμα. Πώς φτιάχνουμε αυτές τις αμνησιακές συνόψεις. Και επίσης υπάρχουν και αυτές οι στρατηγικές που λέμε απόρριψης φόρτου, που σας έλεγα πριν. Δηλαδή όπως έρχονται τα σημεία κάποια να τα πετάω, παράδειγμα, αν βλέπω ότι η πορεία του είναι πάνω στην ίδια ευθεία. Δεν μου χρειάζεται καν να κρατήσω αυτά τα σημεία. Ξέρω ποιες θα είναι οι τιμές τους. Λοιπόν, ένα άλλο θέμα το οποίο ήθελα να σας δείξω λιγάκι, είναι τα λεγόμενα ερωτήματα με προτεραιότητα. Τι είναι τα ερωτήματα με προτεραιότητα. Σε πάρα πολλές εφαρμογές, όπως ξέρετε, υπάρχουν οι χρήστες που μπορεί να πληρώνουν άλλου είδους συντρομή. Δηλαδή, εγώ θέλω, πληρώνω παραπάνω λεφτά, να το πω έτσι, και θέλω τα ερωτήματα τα οποία βάζω να απαντιώται γρήγορα. Ο άλλος, που πληρώνει λιγότερα, λέει, εντάξει, εμένα δεν με πειράζει να παίρνω με μια καθυστέρηση τις απαντήσεις στα συνεχή ερωτήματα. Οπότε, υπάρχει κάποια έννοια προτεραιότητας στα ερωτήματα τα οποία μπαίνουν. Οι χρήστες επιθυμούν απαντήσεις άμεσα ή συχνά, όπως λέμε. Παράδειγμα, κλείσια στενοφόρου και αναζήτηση εστιατορίων. Στην εφαρμογή που είναι η κλείσια στενοφόρου, η προτεραιότητα είναι, όπως καταλαβαίνετε, πιο σημαντική από την αναζήτηση εστιατορίου. Δηλαδή, θα κοιτάξω να εξυπηρετήσω τα ερωτήματα τα οποία έχουν να κάνουν, να το πω έτσι, με την κλείσια στενοφόρου, πιο γρήγορα, σε σχέση με ερωτήματα τα οποία έχω για αναζήτηση εστιατορίων που είναι κοντά μου. Οπότε, ο κεντρικός επεξεργαστής, όπως το πούμε έτσι ο υπολογιστής που εξυπηρετεί αυτά τα ερωτήματα, μπορεί να δώσει προτεραιότητες, να δρομολογήσει την εκτέλεση των ερωτημάτων, έτσι ώστε να εξυπηρετεί πρώτα αυτούς που έχουν υψηλότερη προτεραιότητα για καλύτερη κατανομή των πόρων. Και εδώ πέρα θα ήθελα να σας το δείξω λίγο σχηματικά. Εδώ λοιπόν έχω νη στίγματα από κινούμενα δικείμενα, έχω αυτό που λέω μη διαβαθμισμένα κινούμενα ερωτήματα, κάθε ένα ορθογόνιο που βλέπετε εκεί κόκκινο, είναι ένα ερώτημα που έχει θέσει κάποιος χρήστης. Ας πούμε είναι κάποιος που μου λέει εμένα με ενδιαφέρει να ξέρω συνέχεια ποιοι κινούνται εδώ, βλέπετε με 0.1 που βάζω προτεραιότητα. Κάποιος άλλος μου λέει εμένα με ενδιαφέρει αυτοί που είναι εκεί πέρα, 0.2, 0.1, 0.2, άρα αυτό μπορείτε να φανταστείτε είναι οι προτεραιότητες που έχουν δοθεί στα διάφορα ερωτήματα και επομένως εγώ υποχρεούμε να απαντάω αυτό που λέω συγχρονισμένα ρεύματα δεδομένων, δηλαδή έχω τα ρεύματα των θέσεων, έχω τις περιοχές αυτές που έχουν δηλωθεί, παρεπτώντας αυτές τις περιοχές μπορεί επίσης να κινούνται. Δηλαδή εγώ μπορεί να δυστυχώ στην περιοχή που βλέπετε αριστερά την 0.1 τη μεγάλη την κόκκινη που λέει ότι όπως κινούμε θέλω να ξέρω τους 10 κοντινότερους φίλους μου. Αυτή η περιοχή μπορεί να κινείται κιόλας μαζί μου, δηλαδή όπως κινούμε εγώ θέλω να ξέρω τους 10 κοντινότερους. Καταλάβατε να πω, άρα και τα σημεία κινούνται αλλά και τα ερωτήματα μπορεί να κινούνται. Και ένα ενδιαφέρον πρόβλημα, γι' αυτό σας το δείχνω εδώ, είναι ότι αν έχουν δοθεί προτεραιότητες αυτά, που σημαίνει ότι αυτός που έχει προτεραιότητα 0.2 πληρώνει περισσότερα χρήματα από μένα και θέλει απόκριση πιο γρήγορη. Πώς θα μπορέσω να φτιάξω ένα σύστημα που θα αποτιμά αυτά τα ερωτήματα συνεχώς, είτε είναι κινούμενα, είτε είναι στατικά ερωτήματα όπως θέλετε πείτε τα, αλλά τα σημεία σίγουρα είναι που αλλάζουν στον χρόνο, έτσι ώστε να εξυπηρετεί με προτεραιότητα. Αυτό είναι ένα θέμα αν θέλετε ενδιαφέρον, έχουμε δουλέψει πάνω σε αυτό, υπάρχει και αναφορά μέσα. Γενικά υπάρχουν κάποιοι κύκλοι εκτέλεσης, φανταστείτε ότι τον χώρο τον χωρίζουμε με κάποιο κάναβο, όπως λέμε ένα grid σε τετραγωνάκια, ξέρουμε ποια ερωτήματα είναι αναπάρσες στιγμή σε κάθε τετραγωνάκια, κοιτάμε να αποτιμούμε με τη σειρά αξίας του κάθε τετραγώνου ας πούμε και όχι όλα συμμετρικά, να μην μπορώ σε λεπτομέρεια εδώ πέρα. Αυτό που βλέπετε είναι ο κάναγος, ο πράσινος. Πάντως είναι ένα ενδιαφέρον ερώτημα γιατί αν φτιάξουμε συστήματα τα οποία είναι πρακτικά να το πω έτσι και χρησιμοποιούνται έξω, αυτό είναι δεδομένο, δηλαδή δεν είναι όλοι χρήστες οι ίδιοι, πρέπει να σκεφτείς και κάποιους τρόπους πώς μπορείς να αποτιμάς ερωτήματα που υπάρχουν προτεραιότητες. Υπάρχουν κάποιες τεχνικές τοπτομέρειες τις έχω αφήσει μέσα ώστε αν θέλετε να τις δείτε παραπάνω. Και θα πάω επειδή δεν θέλω να τραβήξω πολύ σε χρόνο, να σας πω για ένα άλλο πρόβλημα. Αυτό που λέμε εποπτεία προσανατολισμού κινήσεων. Να σας δώσω δηλαδή ένα άλλο πρόβλημα που πάλι πιστεύω να συμφωνήσετε μαζί μου ότι είναι πρακτικό και θα τον ενδιαφέρω να βρούμε λύσεις. Αυτό που βλέπετε εδώ πέρα είναι εποπτεία προσανατολισμού κινήσεων. Βλέπετε τα σημεία τα οποία στον χρόνο υπάρχουν, αυτά που βλέπετε το κόκκινο, το πράσινο, το μπλε είναι κάποια σημεία τα οποία έχω βάλει. Παράδειγμα δεν ξέρω από Κέρκυρα αλλά να πω έτσι για την Αθήνα. Το ένα μπορεί να είναι η Βουλή, το άλλο μπορεί να είναι το Ολυμπιακό Στάδιο, το άλλο μπορεί να είναι οι Στήλες Ολυμπιού διός και τι θέλω. Θέλω να πας στη στιγμή να μου λες ποιοι έρχονται προς εμένα ή φεύγουν από εμένα. Είναι αυτό που λέω, θέλω το προσανατολισμό της κίνησης, όχι ποιοι είναι κοντά μου ή μακριά μου, δηλαδή αν το μετρήσουμε σε απόσταση, αλλά αν δείτε τα βελάκια είναι ποιοι πηγαίνουν προς το F3 ξέρω εγώ ή ποιοι φεύγουν από το F3, είναι κατανοητό. Ας πούμε για διάφορα σημεία της πόλης, να σας το πω έτσι απλά, για διάφορα σημεία της πόλης μπορεί να θέλω να παρατηρώ ποιοι πάνε προς τα εκεί εκείνη την ώρα ή ποιοι φεύγουν από εκεί. Οπότε είναι όπως τα ανομάζουμε ερωτήματα προς ανατολισμού και αυτό δείχνει μια τάση κίνησης. Προς τα πού κινούνται αυτά τα οχήματα. Και αυτό λέμε, είναι σαν μια συστυχία ραντάρ, δηλαδή έχουμε πολύσύχναστες διευθύνσεις κίνησης εκεί που πηγαίνουν πράγματα προς τα εκεί, παράδειγμα τέτοια πράγματα είναι τα σχολεία το πρωί, υπάρχει μια κίνηση το πρωί προς τα σχολεία και μετά φεύγουν οι άνθρωποι από τα σχολεία, γιατί αφήνουν τα παιδιά τους. Φανταστείτε δηλαδή σημεία στα οποία υπάρχει γενικά, θέλουμε να κάνουμε ερωτήματα προς ανατολισμού. Τώρα, εδώ πέρα πάλι έχουμε αντικείμενα τα οποία, να το πω έτσι, καταγράφουμε που μας δείχνουν κάπως την κίνησή τους. Τώρα εδώ πέρα στα αντικείμενα αυτά μπορεί να έχουμε και επεξεργασία, δηλαδή να έχει μια στοιχειώδη επεξεργαστική ισχύ, όπως λέμε, τηρεί τα πρόσφατα στιγματά του, αναθεωρεί το προσανατολισμό, δηλαδή όπως κινούμαι εγώ το μηχανάκι που έχω στο αυτοκίνητο, μπορεί να μην στέλνει μόνο το στίγμα. Γιατί ξέρετε αυτά έχουν και μια υποτυπώδη επεξεργαστική ισχύ. Μπορεί, παράδειγμα, να κρατάει τα πρόσφατα στιγματά του, να μου στέλνει και το προσανατολισμό, αφού έχει τα προηγούμενο και το ορεινό, μπορεί να μου πει ότι κινούμαι βόρεια, κινούμαι νότια κλπ. Και ενημερώνει όταν σημειωθεί απόκλειση, δηλαδή όπως μου στέλνει εμένα μου λέει κινούμαι βόρεια. Αν κινείται συνέχεια βόρεια δεν είναι για να μου στέλνει τίποτα. Γιατί αλλάζει λίγο η κατευθυνσή του, τότε μου στέλνει ένα καινούργιο, λέει στον Κεντρικό Σταθμό, στέλνει μια πληροφορία και λέει τώρα πηγαίνω βορειοετικά. Έτσι. Οπότε έχουμε κάνει μια υπόθεση εδώ ότι κάποια πληροφορία μας έρχεται έτοιμη από τους χρήστες, από τα μηχανάκια τα οποία είναι στα αυτοκίνητο. Ο εξυπηρετής συντηρεί την κατανομή και τώρα εμάς μας ενδιαφέρουν αυτό, πώς αποτιμάς ερωτήματα προσανατολισμού. Δηλαδή θέλω και έχουμε ένα καινούργιο ευρετήριο το οποίο το ονομάζουμε Polar Tree, δηλαδή είναι ένα δέντρο που αν θέλετε αποθηκεύει όχι τα στίγματα με τις αποστάσεις του και το καθεξής, αλλά τις κατευθύνσεις τους. Παραλλαγεί, να σας το πω έτσι, των β-δέντρων και όλων των οδομών που ξέρετε. Η λογική εδώ πέρα πάλι είναι, για να το πω έτσι σε όρους που τους καταλαβαίνουμε, σε λογαριθμικό χρόνο να μπορώ να απαντάω ερωτήματα ποιοι κινούνται προς τα εκεί. Δηλαδή όταν έχω χιλιάδες τέτοια αντικείμενα τα οποία κινούνται και απλώς το διάλεξα να σας το δείξω σαν παράδειγμα γιατί δεν έχει να κάνει με άλλα ερωτήματα που λέγαμε πριν ποιοι είναι κοντά μου, ποιοι είναι σε κύκλο απόσταση στο όσο και το καθεξής, αλλά έχει να κάνει με την κατεύθυνση. Εδώ μπαίνουνε διάφορες τεχνικές λοτομέρες που θα σας είπα ιδέως να τις αφήσω μέσα στην ομιλία άμα θέλετε λίγο να τα δείτε παραπάνω για το πώς το κάνουμε, δηλαδή πώς συντηρούμε ένα τέτοιο δέντρο το οποίο κρατάει τις κατευθύνσεις. Το βλέπετε εκεί δεξιά είναι ένα γεραρχικό δέντρο σαν τα β-δέντρα, β-κατεξής, αλλά που στηρίζεται κατά κάποιο τρόπο στις αποστάσεις και τις κατευθύνσεις που έχουν τα αντικείμενα μέσα στον χώρο. Να πάω λιγάκι κλείνοντας για τις προοπτικές που υπάρχουν σε αυτό το χώρο. Τώρα αυτά που λέμε εξελιγμένα χρονοχρονικά ερωτήματα διαρκίας μπορεί να σκεφτεί κάποιος να αρχίσει να σκέφτεται παραλλαγές ερωτημάτων σαν και αυτές που σας είπα. Να βάλει μέσα αυτό που λέμε αβεβαιότητα. Να βάλει κίνηση σε δίκτυα. Κίνηση σε δίκτυα τι σημαίνει. Ναι μεν έχω κίνηση αντικειμένων στο χώρο που μου στέλνουν τα στίγματα αλλά από κάτω υπάρχει ένα οδικό δίκτυο που το ξέρω. Αν ξέρω το οδικό δίκτυο τότε πολλά πράγματα γίνονται πιο εύκολα. Γιατί? Γιατί ξέρω ότι όταν ο άλλος κινήθηκε από εδώ εκεί και είναι πάνω σε αυτό το δρόμο και ο δρόμος συνεχίζει ακόμα πιο κάτω και δεν έχει να το πω έτσι διασταύρωση να φύγει απ' αλλού εκεί πάνω θα κινηθεί. Παράδειγμα δεν ανέγινε να μου στέλνει και το στίγμα του. Άρα γενικά κίνηση πάνω σε πράγματα που τα ξέρω είναι ενδιαφέροντα γιατί κατεβάζουνε λίγο την υποδιπλοκότητα κάποιων προβλημάτων. Μετά σε εσωτερικό χώρο και αυτά έχουν ενδιαφέρον. Δηλαδή δεν μπορώ μια δουλειά που κάνουμε τώρα με το Βενιζέλος με το αεροδρόμιο για να δίνουμε υπηρεσίες τους ταξιδιώτες με βάση τη θέση τους μέσα στο αεροδρόμιο. Εκεί δεν έχει GPS. Εκεί πρέπει να βρεις έναν άλλο τρόπο να ριχνεύεις τη θέση του χρήστη. Και είχαμε κάνει μια δουλειά πριν από μερικά χρόνια, η οποία μάλιστα υπάρχει και στο ίντερνετ μπορείτε να τη δείτε, πώς βρίσκεις τη θέση με βάση τα Wi-Fi. Επειδή τα Wi-Fi είναι πάρα πολύ διαδομένα τώρα μέσα στις πόλεις κυρίως, μπορείς να βρίσκεις τη θέση σου πιάνοντας το σήμα από τις κεραίες των Wi-Fi. Πώς λέγαμε πριν το σήμα από τις κεραίες κινητής τηλεφωνίας, αλλά φανταστείτε τώρα ποιάνει σήμα από τα Wi-Fi. Οπότε και ας πούμε σε εσωτερικό χώρο αυτό που είναι μια συνηθισμένη κίνηση είναι ότι βάζεις κεραίουλες, μπορώ να σου το πω βάζεις ρουτεράκια, αλλά φανταστείτε τα ρουτεράκια μόνο την κεραία. Με ενδιαφέρει μόνο να βγάζει σήμα και τα access points. Οπότε μπορώ να υπολογίζω πού είμαι ξέροντας τις θέσεις των access points. Πλοήγηση και τα ρέβματα τροχιών είναι πολύ σημαντικά. Παράδειγμα επαναχάραξη πορείας βάσει τρέχουσας κυκλοφορίας, δηλαδή όταν και αυτό το ξέρω ότι υπάρχουν σε πολλά μηχανάκια τώρα, σου δίνει την κίνηση και βλέποντας ότι έχει κίνηση μπορεί να σου αλλάξει τον προγραμματισμό που έχει κάνει για την πορεία να ακολουθήσεις. Εξατομίκευση, δηλαδή προτιμήσεις βάση δημοφιλίας όπως λέμε ιστορικού επιλογών. Οπότε να βάλω μέσα και το λεγόμενο personalization και να μην είναι για όλους τους χρήστες ο ίδιος τρόπος αποτιμήσης. Να υπολογίζω δυναμικά πρότυπα στην κίνηση. Αυτό που λέμε κονβόι, γουρές και αυτά είναι ενδιαφέροντα, ξέρετε, προβλήματα. Θέλεις να εντοπίσεις πού παρουσιάζονται, πώς λέμε τα κονβόι στα ελληνικά, κονβόι, κονβόι έτσι. Εγγύησης φάρματος για προσεγγιστικές τεχνικές και εδώ υπάρχει πολλή δουλειά που μπορεί να γίνει. Να βρεθούν προσεγγιστικές τεχνικές ώστε στις τροχές τις οποίες χρησιμοποιήσεις την απάντηση ερωτημάτων να μπορείς να απαντάς με εγγύηση ως προς την προσέγγιση που κάνεις. Και πάρα πολλή δουλειά πάνω σε αποθήκευση, σε ευρετήρια, δομές δεδομένων. Αυτό που λέμε για το παρελθόν, το παρόν και το μέλλον, λέει καταλαβαίνετε ότι όταν αποθηκεύεις πληροφορία μέσα στη βάση και θέλεις μετά να κάνεις ερωτήματα πάνω σε τροχές που είναι το παρελθόν, το παρόν που είναι όπως είπαμε τα εφήμερα που περνάνε από μπροστά μας και το μέλλον τα οποία είναι η πρόβλεψη για την κίνηση, πρέπει να χρησιμοποιήσεις δομές οι οποίες θα είναι πολύ αποδοτικές. Ανομοιογενείς κατατμίσεις του χώρου βάσης στιγμάτων που λέμε το data driven και αυτό έχει πολύ ενδιαφέρον, γιατί ξέρετε είναι το ίδιο πράγμα που έλεγα πριν περίπου με το αμνησιακό ή γενικά με τις προτεραιότητες. Αν έχω πολλά πράγματα που κινούνται σε μια περιοχή του χώρου και πιο λίγα αλλού, πώς μπορώ να φτιάξω δομές οι οποίες θα δίνουν σημασία στο κομμάτι αυτού του χώρου. Γιατί ξέρετε, αν εγώ προσπαθώ να μαζέψω πληροφορία που είναι πάρα πολύ μέσα σε ένα συγκεκριμένο κομμάτι και στο άλλο είναι πιο αραιή, θα μπλοκαριστώ, να το πω έτσι χρονικά, με τα πολλά δεδομένα που είναι μαζεμένα κάπου. Και ενγένει αυτό που θέλουμε στο χώρο των βάσεων δομών, όπως ξέρετε, είναι να μοιράζουμε την πληροφορία. Ας σκέφτετε το β-δέντρο σε σχέση με το ISAM που λέγαμε και το καθεξής, ενώ το ένα πήγαινε και τα βάζε όλα και δημιουργούσε πρόβλημα γιατί μπαίναν όλα σε μια συγκεκριμένη περιοχή, το β-δέντρο κάνει διαρκώς σπασίματα και τα μοιράζει, ώστε να έχουμε λογαλυτική συμπεριφορά. Το ίδιο θέλουμε και εδώ, να έχουμε ανομοιογενείς κατατμίσεις του χώρου με βάση τα στίγματα. Δηλαδή να μην κάνουμε αυτό που σας έλεγα πριν, τον γκάναβο, τον γκριν, που είναι όλα ίσα κουτάκια μεταξύ τους, να αναλάβουμε τα στίγματα. Και βεβαίως υπάρχει και το τελευταίο κομμάτι, επειδή είναι και αυτό της μόδας, κατανεμμένη επεξεργασία με MapReduce κ.ο.κ. δηλαδή να βρούμε τεχνικές που θα κλημακώνουν για πολύ μεγάλους φόρτους, να χρησιμοποιήσουμε από κάτω υποδομές με παράλληλη επεξεργασία ή με γενικά κατανεμμένη επεξεργασία. Τώρα, εδώ υπάρχουν, όπως σας είπα μέσα στην ομιλία, διάφορες παραπομπές για τα συστήματα που έχουν χρησιμοποιηθεί, τεχνικές, κάποια links για τα συστήματα αυτά που έχω αναφέρει προηγουμένως και δουλειές πάνω σε κινούμενα αντικείμενα, οι οποίες καλύπτουν, να το πω έτσι, όλα αυτά που είπα εδώ. Προφανώς, αν υπάρχουν ερωτήσεις, είναι χαρά μου να τις απαντήσω εδώ, αλλά και γενικότερα, αν σας ενδιαφέρει αυτή η περιοχή και θέλετε περισσότερες πληροφορίες, ευχαρίστω όποτε θέλετε να μου στείλετε email να σας απαντήσω. Ευχαριστώ πολύ.