Technologies for main memory data analysis
Authors: Φραγκούλης Μάριος 
Published: September 2021

Τα ψηφιακά δεδομένα έχουν αναδειχθεί σε καθοριστικό πόρο για την επίλυση επιστημονικών και επιχειρηματικών προβλημάτων και για την επίτευξη ανταγωνιστικού πλεονεκτήματος. Με αυτό το σκοπό οι επιστημονικές και επιχειρηματικές κοινότητες διεθνώς προσπαθούν να εξάγουν γνώση από τα δεδομένα που έχουν στη διάθεσή τους. Η έγκαιρη αξιοποίηση των δεδομένων επηρεάζει σημαντικά την επιστημονική πρόοδο, την ποιότητα ζωής, και την οικονομική δραστηριότητα.Στην ψηφιακή εποχή η αποδοτική επεξεργασία και η αποτελεσματική ανάλυση των δεδομένων αποτελούν σημαντικές προκλήσεις. Η επεξεργασία των δεδομένων στην κύρια μνήμη μπορεί να προάγει την αποδοτικότητά της ειδικά αν συνδυαστεί με νέες αρχιτεκτονικές συστημάτων λογισμικού.Ταυτόχρονα όμως απαιτούνται χρήσιμα και χρηστικά εργαλεία ανάλυσης δεδομένων της κύριας μνήμης για να ικανοποιήσουν σημαντικές περιπτώσεις χρήσεις που δεν πληρούνται από τεχνολογίες βάσεων δεδομένων και γλωσσών προγραμματισμού.Η ενιαία διαχείριση της ιεραρχίας της μνήμης μπορεί να βελτιώσει την επεξεργασία των δεδομένων στην κύρια μνήμη. Σε αυτή την αρχιτεκτονική η επικοινωνία ανάμεσα στα διάφορα τμήματα της ιεραρχίας της μνήμης είναι διαφανής ως προς τις εφαρμογές ενώ οι τεχνικές βελτιστοποίησης εφαρμόζονται ολιστικά. Τα δεδομένα ρέουν στην ιεραρχία της μνήμης ούτως ώστε αυτά που πρόκειται να επεξεργαστούν να βρίσκονται όσο το δυνατόν πλησιέστερα στις κεντρικές μονάδες επεξεργασίας ενώ οι γλώσσες προγραμματισμού αντιμετωπίζουν ομοιόμορφα τα προσωρινά και τα μόνιμα δεδομένα κάθε τύπου. Ως αποτέλεσμα, νέα συστήματα ανάλυσης δεδομένων μπορούν να αναπτυχθούν που εκμεταλλεύονται τις ταχύτερες δομές δεδομένων της κύριας μνήμης έναντι αυτών του δίσκου για την επεξεργασία των δεδομένων αφήνοντας την ιεραρχία της μνήμης να φροντίσει για τη διαθεσιμότητα των δεδομένων.Η απουσία κατάλληλων εργαλείων ανάλυσης δυσχεραίνει την εξαγωγή γνώσης σε περιπτώσεις εφαρμογών λογισμικού που δε χρειάζονται την υποστήριξη μιας βάσης δεδομένων. Μερικά παραδείγματα είναι εφαρμογές των οποίων τα δεδομένα έχουν σύνθετη δομή και συχνά αποθηκεύονται σε αρχεία, π.χ. επιστημονικές εφαρμογές σε τομείς όπως η βιολογία, και εφαρμογές που δε διατηρούν μόνιμα δεδομένα, όπως εφαρμογές οπτικοποίησης δεδομένων και διαγνωστικά εργαλεία. Οι βάσεις δεδομένων προσφέρουν ευρέως χρησιμοποιούμενες και αναγνωρισμένες διεπαφές ερωτημάτων, όμως οι εφαρμογές που δεν έχουν ανάγκη τις υπηρεσίες μιας βάσης δεδομένων δεν πρέπει να καταφεύγουν σε αυτή τη λύση αποκλειστικά και μόνο για να ικανοποιήσουν την ανάγκη ανάλυσης των δεδομένων τους.Οι γλώσσες προγραμματισμού από την άλλη πλευρά σπάνια διαθέτουν εκφραστικές και εύκολες στη χρήση διεπαφές ερωτημάτων. Αυτές μπορούν να χρησιμοποιηθούν εσωτερικά σε μια εφαρμογή, αλλά συνήθως δεν προσφέρουν αλληλεπιδραστικά ερωτήματα σε χρόνο εκτέλεσης. Συνεπώς τα σενάρια ανάλυσης δεδομένων που μπορούν να υποστηρίξουν είναι τυποποιημένα και κάθε προσθήκη επιφέρει επαναμεταγλώττιση και επανεκτέλεση της εφαρμογής.Εκτός από την επίλυση προβλημάτων που μοντελοποιούνται από εφαρμογές λογισμικού, τεχνικές ανάλυσης δεδομένων είναι χρήσιμες και για την επίλυση προβλημάτων που παρουσιάζονται στις ίδιες τις εφαρμογές. Αυτό είναι εφικτό με την ανάλυση των μεταδεδομένων που φυλάσσουν οι εφαρμογές στην κύρια μνήμη κατά τη διάρκεια της λειτουργίας τους. Αυτή η πρακτική μπορεί να εφαρμοστεί σε κάθε είδους σύστημα λογισμικού όπως ένα λειτουργικό σύστημα.Η παρούσα διατριβή μελετά τις μεθόδους και τεχνολογίες για την υποστήριξη ερωτημάτων σε δεδομένα της κύριας μνήμης και πως η διαδομένη αρχιτεκτονική συστημάτων λογισμικού σήμερα επηρεάζει τις τεχνολογίες. Βάσει των ευρημάτων από τη βιβλιογραφία αναπτύσσουμε μια μέθοδο και μια τεχνολογία για την εκτέλεση αλληλεπιδραστικών ερωτημάτων σε δεδομένα της κύριας μνήμης.Η προσέγγισή μας βασίζεται στα κριτήρια της χρησιμότητας και της χρηστικότητας. Με τα από επισκόπηση των γλωσσών προγραμματισμού που ταιριάζουν στην ανάλυση δεδομένων επιλέγουμε την ÝØ½, την πρότυπη γλώσσα διαχείρισης δεδομένων εδώ και δεκαετίες.Η μέθοδος που αναπτύσσουμε αναπαριστά προγραμματιστικές δομές δεδομένων σε σχεσιακούς όρους όπως προϋποθέτει η ÝØ½. Η μέθοδος αντικαθιστά τις συσχετίσεις μεταξύ των δομών με σχέσεις μεταξύ των σχεσιακών αναπαραστάσεων. Το αποτέλεσμα είναι ένα ιδεατό σχεσιακό σχήμα του προγραμματιστικού μοντέλου δεδομένων το οποίο καλούμε σχεσιακή αναπαράσταση. H υλοποίηση της μεθόδου έγινε στις γλώσσες προγραμματισμού  και ++ λόγω της ευρείας χρήσης τους για την ανάπτυξη συστημάτων και εφαρμογών. Ένας επιπλέον λόγος που επιλέχθηκε η ++είναι η διαθεσιμότητα μεγάλου αριθμού αλγορίθμων και δομών δεδομένων. H υλοποίηση περιλαμβάνει μια γλώσσα πεδίου για την περιγραφή σχεσιακών αναπράστασεων, έναν μεταγλωττιστή που παράγει τον πηγαίο κώδικα της σχεσιακής διεπαφής προς τις προγραμματιστικές δομές δεδομένων από μια σχεσιακή περιγραφή, και την υλοποίηση της προγραμματιστικής διεπαφής ιδεατών πινάκων της σχεσιακής βάσης δεδομένων ÝØ½ite. Η τελευταία προσφέρει τη μηχανή ερωτημάτων, η οποία δίνει τη δυνατότητα εκτέλεσης ερωτημάτων προς μη σχεσιακά δεδομένα μέσω της διεπαφής ιδεατών πινάκων.Η υλοποίηση επεκτείνεται για την ανάπτυξη δύο διαγνωστικών εργαλείων που εντοπίζουν προβλήματα σε συστήματα λογισμικού μέσω ερωτημάτων προς τα μεταδεδομένα που τα συστήματα φυλάσσουν στην κύρια μνήμη αναφορικά με τη λειτουργία τους. Η  ως γλώσσα υλοποίησης πολλών συστημάτων λογισμικού είναι ιδανική για την εφαρμογή αυτής της ιδέας. Γι’ αυτό το σκοπό ενσωματώνουμε την υλοποίησή μας στον πυρήνα του Linux όπου εστιάζουμε στη συγχρονισμένη πρόσβαση στα δεδομένα και στην ακεραιότητα των αποτελεσμάτων των ερωτημάτων. Επίσης εφαρμόζουμε την προσέγγισή μας για να επεκτείνουμε τις διαγνωστικές ικανότητες του Valgrind, ένα σύστημα το οποίο ελέγχει τον τρόπο που εφαρμογές λογισμικού χρησιμοποιούν τη μνήμη.Η αξιολόγηση της προσέγγισής μας συνολικά περιλαμβάνει την ενσωμάτωση σε τρεις εφαρμογές λογισμικού της ++, στον πυρήνα του Linux, και στο Valgrind, όπου διενεργούμε και μια μελέτη αξιολόγησης χρηστών με φοιτητές. Για τη μελέτη συνδυάζουμε ποιοτική ανάλυση μέσω ερωτηματολογίου και ποσοτική ανάλυση μέσω μετρήσεων κώδικα. Οι μετρήσεις στις ++ εφαρμογές ανάμεσα σε ÝØ½ ερωτήματα και αντίστοιχα ερωτήματα εκφρασμένα στη ++ δείχνουν ότι η ÝØ½ σε συνδυασμό με τη σχεσιακή μας αναπαράσταση παρέχει ανώτερη εκφραστικότητα. Το ίδιο συμβαίνει όταν συγκρίνουμε την προσέγγισή μας με την ίδια την ÝØ½ έχοντας εισάγει τα δεδομένα στη σχεσιακή βάση δεδομένων MyÝØ½. Η αποδοτικότητα της προσέγγισής μας είναι χειρότερη αυτής των ερωτημάτων ++ και καλύτερη αυτής των ερωτημάτων ÝØ½ εκτελεσμένων στη MyÝØ½. Τα ερωτήματα με την προσέγγισή μας χρειάζονται το διπλάσιο χρόνο για να εκτελεστούν σε σύγκριση με τη ++ ανεξάρτητα από το μεγέθος του προβλήματος. Τα ερωτήματα ÝØ½ στη MyÝØ½ απαιτούν διπλάσιο, τριπλάσιο, ή και παραπάνω χρόνο για την εκτέλεσή τους σε σχέση με τη δική μας προσέγγιση.Στο πλαίσιο του πυρήνα του Linux όπου η σχεσιακή μας διεπαφή λειτουργεί ως διαγνωστικό εργαλείο βρίσκουμε αληθινά προβλήματα εκτελώντας ÝØ½ ερωτήματα προς τις δομές δεδομένων του συστήματος. Η πρόσβαση σε αρχεία χωρίς τα κατάλληλα δικαιώματα, η μη εξουσιοδοτημένη εκτέλεση διεργασιών, ο εντοπισμός δυαδικών αρχείων που χρησιμεύουν στη φόρτωση διεργασιών αλλά δε χρησιμοποιούνται από καμία, και η εκτέλεση κλήσεων συστήματος από επεξεργαστές που ανήκουν σε ένα ιδεατό μηχάνημα είναι τα προβλήματα ασφάλειας που εντοπίζουμε. Επίσης δείχνουμε ερωτήματα που συνδυάζουν μετρικές από διαφορετικά υποσυστήματα, όπως σελίδες στη μνήμη, αρχεία στο δίσκο, δραστηριότητα επεξεργαστή, και δικτυακές μεταφορές δεδομένων, τα οποία μπορούν να βοηθήσουν στον εντοπισμό προβλημάτων απόδοσης. Η μέτρηση του χρόνου επεξεργασίας των ερωτημάτων και το βάρος που προσθέτουν στο σύστημα ενθαρρύνουν τη χρήση του εργαλείου μας.Το διαγνωστικό εργαλείο που αναπτύξαμε πάνω στο Valgrind εντοπίζει προβλήματα, επιπρόσθετα αυτών που βρίσκει το Valgrind, μέσω της χρήσης ÝØ½ ερωτημάτων στα συλλεγμένα μεταδεδομένα της εφαρμογής που ελέγχεται. Το bzip2 για παράδειγμα σπαταλά 900» μνήμης όπου όλα τα κελιά είναι συνεχόμενα στην ίδια περιοχή. Αυτό το μέγεθος ισοδυναμεί με το 12% της συνολικής μνήμης που χρειάζεται η εφαρμογή για να λειτουργήσει. Επίσης από ερωτήματα πάνω στο γράφο δυναμικών κλήσεων συναρτήσεων που σχηματίζεται κατά την εκτέλεση μιας εφαρμογής διαπιστώνουμε την ύπαρξη κρίσιμου από πλευράς απόδοσης κώδικα που βρίσκεται στη βιβλιοθήκη glibc και χρησιμοποιείται ευρέως από τα εργαλεία Unix sort και uniq. Η εν λόγω βελτιστοποίηση υλοποιήθηκε από την ομάδα ανάπτυξης της βιβλιοθήκης σε επόμενη έκδοση χωρίς δική μας παρέμβαση. Τέλος, στο πείραμα με τους φοιτητές η μια ομάδα εκφράζει εργασίες ανάλυσης με ερωτήματαÝØ½ και η άλλη με κώδικα Python. Τα αποτελέσματα δείχνουν ότι ο χρόνος που απαιτείται για την έκφραση μιας εργασίας ανάλυσης είναι μικρότερος όταν χρησιμοποιείται ÝØ½. Αντίθετα δε σημειώνονται στατιστικά σημαντικές διαφορές στη χρησιμότητα, απόδοση, και εκφραστικότητα ανάμεσα στις δύο προσεγγίσεις παρόλο που η προσέγγισή μας έχει υψηλότερη αξιολόγηση. Στη διάσταση της χρηστικότητας οι αξιολογήσεις δεν κατέδειξαν ξεκάθαρο νικητή, όμως και οι δύο προσεγγίσεις πέτυχαν πολύ καλή αξιολόγηση. Η αξιολόγηση της απόδοσης του κώδικα που έγραψαν οι φοιτητές για τα ερωτήματα δείχνει ότι η ομάδα φοιτητών που χρησιμοποίησε ÝØ½ είχε περισσότερες σωστές απαντήσεις σε μικρότερο χρόνο. Θεωρούμε αυτή τη μετρική ενδεικτική της χρησιμότητας της προσέγγισής μας έναντι της Python, η οποία επίσης χρησιμοποιείται ευρέως σε εργασίες ανάλυσης δεδομένων.Επίσης θεωρούμε το χρόνο που απαιτείται για τη έκφραση μιας εργασίας ανάλυσης παράμετρο χρηστικότητας.Οι προκλήσεις στην επεξεργασία των δεδομένων συνεχίζουν να αναδύονται με αμείωτο ρυθμό.Σε αυτό το περιβάλλον οι εφαρμογές λογισμικού απαιτούν λύσεις για την ανάλυση των δεδομένων των χρηστών αλλά και για την επίλυση προβλημάτων που αφορούν τις ίδιες. Η επεξεργασία των δεδομένων στην κύρια μνήμη μπορεί να φέρει σημαντικά οφέλη σε συνδυασμό με άλλες καινοτομίες. Σε αυτή την κατεύθυνση νέες αρχιτεκτονικές που οφελούν την αποδοτική επεξεργασία των δεδομένων μπορούν να παίξουν σημαντικό ρόλο. Ελπίζουμε ότι αυτή η διατριβή θα βοηθήσει στην αποδοτικότερη επεξεργασία και αποτελεσματικότερη ανάλυση των δεδομένων που προσδοκούν οι χρήστες.