Σκοπός της παρούσας διπλωματικής εργασίας είναι η εφαρμογή διαφόρων τεχνικών βελτιστοποίησης σε μία βάση PostgreSQL πολύ μεγάλου όγκου δεδομένων. Η βάση αυτή ανήκει σε γνωστή εταιρεία που αναπτύσσει λογισμικό με σκοπό την παρακολούθηση φωτοβολταϊκών πάρκων. Η ροή των εισερχόμενων δεδομένων προς τη βάση είναι συνεχόμενη, αφού η εξόρυξη τους γίνεται με χρήση χρονοσειρών. Λόγω του μεγέθους της βάσης ο χρόνος απόκρισης είναι μεγάλος, με αποτέλεσμα οι χρήστες συχνά να δυσκολεύονται να αντλήσουν την πληροφορία που τους ενδιαφέρει. Αρχικός μας στόχος λοιπόν είναι να βρούμε τρόπους που θα κάνουν τα ερωτήματα πιο γρήγορα και τα δεδομένα πιο άμεσα διαχειρίσιμα. Στο πρώτο μέρος της εργασίας, θα περιγράψουμε την αρχική δομή της βάσης έτσι όπως μας δόθηκε και θα εξηγήσουμε τις αδυναμίες που εντοπίσαμε. Αφού περιγράψουμε την υπάρχουσα εφαρμογή, θα παραθέσουμε τις τεχνικές βελτιστοποίησης που εφαρμόσαμε και τα αποτελέσματα που πήραμε από κάθε πείραμα που κάναμε. Τα πειράματα που υλοποιήσαμε επιβεβαιώνουν την κακή κλιμάκωση των σχεσιακών βάσεων και για το λόγο αυτό στο δεύτερο μέρος της διπλωματικής θα ασχοληθούμε με το στήσιμο και την μελέτη μίας μη σχεσιακής ΝοSQL βάσης. Αφού κάνουμε αναλυτική περιγραφή των πλεονεκτημάτων και των μειονεκτημάτων μίας τέτοιας βάσης, θα παραθέσουμε τα αποτελέσματα της απόδοσής της πάνω στο σύστημα που έχουμε στη διάθεσή μας. Τέλος, με βάση τα αποτελέσματα από όλα τα πειράματα θα προτείνουμε αλλαγές που θα βελτιώσουν την απόδοση του συστήματος.
The purpose of this diploma thesis is the application of optimization techniques on big data. The object of this study is a PostgreSQL database of approximately 1 terabyte, which came at our disposal from a well-known company. This company is building software for the monitoring of photovoltaic plants. Therefore, the data we are handling are measurements that describe each plant’s performance. These data are generated by a timeseries mechanism that works continuously, so we always have new inserts in the database. At the same time, the users are applying queries on the database regarding present or past measurements. Our goal is to make this whole process more efficient by optimizing the mostly used queries and by changing the current structure of the database. In the first part of our thesis, we are going to test several optimization techniques on the relational model we were given and observe their results on the queries’ performance. In the second part, we are going to examine the non-relational database field by studying the features of NoSQL database systems. In particular, we are transferring the database we had from PostgreSQL to Cassandra and compare basic operations such as backup and restore of a database dump or execute simple queries such as selecting and inserting a great amount of rows. Finally, considering the results from both parts we are going to form a proposal of changes on the database that will improve its performance.