-
HINTERGRUND
-
Das Gebiet der vorliegenden Erfindung bezieht sich auf mandantenfähige Datenbanken. Im Besonderen bezieht sich das Gebiet der vorliegenden Erfindung auf mandantenfähige Plafform-as-a-Service (PaaS, Plattform als Dienstleistung) und Software-as-a-Service(SaaS, Software als Dienstleistung)-Dienste (die im Folgenden gemeinsam als „Dienste” bezeichnet werden).
-
Dienste können in öffentlichen, hybriden und privaten Cloud-Umgebungen angeboten werden. Dienste, die durch einen Dienstanbieter angeboten werden, können auf Daten zugreifen, die in einem Datenbank-Verwaltungssystem (database management system, DBMS) gespeichert sind, das computerunterstützte Datenspeicher- und -abrufsysteme darstellt. Ein DBMS kann mehrere Datenbanken verwalten, deren Eigner jeweils verschiedene Entitäten sein können. Dienste können gemeinsam durch mehrere Client-Organisationen (Mandanten) abonniert werden. Folglich verarbeiten die Dienste Daten für verschiedene Mandanten. Aus Gründen der Sicherheit und gesetzlicher Vorschriften fordern Mandanten Datenisolierung in verschiedenen Graden, die als „Richtlinienelement” angegeben werden, wenn der Mandant die Dienste abonniert. Noch wichtiger ist, dass der Isolierungsgrad reibungslos geändert werden kann, wenn sich Anforderungen aufgrund der Sicherheit und gesetzlicher Vorschriften im Laufe der Zeit ändern. Folglich muss der Dienstanbieter eine mandantenfähige Architektur für die Dienste implementieren, die eine Daten- und Konfigurationspartitionierung ermöglicht, sodass jeder Mandant die geeignete Stufe der Datenisolierung erhält.
-
Es bestehen drei aktuelle Implementierungsoptionen zum Verwalten von mandantenfähigen Daten. Die erste Implementierungsoption speichert Mandantendaten in getrennten Datenbanken, wobei es sich um die einfachste Herangehensweise an die Datenisolierung handelt. Datenverarbeitungs-Ressourcen und Anwendungscode werden im Allgemeinen von allen Mandanten auf einem Server gemeinsam genutzt, jedoch verfügt jeder Mandant über seinen eigenen Satz von Daten, der logisch von Daten isoliert bleibt, die allen anderen Mandanten gehören. Metadaten verknüpfen jede Datenbank mit dem korrekten Mandanten, und Datenbanksicherheit verhindert, dass ein Mandant versehentlich oder böswillig auf Daten anderer Mandanten zugreift. Diese Option führt jedoch tendenziell zu höheren Kosten für den Dienstanbieter für die Wartung der Geräte und Sicherung der Mandantendaten. Hardware-Kosten sind ebenfalls höher als bei alternativen Implementierungsoptionen, da die Anzahl der Mandanten, die auf einem jeweiligen Datenbank-Server aufgenommen werden können, durch die Anzahl der Datenbanken begrenzt wird, die der Server unterstützen kann.
-
Die zweite Implementierungsoption beinhaltet das Aufnehmen mehrerer Mandanten in derselben Datenbank, wobei jeder Mandant seinen eigenen Satz von Tabellen und sonstigen Datenbankartefakten aufweist, die in ein speziell für den Mandanten erstelltes Schema eingeteilt sind. Diese Herangehensweise bietet einen gemäßigten Grad der logischen Datenisolierung für sicherheitsbewusste Mandanten, wenngleich nicht so stark, wie es bei einem vollständig isolierten System der Fall wäre, und kann eine größere Anzahl von Mandanten je Datenbank-Server unterstützen.
-
Eine dritte Implementierungsoption beinhaltet das Verwenden derselben Datenbank und desselben Satzes von Tabellen, um die Daten mehrerer Mandanten zu beherbergen. Eine jeweilige Tabelle kann Datensätze von mehreren Mandanten beinhalten, die in einer beliebigen Reihenfolge gespeichert sind, und eine Mandantenidentifizierungsspalte verknüpft jeden Datensatz mit dem entsprechenden Mandanten. Von den drei Optionen weist die Herangehensweise des gemeinsam genutzten Schemas die geringsten Hardware- und Sicherungskosten auf, da sie das Bedienen der größten Anzahl von Mandanten je Datenbank-Server ermöglicht.
-
Ein transparentes Umwandeln von Datenbankimplementierungen von einer Option in eine andere wird derzeit nicht unterstützt und kann nur mit einer manuellen Datenverschiebung und Systemausfallzeiten durchgeführt werden. Des Weiteren müssen jegliche Anwendungen, die auf die Datenbank zugreifen, derzeit bei einer solchen Umwandlung umcodiert werden, um die Änderungen an der Datenbank widerzuspiegeln.
-
KURZDARSTELLUNG
-
Ausführungsformen stellen ein Verfahren, ein Computerprogrammprodukt und ein System zum Durchführen eines Vorgangs zum Verwalten von mandantenspezifischen Datensätzen in einem mandantenfähigen System durch Empfangen einer Anforderung zum Umwandeln eines Datensatzes in einem physischen Datenspeicher von einem ersten Typ einer mandantenfähigen Implementierung in einen zweiten Typ einer mandantenfähigen Implementierung, Abrufen von Mandantenidentifikations-Metadaten, die einen Mandanten identifizieren, der die Anforderung stellt, Modifizieren des Datensatzes in dem physischen Datenspeicher auf der Grundlage des zweiten Typs der mandantenfähigen Implementierung und Modifizieren von Metadaten bereit, die einer Abstraktionsschicht zugehörig sind, um ein Zugreifen auf den modifizierten Datensatz zu ermöglichen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Damit die Weise, in der die oben aufgeführten Aspekte erreicht werden, genau zu verstehen ist, kann eine genauere Beschreibung von Ausführungsformen der Erfindung, die oben kurz zusammengefasst wurden, den beigefügten Zeichnungen entnommen werden.
-
Es ist jedoch zu beachten, dass die beigefügten Zeichnungen lediglich typische Ausführungsformen dieser Erfindung veranschaulichen und daher nicht als deren Umfang beschränkend zu betrachten sind, da die Erfindung sonstige gleichermaßen wirksame Ausführungsformen beinhalten kann.
-
1 ist ein Blockschaubild, das eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der Erfindung veranschaulicht.
-
2 ist ein Blockschaubild, das eine Architektur zum Verwalten und Umwandeln von Implementierungsoptionen in einer mandantenfähigen Umgebung gemäß einer Ausführungsform der Erfindung veranschaulicht.
-
3 ist ein Blockschaubild, das Komponenten einer zweischichtigen Anwendungsarchitektur gemäß einer Ausführungsform der Erfindung veranschaulicht.
-
4 ist ein Ablaufplan, der ein Verfahren zum Umwandeln von Datenbank-Implementierungsoptionen gemäß einer Ausführungsform der Erfindung veranschaulicht.
-
5 ist ein Ablaufplan, der ein Verfahren zum Übertragen von Daten zum Abschließen einer Umwandlung einer Datenbank von einer mandantenfähigen Implementierungsoption zu einer anderen gemäß einer Ausführungsform der Erfindung veranschaulicht.
-
6 ist ein Ablaufplan, der ein Verfahren zum Übertragen von Daten zum Abschließen einer Umwandlung einer Datenbank von einer mandantenfähigen Implementierungsoption zu einer anderen gemäß einer Ausführungsform der Erfindung veranschaulicht.
-
7 stellt eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung dar.
-
8 stellt Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung dar.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ausführungsformen der Erfindung stellen Techniken zum Verwalten von mandantenspezifischen Daten in einer mandantenfähigen Umgebung bereit. Bei einigen Ausführungsformen wird ein Verfahren zum Umwandeln von einer mandantenfähigen Datenbankimplementierung zu einer anderen bereitgestellt. Bei einigen Ausführungsformen wird die Anforderung zum Umwandeln zwischen mandantenfähigen Implementierungen durch eine Abstraktionsschicht empfangen, sodass die Anwendung, die die Anforderung stellt, keine Kenntnis über die physische Implementierung hat, die zum Speichern von Mandantendaten verwendet wird. Bei einigen Ausführungsformen wird eine Anwendung zum Umwandeln der Datenbankimplementierungen bereitgestellt. Bei einigen Ausführungsformen ist diese Anwendung Teil eines Datenbank-Verwaltungssystems (DBMS). Die Anwendung kann dazu eingerichtet sein, eine Anforderung zum Umwandeln eines Datensatzes in einem physischen Datenspeicher von einem ersten Typ einer mandantenfähigen Implementierung in einen zweiten Typ einer mandantenfähigen Implementierung zu empfangen. Die Anwendung kann anschließend durch eine Abstraktionsschicht Mandantenidentifikations-Metadaten abrufen, die einen Mandanten identifizieren, der die Anforderung stellt. Die Anwendung kann anschließend den Datensatz in dem physischen Datenspeicher auf der Grundlage des zweiten Typs der mandantenfähigen Implementierung modifizieren. Schließlich kann die Anwendung Metadaten modifizieren, die der Abstraktionsschicht zugehörig sind, um entsprechend dem zweiten Typ der mandantenfähigen Implementierung auf den modifizierten Datensatz zuzugreifen.
-
Es versteht sich von vornherein, dass, wenngleich eine ausführliche Beschreibung zu Cloud-Computing enthalten ist, eine Implementierung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Vielmehr sind Ausführungsformen der vorliegenden Erfindung in der Lage, zusammen mit einem beliebigen sonstigen, heute bekannten oder künftig entwickelten Typ einer Datenverarbeitungsumgebung implementiert zu werden.
-
Der Einfachheit halber beinhaltet die ausführliche Beschreibung die folgenden Definitionen, die aus dem „Draft NIST Working Definition of Cloud Computing” von Peter Mell und Tim Grance mit Datum vom 7. Oktober 2009 abgeleitet worden sind, das in einem hiermit eingereichten IDS zitiert wird, von dem eine Kopie beigefügt ist.
-
Bei Cloud-Computing handelt es sich um ein Modell zum Erbringen von Dienstleistungen, um einen praktischen, bedarfsgesteuerten Netzwerkzugriff auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungs-Ressourcen (z. B. Netzwerken, Netzwerkbandbreite, Servern, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuellen Maschinen und Diensten) zu ermöglichen, die schnell mit möglichst geringem Verwaltungsaufwand oder Zusammenwirken mit einem Anbieter des Dienstes bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann zumindest fünf Merkmale, zumindest drei Dienstmodelle und zumindest vier Implementierungsmodelle beinhalten.
-
Es handelt sich um folgende Merkmale:
Selbstbedienung nach Bedarf: Ein Cloud-Kunde kann sich einseitig Datenverarbeitungsfunktionalität wie zum Beispiel Server-Zeit und Netzwerkspeicher automatisch nach Bedarf bereitstellen, ohne dass ein menschliches Zusammenwirken mit dem Anbieter des Dienstes erforderlich ist.
-
Breiter Netzwerkzugriff: Funktionalität ist über ein Netzwerk verfügbar, und der Zugriff erfolgt über Standardmechanismen, die eine Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z. B. Mobiltelefone, Laptops und PDAs) unterstützen.
-
Ressourcen-Zusammenschluss: Die Datenverarbeitungs-Ressourcen des Anbieters werden mit verschiedenen physischen und virtuellen Ressourcen zusammengeschlossen, die nach Bedarf dynamisch zugewiesen und neu zugewiesen werden, um mehrere Kunden mithilfe eines mandantenfähigen Modells zu bedienen. Es besteht in einem gewissen Sinn Standortunabhängigkeit insofern, als der Kunde im Allgemeinen keine Kontrolle oder Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, den Standort jedoch möglicherweise auf einer höheren Abstraktionsebene (z. B. Land, Bundesstaat oder Rechenzentrum) bestimmen kann.
-
Schnelle Elastizität: Funktionalität kann für eine schnelle Vergrößerung schnell und elastisch, in einigen Fällen automatisch, bereitgestellt werden und schnell für eine schnelle Verkleinerung freigegeben werden. Dem Kunden erscheint die für die Bereitstellung verfügbare Funktionalität häufig unbegrenzt, und sie kann jederzeit in beliebigem Umfang erworben werden.
-
Gemessener Dienst: Cloud-Systeme steuern und optimieren automatisch die Ressourcen-Nutzung durch Verwenden einer Messfunktion auf einer gewissen Abstraktionsebene, die für den Typ des Dienstes geeignet ist (z. B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcen-Nutzung kann überwacht, gesteuert und gemeldet werden, wodurch Transparenz sowohl für den Anbieter als auch für den Kunden des genutzten Dienstes bereitgestellt wird.
-
Es handelt sich um folgende Dienstmodelle:
Software as a Service (SaaS): Die dem Kunden bereitgestellte Funktion besteht darin, die Anwendungen des Anbieters zu nutzen, die in einer Cloud-Infrastruktur ausgeführt werden. Auf die Anwendungen kann von verschiedenen Client-Einheiten durch eine Thin-Client-Schnittstelle wie zum Beispiel einen Web-Browser (z. B. eMail auf der Grundlage des Web) zugegriffen werden. Der Kunde verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur einschließlich des Netzwerks, der Server, der Betriebssysteme, des Speichers oder sogar einzelner Anwendungsfunktionen mit der möglichen Ausnahme begrenzter benutzerspezifischer Anwendungskonfigurationseinstellungen nicht.
-
Platform as a Service (PaaS): Die dem Kunden bereitgestellte Funktion besteht darin, in der Cloud-Infrastruktur durch den Kunden erstellte oder erworbene Anwendungen zu implementieren, die mithilfe von Programmiersprachen und Werkzeugen erstellt worden sind, die durch den Anbieter unterstützt werden. Der Kunde verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur einschließlich der Netzwerke, Server, Betriebssysteme oder des Speichers nicht, hat aber die Kontrolle über die implementierten Anwendungen und möglicherweise über Konfigurationen von Anwendungen beherbergenden Umgebungen.
-
Infrastructure as a Service (IaaS, Infrastruktur als Dienstleistung): Die dem Kunden bereitgestellte Funktion besteht darin, Verarbeitung, Speicher, Netzwerke und sonstige grundlegende Datenverarbeitungs-Ressourcen bereitzustellen, wobei der Kunde in der Lage ist, beliebige Software zu implementieren und auszuführen, die Betriebssysteme und Anwendungen beinhalten kann. Der Kunde verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, implementierte Anwendungen und möglicherweise begrenzte Kontrolle über ausgewählte Netzwerkkomponenten (z. B. Host-Firewalls).
-
Es handelt sich um folgende Implementierungsmodelle:
Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich auf dem Gelände der Organisation oder außerhalb davon befinden.
-
Gemeinschafts-Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Gemeinschaft, die gemeinsame Anliegen hat (z. B. Überlegungen bezüglich einer Zielsetzung, Sicherheitsanforderungen, Richtlinien und Einhalten von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann sich auf dem Gelände der Organisationen oder außerhalb davon befinden.
-
Öffentliche Cloud: Die Cloud-Infrastruktur wird der breiten Öffentlichkeit oder einer großen Branchengruppe zugänglich gemacht und befindet sich im Besitz einer Organisation, die Cloud-Dienste verkauft.
-
Hybrid-Cloud: Die Cloud-Infrastruktur setzt sich aus zwei oder mehr (privaten, Gemeinschafts- oder öffentlichen) Clouds zusammen, die eigenständige Entitäten bleiben, jedoch durch standardisierte oder proprietäre Technologie miteinander verbunden sind, die eine Portierbarkeit von Daten und Anwendungen (z. B. Cloud-Zielgruppenverteilung zum Lastausgleich zwischen Clouds) ermöglicht.
-
Eine Cloud-Computing-Umgebung ist dienstorientiert mit einem Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantische Interoperabilität. Im Zentrum des Cloud-Computing befindet sich eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten aufweist. Bei einem Knoten in einer Cloud-Computing-Umgebung handelt es sich um eine Datenverarbeitungseinheit, die Personal-Computersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Hand- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der obigen Systeme oder Einheiten beinhalten, und dergleichen beinhalten, ohne auf diese beschränkt zu sein. Ein Cloud-Computing-Knoten kann implementiert werden und/oder alle oben dargelegten Funktionalitäten durchführen.
-
Im Folgenden wird auf Ausführungsformen der Erfindung Bezug genommen. Es versteht sich jedoch, dass die Erfindung nicht auf spezifische beschriebene Ausführungsformen beschränkt ist. Vielmehr wird jede Kombination der folgenden Merkmale und Elemente, unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen, als die Erfindung ausführend und umsetzend betrachtet. Wenngleich Ausführungsformen der Erfindung Vorteile gegenüber sonstigen möglichen Lösungen und/oder gegenüber dem Stand der Technik erzielen können, wird die Erfindung des Weiteren nicht dadurch beschränkt, ob ein spezieller Vorteil durch eine bestimmte Ausführungsform erzielt wird. Die folgenden Aspekte, Merkmale, Ausführungsformen und Vorteile dienen folglich nur zur Veranschaulichung und werden nicht als Elemente oder Beschränkungen der beigefügten Ansprüche betrachtet, es sei denn, wo dies ausdrücklich in einem oder mehreren Ansprüchen angegeben wird. Gleichermaßen ist eine Bezugnahme auf „die Erfindung” nicht als Verallgemeinerung eines beliebigen, hier offenbarten erfindungsgemäßen Gegenstandes auszulegen und ist nicht als Element oder Beschränkung der beigefügten Ansprüche zu betrachten, es sei denn, wo dies ausdrücklich in einem oder mehreren Ansprüchen angegeben wird.
-
Wie für einen Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert wird, auf denen computerlesbarer Programmcode verkörpert ist.
-
Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder um eine beliebige geeignete Kombination aus Obigen handeln, ohne auf diese beschränkt zu sein. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Speichermediums würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine Magnetspeichereinheit oder eine beliebige geeignete Kombination der Obigen. Im Rahmen dieses Dokuments kann ein computerlesbares Speichermedium jedes physische Medium sein, das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal, in dem computerlesbarer Programmcode verkörpert wird, zum Beispiel im Basisband oder als Teil einer Trägerwelle beinhalten. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen annehmen, darunter eine elektromagnetische Form, eine optische Form oder eine beliebige geeignete Kombination derselben, ohne auf diese beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen austauschen, verbreiten oder transportieren kann.
-
Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe eines beliebigen geeigneten Mediums übertragen werden, zum Beispiel über Funk, Kabel, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder über eine beliebige geeignete Kombination der Obigen, ohne auf diese beschränkt zu sein.
-
Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa Java, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (local area network, LAN) oder ein Weitverkehrs-Netzwerk (wide area network, WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Dienstanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle implementiert werden kann/können. Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
-
Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand (article of manufacture) erzeugen, der Befehle beinhaltet, die die/den Funktion/Vorgang implementieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
-
Die Computerprogrammbefehle können außerdem auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder sonstigen Einheiten ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge zu implementieren.
-
Ausführungsformen der Erfindung können Endbenutzern durch eine Cloud-Computing-Infrastruktur bereitgestellt werden. Cloud-Computing bezieht sich allgemein auf die Bereitstellung skalierbarer Datenverarbeitungs-Ressourcen als Dienst über ein Netzwerk. Formeller ausgedrückt, kann Cloud-Computing als Datenverarbeitungsfunktionalität definiert, die eine Abstraktion zwischen der Datenverarbeitungs-Ressource und ihrer zugrunde liegenden technischen Architektur (z. B. Server, Speicher, Netzwerke) bereitstellt, wodurch ein praktischer, bedarfsgesteuerter Netzwerkzugriff auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungs-Ressourcen ermöglicht wird, die schnell mit möglichst geringem Verwaltungsaufwand oder Zusammenwirken mit einem Dienstanbieter bereitgestellt und freigegeben werden können. Auf diese Weise ermöglicht Cloud-Computing einem Benutzer, auf virtuelle Datenverarbeitungs-Ressourcen (z. B. Speicher, Daten, Anwendungen und sogar vollständige virtualisierte Datenverarbeitungssysteme) in „der Cloud” zuzugreifen, ohne die zugrunde liegenden physischen Systeme (oder Standorte dieser Systeme) zu berücksichtigen, die zum Bereitstellen der Datenverarbeitungs-Ressourcen verwendet werden.
-
Üblicherweise werden Cloud-Computing-Ressourcen einem Benutzer auf der Grundlage einer nutzungsabhängigen Vergütung bereitgestellt, bei der Benutzern lediglich die tatsächlich genutzten Datenverarbeitungs-Ressourcen (z. B. eine Menge an Speicherplatz, die durch einen Benutzer in Anspruch genommen wird, oder eine Anzahl von virtualisierten Systemen, die durch den Benutzer instanziiert werden) in Rechnung gestellt werden. Ein Benutzer kann jederzeit und von jedem Ort aus über das Internet auf beliebige der Ressourcen zugreifen, die sich in der Cloud befinden. Im Rahmen der vorliegenden Erfindung kann ein Benutzer auf Anwendungen oder verwandte Daten zugreifen, die in der Cloud verfügbar sind. Beispielsweise könnte eine Anwendung zur Umwandlung einer mandantenfähigen Datenbankimplementierung auf einem Datenverarbeitungssystem in der Cloud ausgeführt werden und eine Datenbank von einer mandantenfähigen Implementierung in eine andere umwandeln. In einem solchen Fall könnte die Anwendung zur Umwandlung einer mandantenfähigen Datenbankimplementierung Datenbankimplementierungen umwandeln und den physischen Datenspeicher und zugehörige Mandantenmetadaten an einem Speicherort in der Cloud speichern. Dies ermöglicht einem Benutzer, von einem beliebigen Datenverarbeitungssystem aus auf diese Daten zuzugreifen, das an ein Netzwerk angeschlossen ist, das mit der Cloud verbunden ist (z. B. das Internet).
-
1 ist ein Blockschaubild, das ein Cloud-Computing-System 100 zum Bereitstellen von Software als Dienstleistung, bei der ein Server für mehrere Clients (Mandanten) in einer von drei verschiedenen Implementierungen Anwendungen bereitstellt und Daten speichert, gemäß einer Ausführungsform der Erfindung veranschaulicht. Das vernetzte System 100 beinhaltet einen Server 102 und einen Client-Computer 132. Der Server 102 und der Client 132 sind über ein Netzwerk 130 miteinander verbunden und können über das Netzwerk 130 mit sonstigen Computern verbunden sein. Im Allgemeinen kann es sich bei dem Netzwerk 130 um ein Telekommunikationsnetz und/oder ein Weitverkehrs-Netzwerk (WAN) handeln. Bei einer bestimmten Ausführungsform handelt es sich bei dem Netzwerk 130 um das Internet.
-
Der Server 102 beinhaltet im Allgemeinen einen Prozessor 104, der über einen Bus 115 mit einem Arbeitsspeicher 106, einer Netzwerk-Schnittstelleneinheit 124, einem Speicher 108, einer Eingabeeinheit 126 und einer Ausgabeeinheit 128 verbunden ist. Der Server 102 wird im Allgemeinen durch ein Betriebssystem 107 gesteuert. Zu Beispielen für Betriebssysteme zählen UNIX, Versionen des Betriebssystems Microsoft Windows® und Distributionen des Betriebssystems Linux®. Allgemeiner ausgedrückt, kann ein beliebiges Betriebssystem verwendet werden, das die hierin offenbarten Funktionen unterstützt. Der Prozessor 104 ist enthalten, um eine einzelne CPU, mehrere CPUs, eine einzelne CPU mit mehreren Verarbeitungskernen und dergleichen darzustellen. In ähnlicher Weise kann es sich bei dem Arbeitsspeicher 106 um einen Direktzugriffsspeicher handeln. Wenngleich der Arbeitsspeicher 106 als eine einzelne Identität dargestellt wird, versteht es sich, dass der Arbeitsspeicher 106 eine Vielzahl von Modulen aufweisen kann und dass der Arbeitsspeicher 106 auf mehreren Ebenen bestehen kann, von Hochgeschwindigkeitsregistern und Cachespeichern bis zu langsameren, jedoch größeren DRAM-Chips. Bei der Netzwerk-Schnittstelleneinheit 124 kann es sich um einen beliebigen Typ einer Netzwerk-Datenübertragungseinheit handeln, die dem Server 102 ermöglicht, über das Netzwerk 130 Daten mit anderen Computern auszutauschen.
-
Bei dem Speicher 108 kann es sich um eine nichtflüchtige Speichereinheit handeln. Wenngleich der Speicher 108 als eine einzelne Einheit dargestellt wird, kann es sich bei dem Speicher 108 um eine Kombination aus festen und/oder wechselbaren Speichereinheiten wie zum Beispiel Festplatten-Laufwerken, Halbleiter-Laufwerken, Diskettenlaufwerken, Bandlaufwerken, wechselbaren Speicherkarten oder optischen Speichern handeln. Der Arbeitsspeicher 106 und der Speicher 108 können Teil eines virtuellen Adressraums sein, der mehrere primäre und sekundäre Speichereinheiten umfasst.
-
Wie dargestellt, enthält der Speicher 108 des Servers eine Vielzahl von Datenbanken. In dieser bestimmten Zeichnung werden vier Datenbanken dargestellt, wenngleich eine beliebige Anzahl von Datenbanken in dem Speicher 108 des Servers 102 gespeichert sein kann. Der Speicher 108 wird so dargestellt, dass er mandantenspezifische Datenbanken enthält, die mit 118, 120 und 122 bezeichnet sind und jeweils verschiedenen Implementierungsoptionen entsprechen. Der Speicher 108 wird außerdem so dargestellt, dass er eine Metadatenablage 125 enthält, die Mandantenidentifikationsdaten, Systemrichtlinien und beliebige sonstige relevante Daten speichert.
-
Bei der Eingabeeinheit 126 kann es sich um eine beliebige Einheit zum Bereitstellen von Eingaben in den Server 102 handeln. Beispielsweise können eine Tastatur und/oder eine Maus verwendet werden. Bei der Ausgabeeinheit 128 kann es sich um eine beliebige Einheit zum Bereitstellen von Ausgaben an einen Benutzer des Servers 102 handeln. Beispielsweise kann die Ausgabeeinheit 108 ein beliebiger herkömmlicher Bildschirm oder ein Satz von Lautsprechern sein. Wenngleich sie getrennt von der Eingabeeinheit 126 dargestellt wird, können die Ausgabeeinheit 128 und die Eingabeeinheit 126 zusammengeschlossen sein. Beispielsweise kann ein Bildschirm mit einem integrierten Touchscreen verwendet werden.
-
Wie dargestellt, beinhaltet der Arbeitsspeicher 106 des Servers 102 eine mandantenfähige Anwendung 110, die dazu eingerichtet ist, Benutzern eine Vielzahl von Diensten über das Netzwerk 130 bereitzustellen. Wie dargestellt, enthält der Arbeitsspeicher 106 des Servers 102 außerdem ein Datenbank-Verwaltungssystem (DBMS) 112, das dazu eingerichtet ist, eine Vielzahl von Datenbanken zu verwalten, die in dem Speicher 108 des Servers 102 enthalten sind. Der Arbeitsspeicher 106 des Servers 102 enthält außerdem einen Web-Server 114, der herkömmliche Funktionen eines Web-Dienstes durchführt und außerdem Funktionen eines Anwendungs-Servers (z. B. eines J2EE-Anwendungs-Servers) als Laufzeitumgebungen für verschiedene Anwendungen wie zum Beispiel die mandantenfähige Anwendung 110 bereitstellen kann.
-
Wie dargestellt, enthält der Client-Computer 132 einen Prozessor 134, einen Arbeitsspeicher 136, ein Betriebssystem 138, einen Speicher 142, eine Netzwerk-Schnittstelle 144, eine Eingabeeinheit 146 und eine Ausgabeeinheit 148 gemäß einer Ausführungsform der Erfindung. Die Beschreibung und Funktionalität dieser Komponenten stimmen mit denen der gleichwertigen Komponenten überein, die in Bezug auf den Server 102 beschrieben worden sind. Wie dargestellt, enthält der Arbeitsspeicher 136 des Client-Computers 132 auch einen Web-Browser 140, der bei einigen Ausführungsformen dazu verwendet wird, auf Dienste zuzugreifen, die durch den Server 102 bereitgestellt werden.
-
Die besondere Beschreibung in 1 dient lediglich der Veranschaulichung; es versteht sich, dass die Erfindung nicht auf spezifische beschriebene Ausführungsformen beschränkt ist und jede Kombination zum Implementieren und Ausüben der Erfindung in Betracht gezogen wird. Wenngleich 1 einen einzelnen Server 102 darstellt, können Ausführungsformen der Erfindung eine beliebige Anzahl von Servern zum Bereitstellen der Dienste und der Funktionalität in Betracht ziehen, die hierin beschrieben werden. Wenngleich sie in 1 in dem Server 102 zusammen dargestellt werden, können sich die Dienste und Persistenzfunktionen der zweischichtigen mandantenfähigen Anwendung 110 des Weiteren in getrennten physischen Servern oder in getrennten virtuellen Servern innerhalb desselben Servers befinden. Bei einigen Ausführungsformen kann die mandantenfähige Anwendung 110 in mehreren Instanzen in einem Datenverarbeitungsverbund implementiert sein. Wie Fachleuten bekannt ist, können sich die Module, die ihre jeweiligen Funktionen für die mandantenfähige Anwendung 110 durchführen, auf demselben Server, auf verschiedenen Servern oder einer beliebigen Kombination davon befinden. Die Elemente im Speicher wie zum Beispiel die Metadatenablage 125, die Datenbanken 118, 120 und 122 können ebenfalls auf demselben Server, auf verschiedenen Servern oder einer beliebigen Kombination davon gespeichert sein und können sich außerdem auf denselben oder auf anderen Servern befinden wie bzw. als die Anwendungsmodule.
-
2 ist ein Blockschaubild 200, das eine Architektur zum Verwalten und Umwandeln von Implementierungsoptionen in einer mandantenfähigen Umgebung gemäß einer Ausführungsform der Erfindung veranschaulicht. Wie dargestellt, ist eine Vielzahl von Mandanten 205 1-N über das Netzwerk 130 mit dem Server 102 verbunden und greift auf die mandantenfähige Anwendung 110 zu, die in dem Arbeitsspeicher 106 des Servers 102 enthalten ist. Die mandantenfähige Anwendung 110, die im Folgenden ausführlicher beschrieben wird, ist dazu eingerichtet, den Mandanten Dienste bereitzustellen, was bei einigen Ausführungsformen eine Vielzahl von Software-as-a-Service-Anwendungen in einer Cloud-Computing-Umgebung beinhaltet. Darüber hinaus wird eine Abstraktionsschicht 220 dargestellt, die als Vermittler zwischen der mandantenfähigen Anwendung 110 und dem DBMS 112 dient. Durch die Abstraktionsschicht 220 ist es möglich, eine transparente Umwandlung zwischen verschiedenen Datenbank-Implementierungsoptionen durchzuführen, sodass die mandantenfähige Anwendung 110 keine Kenntnis der physischen Implementierung jeder Datenbank benötigt und die mandantenfähige Anwendung 110 nicht umcodiert werden muss, um die Änderungen in der Datenbank widerzuspiegeln. Die Abstraktionsschicht 220 ist dazu eingerichtet, Abfragen von der mandantenfähigen Anwendung 110 zu empfangen und anschließend mandantenspezifische Daten in Abfragen einzufügen, sodass sie an die entsprechende Datenbank und/oder Datenbanktabellen gesendet werden. Zu mandantenspezifischen Daten können Einzelheiten zählen, die mit der physischen Implementierung von Datenbanken, Schemas, Tabellen und Spalten in Zusammenhang stehen, deren Eigner der jeweilige Mandant ist, ohne auf diese beschränkt zu sein. Zu solchen Einzelheiten können Namen und Speicherorte der Datenbanken, Schemas, Tabellen und Spalten zählen. Bei einer alternativen Ausführungsform kann die Abstraktionsschicht 220 als Erweiterung von Datenquellenverbund-Funktionalitäten in dem Datenbank-Verwaltungssystem implementiert sein. Bei einigen Ausführungsformen führt die Abstraktionsschicht außerdem die Funktionalität einer Datenplatzierungsschicht durch, die dafür zuständig ist, Umwandlungsanforderungen zu empfangen und die Daten anschließend von einem mandantenfähigen Implementierungstyp in einen anderen umzuwandeln.
-
Bei einigen Ausführungsformen sind die mandantenspezifischen Daten in der Metadatenablage 125 gespeichert. Ausführungsformen der Metadatenablage 125 beinhalten eine relationale Datenbank, ein Content-Management-System oder ein Dateisystem, das durch ein Anwendungsmodul referenziert wird, das Richtlinien und Datenzuordnungen durchsetzt. Bei dem DBMS 112, das im Folgenden ausführlicher beschrieben wird, handelt es sich um ein allgemeines Datenbank-Verwaltungssystem. Wie dargestellt, verwaltet das DBMS 112 eine Vielzahl von Datenbanken, darunter getrennte physische Datenbanken 235 1-N jeweils für Mandanten T1-N, eine gemeinsam genutzte Datenbank 240, die getrennte Schemas 242, 244 und 246 für Mandanten T3, T4 und TM enthält, und eine gemeinsam genutzte Datenbank 250, die ein einzelnes Schema 252 für alle ihre Mandanten enthält. Bei einigen Ausführungsformen kann das DBMS 112 auch direkt die Metadatenablage 125 verwalten. Wie dargestellt, enthält die Datenbank 250 ein Schema 252 mit beispielhaften Spalten 254, 256 und 258, die Mandantenidentifikationsdaten, einem Schlüsselnamen bzw. einem Schlüsselwert entsprechen. Die Mandantenidentifikationsdaten werden in der Metadatenablage 125 gespeichert und verwaltet. Die besondere Beschreibung in 2 dient lediglich der Veranschaulichung; es versteht sich, dass die Erfindung nicht auf spezifische beschriebene Ausführungsformen beschränkt ist und jede Kombination zum Implementieren und Ausüben der Erfindung in Betracht gezogen wird.
-
3 ist ein Blockschaubild, das Komponenten einer zweischichtigen Anwendungsarchitektur gemäß einer Ausführungsform der Erfindung veranschaulicht. Wie dargestellt, enthält die mandantenfähige Anwendung 110 Dienste 340 und eine Persistenzzugriffsschicht 350. Die mandantenfähige Anwendung 110 befindet sich auf der Anwendungsschicht in einer entsprechenden Anwendungslaufzeitumgebung, beispielsweise der J2EE-Anwendungslaufzeitumgebung wie IBM® WebSphere® Application Server (IBM und WebSphere sind in vielen Ländern weltweit eingetragene Marken von International Business Machines Corporation). Zu den Diensten 340 zählt jede beliebige Software-as-a-Service(SaaS)-Lösung, bei der Anwendungen auf einem Server ausgeführt werden und durch einen Benutzer über ein Netzwerk, zum Beispiel das Internet, darauf zugegriffen wird. Zu Beispielen für SaaS-Lösungen zählen Anwendungen für Stammdatenverwaltung (master data management, MDM), Buchhaltung, Zusammenarbeit, Kundenpflege, Ressourcen-Planung für Unternehmen, Rechnungsstellung, Personalverwaltung, Content-Management und Service-Desk-Management, ohne auf diese beschränkt zu sein. Bei der Persistenzzugriffsschicht 350 handelt es sich um eine Schnittstelle, die dazu eingerichtet ist, der mandantenfähigen Anwendung 110 und ihren Diensten 340 einen transparenten Zugriff auf die Vielzahl von Datenbanken zu gewähren, die in der mandantenfähigen Umgebung verwaltet werden, wenn sie mit der Abstraktionsschicht 220 verbunden sind. Da die mandantenfähige Anwendung 110 und ihre Dienste 340 keine Kenntnis über die physische Implementierung der Datenbanken besitzen, die sie referenzieren, stellt die Persistenzzugriffsschicht 350 eine Verknüpfung zwischen der mandantenfähigen Anwendung und der Abstraktionsschicht bereit, die die Einzelheiten der physischen Implementierung der Datenbanken verbirgt. Durch die Persistenzzugriffsschicht 350 lesen die mandantenfähige Anwendung 110 und ihre Dienste 340 Daten in den Datenbanken und schreiben Daten in diese, indem sie Abfragen erzeugen, die zur weiteren Extrapolation und Verarbeitung an die Abstraktionsschicht gesendet werden.
-
Wie dargestellt, ist die mandantenfähige Anwendung 110 mit der Abstraktionsschicht 220 verbunden, die die Funktionalität bereitstellt, wie sie oben beschrieben worden ist. Die Abstraktionsschicht 220 stellt eine Schicht einer Abstraktion zwischen der mandantenfähigen Anwendung 110 und dem DBMS 112 gemäß einer Ausführungsform der Erfindung bereit. Wie dargestellt, enthält das DBMS 112 eine Datenbank-Engine 300, die Standard-Datenbankfunktionen wie zum Beispiel Lesevorgänge, Schreibvorgänge, Abfragen und sonstige Datenbankverwaltungs-Werkzeuge steuert. Bei einigen Ausführungsformen kann das DBMS 112 die Funktion der Datenplatzierungsschicht durchführen, die bei einigen Ausführungsformen durch die Abstraktionsschicht 220 durchgeführt wird, wie oben beschrieben.
-
4 ist ein Ablaufplan, der ein Verfahren 400 zum Umwandeln eines mandantenspezifischen Datensatzes von einer mandantenfähigen Implementierungsoption in eine zweite mandantenfähige Implementierungsoption gemäß einer Ausführungsform der Erfindung darstellt. Bei einer Ausführungsform führt die mandantenfähige Anwendung 110 die Schritte eines Verfahrens 410 aus. Das Verfahren beginnt bei Schritt 410, in dem eine Umwandlungsanforderung von einem Mandanten durch die mandantenfähige Anwendung 110 empfangen wird. In Schritt 420 identifiziert die mandantenfähige Anwendung 110 den anfordernden Mandanten durch Zugreifen auf Daten, die in der Metadatenablage 125 enthalten sind. Bei Ausführungsformen, bei denen die Metadatenablage 125 eine relationale Datenbank ist, stellt die mandantenfähige Anwendung 110 eine Verbindung zu der Metadatenablage 125 her, um Daten abzurufen, die dem anfordernden Mandanten zugehörig sind. In Schritt 430 identifiziert die mandantenfähige Anwendung 110 die aktuelle mandantenfähige Implementierungsoption des Mandanten. Bei einer Ausführungsform werden Daten aus der Metadatenablage 125 dazu verwendet, die aktuelle mandantenfähige Implementierungsoption zu ermitteln. Bei einer weiteren Ausführungsform wird die aktuelle mandantenfähige Implementierungsoption als Eingabe durch den Benutzer bereitgestellt. Im Allgemeinen wird jedes geeignete Verfahren zum Ermitteln der aktuellen Implementierungsoption in Betracht gezogen.
-
In Schritt 440 identifiziert die mandantenfähige Anwendung 110 die Implementierungsoption, die durch den Mandanten angefordert worden ist. Bei einigen Ausführungsformen empfängt die mandantenfähige Anwendung 110 eine Eingabe von dem Benutzer, die die angeforderte mandantenfähige Implementierung definiert. In Schritt 450 modifiziert die mandantenfähige Anwendung 110 den Datensatz in der aktuellen Implementierung, um die Umwandlungsanforderung des Mandanten zu erfüllen. Ausführungsformen von Schritt 450 werden im Folgenden unter Bezugnahme auf 5 und 6 beschrieben. In Schritt 460 modifiziert die mandantenfähige Anwendung 110 Metadaten, die der Abstraktionsschicht 220 zugehörig sind, um der mandantenfähigen Anwendung 110 und ihren Diensten 340 zu ermöglichen, ohne Modifizierungen des Codes auf die umgewandelte Datenbank zuzugreifen. Da die mandantenfähige Anwendung 110 und ihre Dienste 340 ohne Bezugnahme auf die tatsächliche physische Implementierung der zugrunde liegenden Datenbanken codiert sind, muss die Abstraktionsschicht 220 die Abfragen, die durch die Persistenzzugriffsschicht 350 der mandantenfähigen Anwendung 110 gesendet werden, modifizieren, um die gewählte Implementierungsoption in der physischen Implementierung der Datenbanken widerzuspiegeln. Ohne eine solche Modifizierung wären die mandantenfähige Anwendung 110 und ihre Dienste 340 nicht in der Lage, ohne Änderung des Codes transparent auf die zugrunde liegenden Datenbanken zuzugreifen. Bei einigen Ausführungsformen beinhaltet Schritt 460, dass die mandantenfähige Anwendung 110 Metadaten aktualisiert, die in der Metadatenablage 125 enthalten sind, um der Abstraktionsschicht 220 und ihren Abfragen eine Verknüpfung zu der umgewandelten Datenbank bereitzustellen, die der angeforderten Implementierung des Mandanten entspricht. Wenn es sich bei der angeforderten Implementierung um eine private Datenbank handelt, wird die Metadatenablage 125 mit Daten modifiziert, die ausreichen, um die private Datenbank, deren Eigner nun der Mandant ist, mit der Abstraktionsschicht 220 zu verknüpfen. Bei einigen Ausführungsformen von Schritt 460 modifiziert die mandantenfähige Anwendung 110 Abfragen in der Abstraktionsschicht 220, die den Datenbanken des anfordernden Mandanten zugehörig sind, so, dass sie die neuen Identifikationsdaten beinhalten. Wenn es sich bei der angeforderten Implementierung um ein privates Schema in einer gemeinsam genutzten Datenbank handelt, kann die mandantenfähige Anwendung 110 Einträge, die in der Metadatenablage 125 enthalten sind, so aktualisieren, dass sie einen Verweis auf das private Schema enthalten, das für den anfordernden Mandanten erstellt worden ist. Bei einigen Ausführungsformen werden Abfragen in der Abstraktionsschicht 220, die dem anfordernden Mandanten zugehörig sind, so umgeschrieben, dass sie Klauseln enthalten, die die privaten Schemadaten identifizieren. Wenn es sich bei der angeforderten Implementierung um ein gemeinsam genutztes Schema in einer gemeinsam genutzten Datenbank handelt, wird die entsprechende Mandantenkennung aus der Metadatenablage 125 abgerufen und in der Abstraktionsschicht 220, die dem Mandanten zugehörig ist, aktualisiert oder in Abfragen eingefügt.
-
5 ist ein Ablaufplan, der ein Verfahren 500, das Schritt 450 entspricht, gemäß einer Ausführungsform der Erfindung darstellt. Bei einigen Ausführungsformen führt die mandantenfähige Anwendung 110 die Schritte in dem Verfahren 500 durch. Das Verfahren beginnt bei Schritt 510, in dem die mandantenfähige Anwendung 110 beginnt, eine Schleife auszuführen, die Schritte 520 bis 550 zum Umwandeln einer Mandantendatenbank für jede Tabelle, deren Eigner der anfordernde Mandant ist, von einer Implementierungsoption in eine andere Implementierungsoption beinhaltet. In Schritt 520 erstellt die mandantenfähige Anwendung 110 eine entsprechende Datenstruktur, um die angeforderte Implementierungsumwandlung aufzunehmen. Bei einer Ausführungsform kann es sich bei der Datenstruktur um eine private Datenbank handeln, deren Eigner der anfordernde Mandant ist, wie jeweils durch die Elemente 235 1-N in 2 dargestellt. Bei einer weiteren Ausführungsform handelt es sich bei der Datenstruktur um ein privates Schema, dessen Eigner der anfordernde Mandant ist, das in einer gemeinsam genutzten Datenbank enthalten ist, wie durch das Element 240 in 2 dargestellt. Das Verfahren geht anschließend zu Schritt 530 über, in dem die aktuelle Tabelle in die erstellte Datenstruktur übertragen wird. Die Übertragung kann durch eine beliebige Anzahl von Mitteln durchgeführt werden, zum Beispiel durch Verschieben und Kopieren der Tabelle, ohne darauf beschränkt zu sein.
-
Das Verfahren geht anschließend zu Schritt 540 über, der eine Tabellenübertragung „online” ermöglicht, sodass die Datenbank verfügbar bleibt, und in dem Abfragen, die während der Übertragung empfangen werden, zur Ausführung an die entsprechenden Tabellen ausgegeben werden. Dementsprechend muss ein Satz von Regeln für jeden Typ von Abfrage definiert werden, die während der Übertragung empfangen wird. Bei einer Ausführungsform werden Select-Abfragen sowohl an die ursprünglichen als auch an die übertragenen Tabellen ausgegeben, was zu jeweiligen Ergebnissätzen führt. Während die Daten übertragen werden, wird die Abfrage für jede Read-Abfrage, die durch die Persistenzschicht der mandantenfähigen Anwendung angefordert wird, durch die Abstraktionsschicht 220 an beide Speicherorte umgeleitet, und dann wird eine UNION-Abfrage auf die resultierenden Datensätze angewendet, und das zusammengesetzte Ergebnis wird als Ergebnis in Reaktion auf die Select-Abfrage zurückgegeben. Bei einer Ausführungsform werden Insert-Abfragen an die übertragenen Tabellen ausgegeben, so dass neue Datenbankeinträge nur in den übertragenen Tabellen in der angeforderten Implementierungsoption erstellt werden. Bei einer Ausführungsform werden Update- und Delete-Abfragen sowohl an die ursprünglichen als auch an die übertragenen Tabellen ausgegeben und in diesen widergespiegelt. Durch Annehmen von Abfragen in dieser Weise bleibt die Datenbank vollständig verfügbar und funktionsfähig, während die Daten übertragen werden. Der Vorteil der Online-Übertragung besteht darin, dass der abonnierende Mandant nicht bemerkt, dass die Daten von einer Implementierungsoption zu der nächsten verschoben werden, sodass der Dienst jederzeit verfügbar bleibt. Anderenfalls wäre eine Ausfallzeit für den Mandanten die Folge, was möglicherweise nicht akzeptabel wäre – insbesondere, wenn die Menge an zu verschiebenden Daten sehr groß ist, was zu Stunden oder einigen Tagen an Ausfallzeit führen könnte. Das Verfahren geht anschließend zu Schritt 550 über, in dem die mandantenfähige Anwendung 110 ermittelt, ob weitere Tabellen zu übertragen sind. Wenn weitere Tabellen verbleiben, kehrt das Verfahren zu Schritt 510 zurück, anderenfalls endet das Verfahren 500.
-
Bei einigen Ausführungsformen können die in dem Verfahren 500 dargestellten Übertragungen weiter verbessert werden, indem die Funktion IBM® FlashCopy® für höhere Datenübertragungsraten und einen geringeren Einfluss auf die Systemleistung während des Verarbeitens der Datenübertragung angeboten wird. (IBM und FlashCopy sind in vielen Ländern weltweit eingetragene Marken von International Business Machines Corporation.)
-
6 ist ein Ablaufplan, der ein Verfahren 600, das Schritt 450 entspricht, gemäß einer weiteren Ausführungsform der Erfindung darstellt. Bei einigen Ausführungsformen führt die mandantenfähige Anwendung 110 die Schritte in dem Verfahren 600 durch. Das Verfahren beginnt bei Schritt 610, in dem die mandantenfähige Anwendung 110 beginnt, eine Schleife auszuführen, die Schritte 620 bis 695 zum Umwandeln einer Mandantendatenbank für jede Tabelle, deren Eigner der anfordernde Mandant ist, von einer Implementierungsoption in eine andere Implementierungsoption beinhaltet. In Schritt 620 blockiert die mandantenfähige Anwendung 110 bei einigen Ausführungsformen den Zugriff auf die aktuelle Tabelle. Bei einigen Ausführungsformen wird das Blockieren des Zugriffs durch Einsetzen einer Kennung in der Abstraktionsschicht 220 erreicht, die den Zugriff auf die Tabelle einschränkt. Das Blockieren des Zugriffs auf die Tabelle (und ein nachfolgendes Wiederherstellen des Zugriffs) ist nur in Fällen erforderlich, in denen die aktuelle Implementierungsoption eine private Datenbank, deren Eigner der anfordernde Mandant ist, oder ein privates Schema in einer gemeinsam genutzten Datenbank ist. Das Blockieren des Zugriffs (und das nachfolgende Wiederherstellen des Zugriffs) ist bei Ausführungsformen optional, bei denen die aktuelle Implementierung ein gemeinsam genutztes Schema in einer gemeinsam genutzten Datenbank ist, da die Daten anderer Mandanten ebenfalls blockiert würden. Durch das Blockieren des Zugriffs auf die Tabelle bis zum Abschluss der Übertragung werden keine Modifizierungen zugelassen, sodass eine exakte Kopie der Datenbank übertragen wird. In Schritt 630 wählt die mandantenfähige Anwendung 110 Daten aus, die in der zu übertragenden Tabelle enthalten sind. Bei Ausführungsformen, bei denen die aktuelle Implementierungsoption eine private Datenbank ist, deren Eigner der anfordernde Mandant ist, wird eine Anweisung, die die Auswahl sämtlicher Daten anfordert, ausgegeben, um die Tabellendaten auszuwählen. Bei einer Ausführungsform handelt es sich bei der aktuellen Implementierungsoption um ein privates Schema in einer gemeinsam genutzten Datenbank, und es wird eine Anweisung ausgegeben, die sämtliche Daten aus der Schematabelle auswählt, wobei der anfordernde Mandant der Eigner des Schemas ist, und die Schemadaten werden aus der Metadatenablage 125 bezogen. Wenn es sich bei der Tabelle zum Beispiel um eine relationale Datenbank handelt, könnte eine SQL-Abfrage als „select * from Schema.Tabelle” geschrieben werden. Bei Ausführungsformen, bei denen die aktuelle Implementierung ein gemeinsam genutztes Schema in einer gemeinsam genutzten Datenbank ist, wird eine Anweisung ausgegeben, die sämtliche Daten auswählt, bei der der Eintrag in der Mandantenidentifikationsspalte den Mandantenidentifikationsdaten gleichkommt, die dem anfordernden Mandanten zugehörig sind, um die Daten auszuwählen, und die Mandantenidentifikationsdaten werden aus der Metadatenablage 125 bezogen. Wenn sich die Tabelle zum Beispiel in einer relationalen Datenbank befindet, könnte eine SQL-Abfrage als „select * from table where Mandant=<Mandant>” geschrieben werden.
-
Nachdem die Daten ausgewählt worden sind, geht das Verfahren zu Schritt 640 über, in dem die mandantenfähige Anwendung 110 je nach angeforderter Implementierungsoption eine Spalte einfügt oder löscht, die Mandantenidentifikationsdaten aus der Tabelle enthält, die aus der Select-Anweisung resultiert, die in Schritt 630 ausgeführt worden ist. Abhängig von den aktuellen und den angeforderten Implementierungsoptionen können Mandantenidentifikationsdaten erforderlich sein und müssen entsprechend behandelt werden. Bei Ausführungsformen, bei denen die aktuelle Implementierung ein gemeinsam genutztes Schema in einer gemeinsam genutzten Datenbank ist, wird die Mandantenidentifikationsspalte mit den in Schritt 630 ausgewählten Daten zurückgegeben. Die Zieldatenbank bei diesen Ausführungsformen erfordert keine Spalte, die diese Mandantenidentifikationsdaten enthält, und sie wird dementsprechend gelöscht. Bei Ausführungsformen, bei denen die aktuelle Implementierung ein gemeinsam genutztes Schema in einer gemeinsam genutzten Datenbank ist, kann die in Schritt 630 ausgegebene Select-Abfrage so modifiziert werden, dass die Spalte, die die Mandantenidentifikationsdaten enthält, nicht ausgewählt wird, wodurch die nachfolgende Löschung unnötig wird. Bei Ausführungsformen, bei denen das Ziel ein gemeinsam genutztes Schema in einer gemeinsam genutzten Datenbank ist, ist die Mandantenidentifikationsspalte erforderlich, um anzugeben, welcher Mandant Eigner der Daten ist. Auf diese Weise wird für jeden Datensatz in dem Ergebnissatz der Select-Anweisung, die in Schritt 630 durchgeführt worden ist, eine Spalte eingefügt, die die Mandantenidentifikationsdaten enthält, wobei die Mandantenidentifikationsdaten aus der Metadatenablage 125 bezogen werden.
-
Das Verfahren geht anschließend zu Schritt 650 über, in dem die mandantenfähige Anwendung 110 ermittelt, ob eine neue Datenstruktur erforderlich ist, um die Implementierungsumwandlung abzuschließen. Wenn keine neue Datenstruktur erforderlich ist, geht das Verfahren zu Schritt 670 über. Anderenfalls erstellt die mandantenfähige Anwendung 110 in Schritt 660 eine entsprechende Datenstruktur. Bei der Datenstruktur kann es sich um eines oder mehreres von einer neuen privaten Datenbank, deren Eigner der Mandant ist, einer neuen Tabelle in einer privaten Datenbank, deren Eigner der Mandant ist, einem neuen privaten Schema, dessen Eigner der Mandant ist, in einer gemeinsam genutzten Datenbank oder einer neuen Tabelle in einem privaten Schema, dessen Eigner der Mandant ist, in einer gemeinsam genutzten Datenbank handeln. Bei diesen Ausführungsformen bezieht die mandantenfähige Anwendung 110 die Mandantenidentifikationsdaten, die zum Erstellen der Datenstruktur erforderlich sind, aus der Metadatenablage 125.
-
Nachdem die entsprechende Datenstruktur erstellt worden ist, geht das Verfahren zu Schritt 670 über, in dem die mandantenfähige Anwendung 110 die Tabelle zu ihrer Zieldatenstruktur überträgt. Die Übertragung kann durch eine beliebige Anzahl von Mitteln durchgeführt werden, zum Beispiel durch Verschieben und Kopieren der Tabelle, ohne darauf beschränkt zu sein. Das Verfahren geht anschließend zu Schritt 680 über, der dafür sorgt, dass für jede Abfrage, die an die Tabellen ausgegeben wird, die übertragen werden, eine entsprechende Fehlermeldung zurückgegeben wird, bis die Übertragung abgeschlossen ist. Nachdem die Tabelle übertragen worden ist, geht das Verfahren zu Schritt 690 über, in dem die mandantenfähige Anwendung 110 den Zugriff auf die Tabelle wiederherstellt, sodass durch die Anwendungen des Mandanten auf die Tabelle zugegriffen werden kann. Bei einigen Ausführungsformen wird der Zugriff auf die Tabelle wiederhergestellt, indem die in der Abstraktionsschicht 220 gesetzte Kennung entfernt wird, die den Zugriff auf die Tabelle blockiert hat, sowie Daten in der Abstraktionsschicht 220 so modifiziert werden, dass die gewechselte Implementierung dem Mandanten zugeordnet wird. Bei einigen Ausführungsformen verwirft die mandantenfähige Anwendung 110 private Datenbanken wie auch Tabellen in einem privaten Schema aus der ursprünglichen Implementierung, da sie unter Umständen angesichts der gewechselten Implementierung nicht mehr erforderlich sind. Das Verfahren geht anschließend zu Schritt 695 über, in dem die mandantenfähige Anwendung 110 ermittelt, ob weitere Tabellen übertragen werden müssen, deren Eigner der anfordernde Mandant ist. Wenn weitere Tabellen vorhanden sind, kehrt das Verfahren zu Schritt 610 zurück. Anderenfalls endet das Verfahren.
-
Alternative Ausführungsformen des Verfahrens 600 beinhalten die Möglichkeit, keine „where”-Anweisungen der Art „where Mandant=<Mandant>” in Abfragen aufzunehmen, indem Datenbankansichten nach Mandanten für Implementierungen in Form eines gemeinsam genutzten Schemas in einer gemeinsam genutzten Datenbank erstellt werden. Diese Datenbankansichten können durch die Abstraktionsschicht 220 erstellt und während ihres Lebenszyklus von dieser verwaltet werden. Eine Datenbankansicht besteht aus gespeicherten Abfragen, auf die als virtuelle Tabelle in einer relationalen Datenbank zugegriffen werden kann, die aus dem Ergebnissatz einer Abfrage besteht. Anders als bei gewöhnlichen Tabellen (Basistabellen) in einer relationalen Datenbank bildet eine Ansicht keinen Teil des physischen Schemas, sondern es handelt sich um eine dynamische, virtuelle Tabelle, die aus Daten in der Datenbank berechnet oder zusammengestellt worden ist. Durch Ändern der Daten in einer Tabelle werden die Daten geändert, die bei nachfolgenden Aufrufen der Ansicht dargestellt werden. Bei einer weiteren Ausführungsform erfassen die Select-Abfragen möglicherweise nicht sämtliche Daten in einem einzelnen Schritt, sondern verarbeiten sie in Blöcken, wobei eine Reihe von Select-Abfragen ausgegeben wird, die demselben Entwurfskonzept folgend in mehreren Durchläufen jeweils einen ergänzenden Abschnitt der Daten abrufen.
-
Nachdem die Datenübertragung abgeschlossen ist, werden die Daten in dem Quellbereich in allen Fällen in geeigneter Weise freigegeben, indem die Datenbank-Ressourcen freigegeben werden, was in einigen Fallen bedeuten kann, dass die Datenbank verworfen wird, oder in anderen Fällen mit entsprechenden Drop-/Delete-Abfragen erfolgt.
-
Durch die Verwendung einer verteilten, redundanten Datenbankarchitektur und einer Abstraktionsschicht, wie hierin beschrieben, kann die physische Implementierung von mandantenfähigen Implementierungen gegenüber der mandantenfähigen Anwendung 110 verborgen werden. Durch Verbergen der Einzelheiten der Implementierung müssen die mandantenfähige Anwendung 110 und jeder der Dienste 340, die sie bietet, nicht jedes Mal umcodiert werden, wenn ein neuer Mandant einen Dienst abonniert oder eine Implementierungsumwandlung anfordert.
-
Es wird nun auf 7 Bezug genommen, in der eine veranschaulichende Cloud-Computing-Umgebung 750 dargestellt wird. Wie dargestellt, weist die Cloud-Computing-Umgebung 750 einen oder mehrere Cloud-Computing-Knoten 710 auf, mit denen lokale Datenverarbeitungseinheiten, die von Cloud-Kunden verwendet werden, wie zum Beispiel ein persönlicher digitaler Assistent (PDA) oder ein Mobiltelefon 754A, ein Desktop-Computer 754B, ein Laptop-Computer 754D und/oder ein KFZ-Computersystem 754N, Daten miteinander austauschen können. Die Knoten 710 können Daten miteinander austauschen. Ein Datenverarbeitungsknoten 710 kann dieselben Attribute wie der Server 102 und der Client-Computer 132 aufweisen, die jeweils Datenverarbeitungsknoten 710 in einer Cloud-Computing-Umgebung sein können. Sie können physisch oder virtuell in einem oder mehreren Netzwerken zusammengefasst werden (ohne Abbildung), zum Beispiel in privaten, Gemeinschafts-, öffentlichen oder Hybrid-Clouds, wie oben beschrieben, oder in einer Kombination davon. Dies ermöglicht der Cloud-Computing-Umgebung 750, Infrastruktur, Plattformen und/oder Software als Dienstleistungen anzubieten, für die ein Cloud-Kunde keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es versteht sich, dass die in 7 dargestellten Typen von Datenverarbeitungseinheiten 754A bis N lediglich der Veranschaulichung dienen sollen und dass die Datenverarbeitungsknoten 710 und die Cloud-Computing-Umgebung 750 mit einem beliebigen Typ einer computerisierten Einheit über einen beliebigen Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z. B. mithilfe eines Web-Browsers) Daten austauschen können.
-
Es wird nun auf 8 Bezug genommen, in der ein Satz funktionaler Abstraktionsschichten dargestellt wird, die durch die Cloud-Computing-Umgebung 750 (7) bereitgestellt werden. Es versteht sich im Vorhinein, dass die in 8 dargestellten Komponenten, Schichten und Funktionen lediglich der Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
Eine Hardware- und Software-Schicht 860 beinhaltet Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen Großrechner, in einem Beispiel IBM® zSeries®-Systeme; Server auf der Grundlage einer RISC-Architektur (Reduced Instruction Set Computer, Computer mit reduziertem Befehlssatz), in einem Beispiel IBM pSeries®-Systeme; IBM xSeries®-Systeme; IBM BladeCenter®-Systeme; Speichereinheiten, Netzwerke und Netzwerkkomponenten. Zu Beispielen für Software-Komponenten zählen Netzwerkanwendungs-Server-Software, in einem Beispiel die Anwendungs-Server-Software IBM WebSphere®; und Datenbank-Software, in einem Beispiel die Datenbank-Software IBM DB2®. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind in vielen Ländern weltweit eingetragene Marken von International Business Machines Corporation.)
-
Eine Virtualisierungsschicht 862 stellt eine Abstraktionsschicht bereit, von der die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server; virtueller Speicher; virtuelle Netzwerke, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme; und virtuelle Clients.
-
In einem Beispiel kann eine Verwaltungsschicht 864 die im Folgenden beschriebenen Funktionen bereitstellen. Ressourcen-Bereitstellung bietet eine dynamische Beschaffung von Datenverarbeitungs-Ressourcen und sonstigen Ressourcen, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung genutzt werden. Messung und Preisbildung stellen eine Kostenüberwachung während der Nutzung von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen aufweisen. Die Sicherheit stellt eine Identitätsüberprüfung für Cloud-Kunden und -Aufgaben wie auch Schutz für Daten und sonstige Ressourcen bereit. Ein Benutzerportal stellt einen Zugriff auf die Cloud-Computing-Umgebung für Kunden und Systemadministratoren bereit. Eine Dienstgüteverwaltung stellt eine Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die erforderlichen Dienstgütegrade erreicht werden. Eine Planung und Erfüllung von Dienstgütevereinbarungen (Service Level Agreement, SLA) stellt eine Vorbereitung für und eine Bereitstellung von Cloud-Computing-Ressourcen bereit, für die eine künftige Erfordernis gemäß einer SLA erwartet wird.
-
Eine Arbeitslastenschicht 866 stellt Beispiele für die Funktionalität bereit, für die die Cloud-Computing-Umgebung eingesetzt werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation; Software-Entwicklung und Lebenszyklusverwaltung; Bereitstellung von virtuellen Schulungen; Datenanalyseverarbeitung, Transaktionsverarbeitung; und Umwandlung von mandantenfähigen Datenbankimplementierungen.
-
Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Implementieren der angegebenen logischen Funktion(en) aufweist. Es ist außerdem zu beachten, dass bei einigen alternativen Implementierungen die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen implementiert werden können.
-
Das Vorstehende gilt zwar für Ausführungsformen der vorliegenden Erfindung, andere und sonstige Ausführungsformen der Erfindung können jedoch entwickelt werden, ohne von deren grundlegendem Umfang abzuweichen, und deren Umfang wird durch die nachfolgenden Ansprüche bestimmt.