dc.contributor.author | Κοκκίνου, Γεωργία | el |
dc.contributor.author | Kokkinou, Georgia | en |
dc.date.accessioned | 2018-06-19T10:58:46Z | |
dc.date.available | 2018-06-19T10:58:46Z | |
dc.date.issued | 2018-06-19 | |
dc.identifier.uri | https://dspace.lib.ntua.gr/xmlui/handle/123456789/47089 | |
dc.identifier.uri | http://dx.doi.org/10.26240/heal.ntua.15541 | |
dc.rights | Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 3.0 Ελλάδα | * |
dc.rights.uri | http://creativecommons.org/licenses/by-nc-sa/3.0/gr/ | * |
dc.subject | Σύστημα αποθήκευσης κλειδιού-τιμής | el |
dc.subject | Key-value store | en |
dc.subject | Κατανεμημένη αποθήκευση | el |
dc.subject | Μηχανισμός αποθήκευσης | el |
dc.subject | Δομές δεδομένων | el |
dc.subject | Β+ δέντρο | el |
dc.subject | LSM-δέντρο | en |
dc.subject | Etcd | en |
dc.subject | BoltDB | en |
dc.subject | RocksDB | en |
dc.subject | Distributed storage | en |
dc.subject | Storage engine | en |
dc.subject | Data structures | en |
dc.subject | B+ tree | en |
dc.subject | LSM-tree | en |
dc.title | Βελτιστοποίηση επίδοσης εγγραφών στο κατανεμημένο σύστημα αποθήκευσης κλειδιού-τιμής etcd μέσω ενσωμάτωσης του αποθηκευτικού μηχανισμού RocksDB | el |
dc.title | Optimizing write performance in the etcd distributed key-value store via integration of the RocksDB storage engine | en |
heal.type | bachelorThesis | |
heal.classification | Computer science | en |
heal.classification | Επιστήμη υπολογιστών/πληροφορική | el |
heal.classificationURI | http://id.loc.gov/authorities/subjects/sh89003285 | |
heal.classificationURI | http://data.seab.gr/concepts/77de68daecd823babbb58edb1c8e14d7106e83bb | |
heal.language | el | |
heal.language | en | |
heal.access | free | |
heal.recordProvider | ntua | el |
heal.publicationDate | 2018-03-08 | |
heal.abstract | Ο etcd είναι ένα αξιόπιστο κατανεμημένο σύστημα αποθήκευσης κλειδιού-τιμής ανοιχτού κώδικα. Σχεδιάστηκε πρωτίστως για αποθήκευση μεταδεδομένων και χρησιμοποιείται συνήθως για εντοπισμό υπηρεσιών, κοινόχρηστη ρύθμιση παραμέτρων και κατανεμημένα κλειδώματα. Ωστόσο, η υψηλή του διαθεσιμότητα, η απλότητα και οι αξιοσημείωτες επιδόσεις, σε συνδυασμό με το ότι υποστηρίζεται από μια μεγάλη και δραστήρια κοινότητα προγραμματιστών, τον καθιστούν ελκυστική επιλογή και για άλλα είδη εφαρμογών. Ο τρέχων αποθηκευτικός μηχανισμός του etcd είναι η BoltDB, μια ενσωματωμένη βάση δεδομένων που στηρίζεται στα Β+ δέντρα και είναι βελτιστοποιημένη για αναγνώσεις. Στην εποχή των κατανεμημένων συστημάτων, υπάρχει ένα ευρύ φάσμα εφαρμογών με έμφαση στις εγγραφές που θα επωφελούνταν από έναν αξιόπιστο τρόπο αποθήκευσης δεδομένων σε μια συστοιχία υπολογιστών. Παραδείγματα τέτοιων εφαρμογών αποτελούν οι διαδικτυακές υπηρεσίες αντιγράφων ασφαλείας, η συλλογή δεδομένων από αισθητήρες, οι εξυπηρετητές ηλεκτρονικού ταχυδρομείου και οι ιστότοποι κοινωνικής δικτύωσης. Έτσι, σε αυτήν την εργασία σχεδιάζουμε και υλοποιούμε την αντικατάσταση της BoltDB με την RocksDB, μια υψηλών επιδόσεων βάση δεδομένων που εσωτερικά χρησιμοποιεί ένα LSM-δέντρο, με σκοπό να βελτιστοποιήσουμε τον etcd για περιπτώσεις χρήσης συχνών εγγραφών. Αυτό το καταφέρνουμε αναπτύσσοντας ένα πακέτο κώδικα σε γλώσσα Go που μεταφράζει συναρτήσεις και έννοιες από την προγραμματιστική διεπαφή (API) της BoltDB στις αντίστοιχες της RocksDB, τροποποιώντας τον κώδικα του ίδιου του etcd μόνο στα σημεία που είναι απαραίτητο. Κατά τη διάρκεια της διαδικασίας αυτής, υλοποιούμε κάποιες δυνατότητες που δεν υπήρχαν ήδη στα εμπλεκόμενα προγράμματα, κάνοντας και τις αντίστοιχες συνεισφορές λογισμικού. Στη συνέχεια, επαληθεύουμε την ορθότητα και την ευρωστία της υλοποίησής μας, με χρήση της πλατφόρμας λειτουργικού ελέγχου του etcd μεταξύ άλλων εργαλείων. Επιπλέον, δημιουργούμε μια συστοιχία εικονικών μηχανών σε περιβάλλον νέφους, ώστε να αξιολογήσουμε μέσω του ενσωματωμένου εργαλείου benchmark την επίδοση του etcd στην περίπτωση χρήσης της RocksDB ως αποθηκευτικό μηχανισμό και να την συγκρίνουμε με την επίδοση στην περίπτωση χρήσης της BoltDB. Έπειτα, εφαρμόζουμε σταδιακά κάποιες βελτιστοποιήσεις, εξετάζουμε την επίδραση ενός συνόλου παραμέτρων στα αποτελέσματα, και σχολιάζουμε τα πλεονεκτήματα και μειονεκτήματα των δύο προσεγγίσεων. Τέλος, σκιαγραφούμε ιδέες για βελτίωση και περαιτέρω έρευνα πάνω στο θέμα. | el |
heal.abstract | Etcd is an open-source, distributed key-value store with a focus on reliability. It was primarily designed to store metadata and is often used for service discovery, shared configuration and distributed locking. However, its numerous good qualities, such as its high-availability, simplicity and notable performance, in conjunction with the fact that it is an actively maintained project backed by a large developer community, render it an attractive option for other usecases as well. Etcd currently uses BoltDB, a read-optimized persistence solution based on B+ trees, as its storage engine. In the era of distributed computing, there is a wide range of write-intensive applications that would benefit from having a reliable way to store data across a cluster of machines. Examples of such applications include cloud backup services, sensor data collection, mail servers and social media websites. To that end, in this thesis we design and implement the replacement of BoltDB with RocksDB, a high-performance embedded database that internally uses a log-structured merge-tree (LSM-tree), in order to optimize etcd for write-heavy workloads. We achieve this by developing a Go wrapper that maps BoltDB API functions and concepts to their RocksDB counterparts, modifying core etcd code only where necessary. During this process, we make software contributions to some of the projects involved, implementing features that we needed but were missing. Furthermore, we verify the functionality and robustness of our implementation, using the functional test suite of etcd, among other tools. In addition, we set up a cluster of virtual machines on a cloud platform, in order to evaluate the performance of etcd with RocksDB as its storage engine using the built-in benchmark tool, and compare it to that of BoltDB-backed etcd. Then, we gradually apply a number of optimizations upon our initial implementation, examine the impact of a set of parameters on the results, and comment on the trade-offs of both approaches. Finally, we suggest some improvements and outline directions for further investigation on this topic. | en |
heal.advisorName | Κοζύρης, Νεκτάριος | el |
heal.committeeMemberName | Κοζύρης, Νεκτάριος | el |
heal.committeeMemberName | Παπασπύρου, Νικόλαος | el |
heal.committeeMemberName | Γκούμας, Γεώργιος | el |
heal.academicPublisher | Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών. Εργαστήριο Υπολογιστικών Συστημάτων | el |
heal.academicPublisherID | ntua | |
heal.numberOfPages | 248 σ. | |
heal.fullTextAvailability | true |
Οι παρακάτω άδειες σχετίζονται με αυτό το τεκμήριο: