Universität Leipzig Fakultät für Mathematik und Informatik Institut für Informatik Professur Datenbanksysteme Seminararbeit Multi-Tenant-Datenbanken für SaaS (Schema Management) Betreuerin: Sabine Maßmann Bearbeiter: Hendrik Kerkhoff Nürnberger Str. 20 04103 Leipzig Matr.-Nr: 1501624 MSc. 1. Semester Eingereicht am: 24.01.2010 Inhaltsverzeichnis I Inhaltsverzeichnis Abkürzungsverzeichnis II 1 Einleitung 1 1.1 Ziel der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Grundlagen 3 2.1 Software as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Anforderungen an Multi-Tenancy Datenbanken . . . . . . . . . . . . . 3 2.3 Einsatzszenarien 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Multi-Tenancy mit aktuellen Datenbanken 6 3.1 Shared Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2 Shared Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3 Shared Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3.1 Private Table Layout . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3.2 Basic Table Layout . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3.3 Extension Table Layout . . . . . . . . . . . . . . . . . . . . . . 10 3.3.4 Universal Table Layout . . . . . . . . . . . . . . . . . . . . . . . 10 3.3.5 Pivot Table Layout . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.6 Chunk Table Layout . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.7 Chunk Folding . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Beispiel: force.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4 4 Ausblick 15 Abbildungsverzeichnis III Verzeichnis der Listings IV Literaturverzeichnis V Inhaltsverzeichnis Abkürzungsverzeichnis CRM . . . . . . . . . . Customer Relationship Management DBS . . . . . . . . . . . Datenbanksystem ERP . . . . . . . . . . . Enterprise Resource Planning ID . . . . . . . . . . . . . Identifikationsnummer QTL . . . . . . . . . . . Query Transformation Layer SaaS . . . . . . . . . . . Software as a Service SLA . . . . . . . . . . . Service Level Agreements TCO . . . . . . . . . . . Total Cost of Ownerchip II 1 Einleitung 1 1 Einleitung In seinem Blog1 stellt Robert Warfield die These auf, dass Unternehmen durch den Einsatz von Software as a Service im Vergleich zu klassischer Software bis zu 16% ihrer Kosten einsparen können [War07]. Dies wird durch Mehrmandantenfähigkeit (engl. Multi-Tenancy) erreicht: Mehrere Kunden nutzen gemeinsam ein Softwaresystem, welches von einem Serviceanbieter bereitgestellt wird. Hierdurch sinken die Kosten, die für das Betreiben notwendig sind. 1.1 Ziel der Arbeit Diese Arbeit soll Möglichkeiten zeigen und erläutern, wie Multi-Tenancy Datenbanken implementiert werden können. Da für den performanten und somit kostensparenden Betrieb einer Mehrmandanten-Datenbank eine möglichst hohe Konsolidierung (“Vereinheitlichung”) benötigt wird, werden verschiedene Möglichkeiten gezeigt, diese zu erreichen, ohne dabei auf flexibele Datenbankschemas für die Mandanten verzichten zu müssen. 1.2 Aufbau der Arbeit In Kapitel 2 werden die Grundlagen zu Software as a Service erklärt und die Anforderungen an Multi-Tenancy-Datenbanken erläutert sowie mögliche Einsatzszenarien skizziert. Kapitel 3 beleuchtet die drei Grundmöglichkeiten für den Aufbau einer Mehrmandantendatenbank. Hierbei liegt der Schwerpunkt auf den verschiedenen Ansätzen zum Schema-Mapping in der Shared Table-Methode. Zudem wird anhand der Plattform Force.com die Umsetzung und Optimierung in der Praxis gezeigt. 1 http://smoothspan.wordpress.com/ 1 Einleitung 2 Im Ausblick (Kapitel 4) werden Methoden und Techniken vorgestellt, mit denen Forscher der Technischen Universität München sowie der SAP AG die Umsetzung einer reinen Multi-Tenancy Datenbank planen. 2 Grundlagen 3 2 Grundlagen In diesem Kapitel wird zunächst das Konzept von Software as a Service erläutert. Im Anschluss werden Anforderungen an eine Multi-Tenancy Datenbank für Software as a Service beschrieben sowie mögliche Einsatzszenarien beschrieben. 2.1 Software as a Service Software as a Service (SaaS) ist ein Geschäftsmodell, in dem Software nicht als Produkt an Kunden verkauft wird, sondern als Dienstleistung für viele Kunden bereitgestellt wird [BHS08, S. 88]. Ziel hierbei ist es, die Total Cost of Ownerchip (TCO) im Vergleich zu den Kosten von “on-premises” Lösungen, also vom Kunden selbst betriebene Software, zu senken [AJKS09, S. 881]. Um dieses zu erreichen wird die Software vielen Kunden zur Verfügung gestellt, was dazu führt, dass Kosten wie Thirdparty-Softwarelizenzen, Hardwarekosten und Kosten für die Administration auf die Mandanten verteilt werden und somit im Durchschnitt sinken. Bei der Nutzung von SaaS sind häufig Service Level Agreements (SLA) Bestandteil der Verträge. In diesen werden nicht-funktionale Anforderungen wie die Kosten für die Nutung der Services sowie Anforderungen an Verfügbarkeit und Performanz festgelegt [Pap08]. 2.2 Anforderungen an Multi-Tenancy Datenbanken Bob Warfield, Mitgründer von SmoothSpan und Author von mehreren Artikeln zum Thema SaaS, leitet in einem seiner Blog-Artikel eine Definition für Multi-Tenancy her: “Multitenancy is the ability to run multiple customers on a single software instance installed on multiple servers to increase resource utilization 2 Grundlagen 4 by allowing load balancing among tenants, and to reduce operational complexity and cost in managing the software to deliver the service. Tenants on a multitenant system can operate as though they have an instance of the software entirely to themselves which is completely secure and insulated from any impact by other tenants.” [War07] Diese Definition beschreibt Multi-Tenancy Systeme aus Sicht von Serviceanbieter sowie der Mandanten. Die Mandaten werden in [AJPK09] weiter unterschieden zwischen Kunde und Anwendungsentwickler. Für den Kunden sind “hohe Verfügbarkeit bei hoher Datensicherheit” zentrale Aspekte eines Multi-Tenancy Systems. Die Anforderungen der Anwendungsentwickler sind “einfache, aber mächtige Funktionsmodelle”. Eine gemeinsame Instanz wächst aus der Anforderung heraus, dass die operationale Komplexität minimiert werden soll. Da der Ressourcenbedarf einzelner Instanzen auf Shared Machine Systemen zu hoch ist, wird gefordert, dass es eine gemeinsame Datenbankinstanz für mehrere Mandanten gibt. Isolation der Mandanten ist notwendig für die geforderte Sicherheit und dient der Herstellung von Transparenz für die Mandanten. Für die Kunden soll das MultiTenancy System aussehen, als hätten sie eine eigene Datenbankinstanz. Schemaflexibilität muss gewährleistet werden. Insbesondere ist es notwendig, Schemaänderungen während der Laufzeit durchzuführen, da aufgrund der Transparenzforderung für andere Mandanten das Gesamtsystem online bleiben muss. Jedoch dürfen Änderungen die Performanz des Systems nicht beeinflussen. Um dieses zu gewährleisten müssen gegebenenfalls temporäre Tabellen mit dem neuen Schema erstellt werden und zu einem Zeitpunkt mit niedriger Last permanent einbunden werden. Hohe Verfügbarkeit ist für das Anwendungsgebiet von SaaS notwendige Bedingung, da im Rahmen von Service Level Agreements meist Vereinbarungen über die Verfügbarkeit getroffen werden. 2.3 Einsatzszenarien Durch die steigende Komplexität von Anwendungen sinkt die mögliche Konsolidierung der Mandaten und somit die Anzahl der Mandanten, die durch ein Multi-Tenancy System gehandhabt werden können [AGJ+ 08]. Einfache Software, wie E-Mail Plattfor- 2 Grundlagen 5 men, bieten den Kunden keine oder nur sehr beschränkte Anpassungungen der Software. Somit werden erweiterbare Datenstrukturen kaum benötigt und es reichen einfache und einheitliche Schemas für die Nutzer der Software. Enterprise Resource Planning (ERP) Systeme hingegen haben eine hohe Komplexität. Es werden viele Erweiterungen und Anpassungen benötigt, um die Geschäftsprozesse der Mandanten umzusetzen. Die benötigten Ressourcen, auch hinsichtlich der Laufzeit von einzelnen Operationen, sind um ein Vielfaches höher, als das einer E-MailPlattform. Dieser Zusammenhang ist in Abbildung 2.1 schematisch dargestellt. Durch Rechner mit mehr Ressourcen ist es möglich, die Anzahl der Mandanten zu vervielfachen. Daher ist der Einsatz von Clustern, welche relativ niedrige Hardwarekosten haben, für den Einsatz für Multi-Tenancy Datenbanken sehr gut geeignet. Größe des Rechners Mainframe BladeServer 10.000 1.000 10.000 1.000 100 10.000 1.000 100 10 E-Mail Kollaborationsplattformen CRM ERP Komplexität der Anwendung Abbildung 2.1: Mandanten pro Datenbank (in Anlehnung an [AGJ+ 08, S. 1196]) Hauptanwendung finden Multi-Tenancy Datenbanken bei Systemen mit mittlerer Komplexität [AGJ+ 08, S. 1196]. Beispiele hierfür sind Kollaborationsplattformen wie Google Docs2 , Conject3 und Microsofts Office Live4 . Die SaaS-Plattform salesforce.com5 (siehe hierzu auch Abschnitt 3.4) bietet Customer Relationship Management (CRM) Software unter Verwendung von Multi-Tenancy Datenbanken an. 2 http://docs.google.com/ 3 http://www.conject.com/ 4 http://www.officelive.com/ 5 http://www.salesforce.com/ 3 Multi-Tenancy mit aktuellen Datenbanken 6 3 Multi-Tenancy mit aktuellen Datenbanken In diesem Kapitel werden drei Möglichkeiten vorgestellt, Mehrmandanten-Fähigkeit in aktuelle Datenbanksysteme zu integrieren. Bei dem Shared Machine Ansatz erhält jeder Mandant eine eigene Datenbankinstanz auf einem gemeinsamen Computer. Teilen sich alle Mandaten eine Datenbankinstanz, wobei jeder Mandant sein eigenes Schema erhält, spricht man von Shared Process. Der Schwerpunkt dieses Kapitels liegt auf dem Shared Table Ansatz. In Abschnitt 3.3 werden mehrere Techniken vorgestellt, um das Teilen einer gemeinsamen Tabellenstruktur für alle Mandanten zu ermöglichen. Mandant Mandant Mandant Mandant Mandant Mandant Schema Schema Schema Schema Schema Schema DB DB DB Mandant Mandant Mandant Schema DB DB Computer / Cluster / Grid Computer / Cluster / Grid Computer / Cluster / Grid a) Shared Machine b) Shared Process c) Shared Table Ressourcenteilung Isolation Abbildung 3.1: Shared Machine, Shared Process und Shared Table (in Anlehnung an [JA07a, S. 1198]) 3 Multi-Tenancy mit aktuellen Datenbanken 7 3.1 Shared Machine Jeder Mandant erhält bei Shared Machine seine eigene Datenbankinstanz auf einer gemeinsamen Maschine. Dieser Ansatz ist leicht umzusetzen, da hier keine Modifikationen an dem Datenbanksystem vorgenommen werden müssen. Alle Mandanten sind bis auf den gleichen Computer voneinander isoliert (vgl. Abbildung 3.1). Jedoch wirkt sich diese Isolation negativ auf die Ressourcennutzung aus: Jede Datenbankinstanz benötigt Speicher für die Grundfunktionen. Aufgrund dieses hohen Speicherbedarfs skaliert der Shared Machine Ansatz nur bis circa zehn Instanzen pro Rechner [JA07b]. Zudem kann der Administrationsaufwand nicht gesenkt werden. Daher eignet sich dieser Ansatz nur bedingt für die Verwendung als Multi-Tenancy Datenbank für SaaS. 3.2 Shared Process Abbildung 3.1 b) zeigt schematisch den Shared Process Ansatz: Jeder Mandant erhält hier ein eigenes Schema, welches auf einer gemeinsamen Datenbankinstanz läuft. Durch die Möglichkeit der physisch getrennten Speicherung der Daten der einzelnen Mandanten ist die Migration von Mandanten auf andere Server sowie die Implementierung von Load-Balancing einfach zu realisieren [JA07b]. Die physische und logische Trennung der Daten muss hierbei auf Anwendungsebene vorgenommen werden. Durch die gemeinsame Nutzung einer Instanz wird lediglich für die verschiedenen Schemas und Daten der Mandanten, jedoch nicht für mehrere Instanzen des Datenbanksystems Speicher benötigt. Wenn die Anzahl der Tabellen pro Mandant auf wenige beschränkt ist, skaliert dieser Ansatz für bis zu 1000 aktiver Mandanten pro Server [JA07b]. Daher ist er gut für kleine und mittlere SaaS-Anwendungen geeignet. 3.3 Shared Table Durch die Verwendung des Shared Table Ansatzes können die meisten Einsparungen hinsichtlich Hardwarekosten gemacht werden. Jedoch müssen zusätzliche Erweiterungen am Datenbanksystem implementiert werden: Da alle Mandanten die gleichen Tabellen nutzen muss eine Zwischenschicht, die Query-Transformation-Schicht (QTL) (siehe Abbildung 3.2) entwickelt werden [AGJ+ 08]. Diese sorgt dafür, dass für die Mandanten das physische Schema transparent ist. Jeder Mandant hat ein eigenes, lo- 3 Multi-Tenancy mit aktuellen Datenbanken 8 gisches Schema. Die QTL wandelt die Anfragen um und mappt diese auf das physische Datenbankschema. Hierbei muss zudem sichergestellt werden, dass nur die Daten des Mandanten angefragt werden. Die Ergebnisse werden dann wieder passend zu dem logischen Schema des Mandanten umgewandelt. Mandant 1 Mandant 2 Mandant 3 Software Software Software logisches Schema logisches Schema logisches Schema Query Transformation Schicht physisches Schema Datenbank Betriebsystem Hardware Abbildung 3.2: Query Transformation Layer (selbsterstellte Grafik) Die Datenmigration für einzelne Mandanten ist nicht problemlos möglich, kann jedoch auf Kosten zusätzlicher Abfragen durchgeführt werden. Es gibt verschiedene Tabellen-Layouts, die den Shared Table Ansatz ermöglichen. Alle diese Ansätze sind hierbei Kompromisse zwischen Performanz, Funktionaliät und Flexibilität. In den folgenden Abschnitten werden diese Layouts dargestellt und erläutert. Die Beispiele hierfür entstammen dem Paper [AGJ+ 08]. Es wurde ein Szenario mit drei Mandanten gewählt. Der Mandant mit der ID 17 stammt aus dem Gesundheitsbereich, Mandant 42 hat eine Erweiterung im Bereich der Automobilindustrie. Mandant 35 hat keine Erweiterungen. 3 Multi-Tenancy mit aktuellen Datenbanken 9 3.3.1 Private Table Layout Beim Private Table Layout erhält jeder Mandant eigene Tabellen. Diese werden lediglich umbenannt, um zu gewährleisten das ein bestimmter Tabellenname nicht nur von einem Mandanten genutzt werden kann. Hierzu werden in den Meta-Daten des Datenbanksystems bzw. des Query-Transformation-Layers Mapping Daten gehalten. Eine Konsolidierung der Mandanten findet hier nicht statt. Abbildung 3.3 zeigt ein Schema mit privaten Tabellen. Die Tabellen sind hier nach “Account” sowie der Mandanten-ID benannt. Wenn diese Tabellen für alle Mandanten “Account” heißen, so muss bei der Abfrage ein Mapping von AccountXX <-> Account durchgeführt werden, wobei XX die Mandanten-ID repräsentiert. Abbildung 3.3: Private Table Layout (aus [AGJ+ 08, S. 1198]) 3.3.2 Basic Table Layout Da sich die Mandanten alle Tabellen beim Basic Table Layout teilen, ist es nicht möglich, mandantenspezifische Erweiterungen zu handhaben. Die Datensätze der jeweiligen Mandanten werden durch eine hinzugefügte Tenant-Spalte unterschieden (siehe Abbildung 3.4). Das Basic Table Layout eignet sich lediglich für angebotene Software, in der keine Erweiterungen benötigt werden, wie z.B. Webmail oder Blogs. Account Tenant 17 17 35 42 Aid Name 1 2 1 1 Acme Gump Ball Big Abbildung 3.4: Basic Table Layout (selbsterstellte Grafik) 3 Multi-Tenancy mit aktuellen Datenbanken 10 3.3.3 Extension Table Layout Beim Extension Table Layout werden mandantenspezifische Erweiterungen in zusätzlichen Tabellen gespeichert. Alle Tabellen erhalten eine Spalte mit der ID des Mandanten sowie eine Spalte durch welche der Datensatz identifiziert wird. Durch die MandantenID ist es möglich, dass mehrere Mandanten eine Erweiterung nutzen. Die Datensatz-IDs sind notwendig, um die Tabellen durch einen JOIN zum logischen Datenbankschema zurückzuführen. Abbildung 3.5 zeigt das Schema einer Extension Table. Durch die Fragmentierung in mehrere Tabellen entstehen zusätzliche Schreib-/Lesezugriffe, da nicht sichergestellt werden kann, dass zusammengehörige Reihen zusammenhängend in den Speicher geschrieben werden. 1 2 3 4 5 SELECT Aid, Name, Hospital, Beds FROM (SELECT Aid, Name, Hospital, Beds FROM AccountExt a, HealthcareAccount h WHERE a.Row = h.Row AND a.Tenant = 17 AND h.Tenant = 17) AS Account17 Listing 3.1: Transformierte SQL Anfrage für Extension Table Layout Listing 3.1 zeigt eine Anfrage an die Daten. Hierbei wird eine JOIN-Verknüpfung zwischen den Tabellen AccountExt und Healthcare Account durchgeführt. Das Ergebnis wird in einer Tabelle mit dem Namen “Account17” ausgegeben. Abbildung 3.5: Extension Table Layout (aus [AGJ+ 08, S. 1198])) 3.3.4 Universal Table Layout Das Univeral Table Layout hat nur eine Tabelle, in der sämtliche Daten gespeichert werden. Um dies zu ermöglichen wird eine Table-Spalte eingeführt, mit der die einzelnen Tabellen des logischen Schemas unterschieden werden. Die Daten werden beim Universal Table Layout in Spalten mit einem universellem Datentyp, wie z.B. VARCHAR, gespeichert. 3 Multi-Tenancy mit aktuellen Datenbanken 11 Um Flexibilität zu gewährleisten, muss die Anzahl der Spalten sehr breit gewählt werden. Hierduch entstehen viele Zellen mit NULL-Werten, welche zwar von den meisten Datenbanksystemen effizient verwaltet werden, aber dennoch einen Speicher-Overhead erzeugen. Zusätzlich muss das DBS Meta-Daten halten, in denen die Datentypen sowie die logischen Namen der Spalten in Abhängigkeit der jeweiligen logischen Tabelle gespeichert werden. Ein großer Nachteil vom Universal Table Layout ist, dass die Indizierung nicht praktikabel ist. Abbildung 3.6: Universal Table Layout (aus [AGJ+ 08, S. 1198]) 3.3.5 Pivot Table Layout Beim Pivot Table Layout werden neben der Mandanten- und Tabellen-Spalte Reihensowie Spalten-Werte eingefügt. Jeder Wert eines Datensatzes in der logischen Tabelle wird hier in einem eigenen Datensatz gespeichert. Hierduch sind für die Rückführung einer n-Spaltigen Tabelle n − 1 Join-Verknüpfungen notwendig. Jedoch entfällt im Vergleich zu Universal Tables die Speicherung von NULL-Werten. Die Daten selbst können hierbei entweder als variabler Datentyp VARCHAR gespeichert werden oder man führt für jeden Datentyp eine eigene Pivot-Tabelle ein (siehe Abbildung 3.7), wodurch das Casten der Datentypen entfällt. Um Indizies zu unterstützen können zusätzliche Index-Tabellen für jeden Datentyp eingeführt werden. 3.3.6 Chunk Table Layout Die Datensätze werden in Chunks, also “Datenblöcke” untergliedert. Mehrere dieser Chunks bilden gemeinsam einen logischen Datensatz. Dazu wird beim Chunk-TableLayout neben Spalten für Tenant, Tabelle und Reihe eine Chunk-Nummer vergeben. Physische Zeilen mit gleicher Tenant-ID, gleicher Tabellennummer und gleicher Rei- 3 Multi-Tenancy mit aktuellen Datenbanken 1 2 3 4 5 6 7 8 9 10 11 12 SELECT Beds FROM (SELECT s.Str as Hospital, i.Int as Beds FROM PivotStr s, PivotInt i WHERE s.Tenant = 17 AND i.Tenant = 17 AND s.Table = 0 AND s.Col = 2 AND i.Table = 0 AND i.Col = 3 AND s.Row = i.Row) WHERE Hospital=’State’ Listing 3.2: Transformierte SQL Anfrage für Pivot Table Layout Abbildung 3.7: Pivot Table Layout (aus [AGJ+ 08, S. 1198]) he gehören zu einem logischen Datensatz, sortiert nach den inkrementierten ChunkNummern. In Abbildung 3.8 sind dieses beispielsweise die ersten beiden Zeilen. In einem Chunk werden verschiedene Attribute mit verschiedenen Datentypen, wahlweise mit Indizierung, gespeichert. Hierdurch ist es möglich, häufig zusammen auftretende Werte zu gruppieren, wodurch die Schreib-/Lesezugriffe optimiert werden können. Abbildung 3.8: Chunk Table Layout (aus [AGJ+ 08, S. 1198]) 3 Multi-Tenancy mit aktuellen Datenbanken 13 Im Vergleich zu Pivot Tabellen wird hier nur eine Tabelle benötigt, wodurch der Aufwand für die Rekonstruktion der logischen Tabellen geringer ausfällt. Die AnfrageTransformation ist jedoch komplexer. Dieses wird leicht aus einem Beispiel ersichtlich: Für das Auflösen der Spaltennamen wird beim Pivot Table Layout ein Mapping Tenant, Table, Col -> Spaltenname benötigt. Hingegen beim Chunk Table Layout Tenant, Table, Chunk -> Int1 = Spaltenname1 | Str1 = Spaltenname2. Die Spalten in der physischen Schicht müssen hier nochmal zugeordnet werden. 3.3.7 Chunk Folding In [AGJ+ 08] stellen die Autoren eine weitere Schema-Mapping Technik vor: Chunk Folding. Es werden die Techniken des Extension Tables mit denen der Chunk Tables kombiniert. Abbildung 3.9 zeigt ein Schema für Chunk Folding. Hierbei gibt es eine (oder auch mehrere) gemeinsame Tabelle, die von allen (oder vielen) Mandanten genutzt werden sowie eine Erweiterungstabelle deren Struktur dem Chunk Table Layout entspricht. Abbildung 3.9: Chunk Folding (aus [AGJ+ 08, S. 1198]) Durch diese Kombination wird erreicht, dass häufig genutzte Attribute in herkömmlichen Tabellen gespeichert werden, wodurch erhöhter I/O- sowie Transformationsaufwand beim Zugriff auf Attribute dieser Tabelle entfällt. Durch Variation der Breite der Chunk-Tabelle wird diese zu einer Mischform von Universal Table Layout und Chunk Table Layout: Die Breite kann so optimiert werden, dass z.B. 80% der logischen Datensätze in einen Chunk passen. Tabellen mit vielen Attributen werden hingegen in zwei oder mehr Chunks verteilt. Dadurch wird der Aufwand, mandantenspezifische Erweiterungen zu Laden und Verarbeiten, gering gehalten. 3 Multi-Tenancy mit aktuellen Datenbanken 14 3.4 Beispiel: force.com Die Plattform Salesforce.com, Anbieter von Customer Relationship Management (CRM), sowie deren Tochter-Plattform Force.com, eine Entwicklungsumgebung für die Entwicklung von Cloud-basierter Software, nutzen Multi-Tenancy für die Datenhaltung. Das Datenbankschema zeigt Abbildung 3.10. Es handelt sich hierbei um ein Universal Table Layout mit mehreren Erweiterungen zur Optimierung sowie Flexibilisierung. # Metadaten Datentabellen Spezielle Pivot Tabellen Objects Data Indexes GUID OrgID ObjID ObjName Fields # GUID OrgID ObjID FieldName Datatype isIndexed FieldNum ...weitere... # GUID OrgID ObjID Name Value0 Value1 ... Value500 # # # OrgID ObjID FieldNum GUID StringValue NumValue DateValue Relationships Clobs Character Large Objects bis zu 32.000 Zeichen OrgID ObjID GUID RelationID TargetObjID ...weitere... Abbildung 3.10: Force.com Datenbankschema (in Anlehnung an [For08]) Mithilfe von Pivot-Tabellen werden beispielsweise Indizierungen ermöglicht. Die Indexes Tabelle enthält hierfür neben Schlüsseln, die das zu indizierende Objekt referenzieren, Spalten mit verschiedenen Datentypen. Über diese wird die Indizierung durchgeführt. Zudem gibt es Tabellen für Relationen zwischen den Objekten, eine Tabelle für Unique-Werte, History-Tracking Tabellen und viele weitere [For08]. In Metadaten-Tabellen werden Informationen über die gespeicherten Objekte (ObjectsTabelle) sowie Meta-Informationen über die einzelnen Werte in der Datentabelle gespeichert. Mit diesen Informationen kann das logische Schema der Mandanten aus diesem physischem Schema rekonstruiert werden. 4 Ausblick 15 4 Ausblick In ihrer Arbeit [AJPK09] stellen Aulbach et al. ein Modell für die Implementierung einer “echten” Multi-Tenant-fähigen Datenbank vor. Dieses soll mithilfe von GridTechnologien sowie Virtualisierung ermöglicht werden. Abbildung 4.1: Multi-Tenancy DBMS (aus [AJPK09]) Die Authoren wollen hierfür ein Grid-Cluster verwenden, wobei auf die einzelnen Knoten die Datenbanken der Mandaten aus einem Archiv-Speicher geladen werden (vgl. Abbildung 4.1). Je nach Auslastung soll dieser Vorgang dynamisch erfolgen. Bei hoher Last werden die Datenbanken auf andere Knoten repliziert. Hierbei werden zunächst die veralteten Abbilder aus dem Archivspeicher kopiert und anschließend durch einen Roll-Forward mithilfe von Log-Dateien aktualisiert [AJPK09]. Durch Tenant Swizzling, einer von den Autoren entwickelten Technik, die sich an “das Pointer Swizzling in objekt-orientierten DBMS” [AJPK09] anlehnt, wird ein schneller Datenzugriff gewährleistet: Die Daten im Hauptspeicher werden von den Daten des Archivspeichers vollkommen getrennt, wodurch Lese- und Schreibzugriffe auf langsamen Festplattenspeicher entfallen. Dieses wird durch Pointer ermöglicht, die jeweils auf referenzierende Objekte zeigen. Sollen diese Objekte persistiert werden, so müssen die Pointer aufgeflöst und durch entsprechende Referenzierungen per ID ersetzt werden. Durch den Einsatz dieser Techniken sollen Probleme der “klassischen” Multi-TenancyLösungen hinsichtlich Isolation und Ressourcenverwaltung gelöst werden. Eine Umsetzung dieses Entwurfs ist geplant [AJPK09]. Abbildungsverzeichnis III Abbildungsverzeichnis Mandanten pro Datenbank (in Anlehnung an [AGJ+ 08, S. 1196]) . . . . 5 Shared Machine, Shared Process und Shared Table (in Anlehnung an [JA07a, S. 1198]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Query Transformation Layer (selbsterstellte Grafik) . . . . . . . . . . . 3.3 Private Table Layout (aus [AGJ+ 08, S. 1198]) . . . . . . . . . . . . . . 3.4 Basic Table Layout (selbsterstellte Grafik) . . . . . . . . . . . . . . . . 3.5 Extension Table Layout (aus [AGJ+ 08, S. 1198])) . . . . . . . . . . . . 3.6 Universal Table Layout (aus [AGJ+ 08, S. 1198]) . . . . . . . . . . . . . 3.7 Pivot Table Layout (aus [AGJ+ 08, S. 1198]) . . . . . . . . . . . . . . . 3.8 Chunk Table Layout (aus [AGJ+ 08, S. 1198]) . . . . . . . . . . . . . . 3.9 Chunk Folding (aus [AGJ+ 08, S. 1198]) . . . . . . . . . . . . . . . . . . 3.10 Force.com Datenbankschema (in Anlehnung an [For08]) . . . . . . . . . 6 8 9 9 10 11 12 12 13 14 4.1 15 2.1 3.1 Multi-Tenancy DBMS (aus [AJPK09]) . . . . . . . . . . . . . . . . . . Verzeichnis der Listings IV Verzeichnis der Listings 3.1 3.2 Transformierte SQL Anfrage für Extension Table Layout . . . . . . . . Transformierte SQL Anfrage für Pivot Table Layout . . . . . . . . . . . 10 12 Literaturverzeichnis V Literaturverzeichnis [AGJ+ 08] S. Aulbach, T. Grust, D. Jacobs, A. Kemper, and J. Rittinger. Multi-tenant databases for software as a service: schema-mapping techniques. In Proceedings of the 2008 ACM SIGMOD international conference on Management of data, pages 1195–1206. ACM New York, NY, USA, 2008. [AJKS09] S. Aulbach, D. Jacobs, A. Kemper, and M. Seibold. A comparison of flexible schemas for software as a service. In Proceedings of the 35th SIGMOD international conference on Management of data, pages 881–888. ACM, 2009. [AJPK09] S. Aulbach, D. Jacobs, J. Primsch, and A. Kemper. Anforderungen an Datenbanksysteme für Multi-Tenancy-und Software-as-a-ServiceApplikationen. BTW 2009 - Proceedings, 2009. http://131.159.16. 103/research/publications/conferences/btw2009-mtd.pdf. [BHS08] W. Beinhauer, M. Herr, and A. Schmidt. SOA für agile Unternehmen: Serviceorientierte Architekturen verstehen, einführen und nutzen. Symposion Publishing GmbH, 2008. [For08] Force.com. The force.com multitenant achitecture. Whitepaper, 2008. http://www.apexdevnet.com/media/ ForcedotcomBookLibrary/Force.com_Multitenancy_WP_ 101508.pdf. [JA07a] D. Jacobs and S. Aulbach. Ruminations on multi-tenant databases. BTW, 2007. Vortragsfolien, http://www.btw2007.de/vortraege/ JacobsAulbach.pdf. [JA07b] D. Jacobs and S. Aulbach. Ruminations on multi-tenant databases. In BTW Proceedings. Citeseer, 2007. [Pap08] M.P. Papazoglou. Web services: principles and technology. Pearson Prentice Hall, 2008. [War07] Robert Warfield. Multitenancy can have a 16:1 cost advantage over singletenant, 2007. http://smoothspan.wordpress.com/2007/10/28/ multitenancy-can-have-a-161-cost-advantage-over-single -tenant/.