Οι αρχιτεκτονικές πολλαπλών ενοίκων χρησιμοποιούνται συχνά στις υπηρεσίες Software as a Service(SaaS), τόσο στο επίπεδο της εφαρμογής όσο και στις βάσεις δεδομένων που τις υποστηρίζουν. Στις αρχιτεκτονικές αυτές, πολλαπλοί πελάτες-ένοικοι μοιράζονται τους ίδιους υπολογιστικούς πόρους με αποτέλεσμα τη μείωση του κόστους των υπηρεσιών και την αυξημένη αξιοποίηση του διαθέσιμου υλικού(hardware). Παράλληλα, όμως, συνήθως αυξάνεται το αρχικό κόστος των εφαρμογών αυτών καθώς απαιτείται η ανάπτυξη πολύπλοκου κώδικα για την υποστήριξη πολλαπλών ενοίκων από το ίδιο στιγμιότυπο της εφαρμογής και από την ίδια βάση δεδομένων.
Στην παρούσα διπλωματική εργασία εστιάζουμε στις βάσεις δεδομένων πολλαπλών ενοίκων και αρχικά κάνουμε μια επισκόπηση διαφόρων τεχνικών που έχουν προταθεί για την υλοποίηση τους. Στη συνέχεια, συνδυάζοντας και τροποποιώντας κάποιες από τις τεχνικές αυτές, προτείνουμε μια τεχνική που προσπαθεί να αντιμετωπίσει το πρόβλημα της αντιστοίχισης των δεδομένων πολλαπλών ενοίκων σε κοινούς πίνακες μιας σχεσιακής βάσης δεδομένων. Ιδιαίτερη έμφαση δίνεται στην υποστήριξη της δυνατότητας για επεκτασιμότητα και προσαρμογή του σχήματος της βάσης στις ιδιαίτερες ανάγκες κάθε ενοίκου. Τέλος, χρησιμοποιώντας την τεχνική αυτή, αναπτύσσουμε ένα σύστημα που επιτρέπει την υποστήριξη βάσεων δεδομένων πολλαπλών ενοίκων από ένα σχεσιακό Σύστημα Διαχείρισης Βάσεων Δεδομένων.
Multi-tenancy is often employed in Software as a Service applications, in both the application layer and the database layer. With multi-tenancy, multiple customers(tenants) share the same resources lowering operational costs and increasing the utilization of the available hardware. Nonetheless, the initial cost of deploying the application is often higher as complicated software structures need to be developed to support multiple tenants in the same application and database instance.
In this thesis, we focus on multi-tenant databases and start by examining several of the techniques used in implementing them. Then, combining and modifying some of those techniques, we present a schema-sharing technique that attempts to solve the problem of mapping the data of multiple tenants to the shared tables of a relational database. Particular emphasis is placed on the extensibility and customizability of the database schema to meet the demands of each tenant. Finally, using this technique, we develop a middleware layer that can be used to enable multi-tenancy in a standard relational database management system.