DE112013001308T5 - Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung - Google Patents

Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung

Info

Publication number
DE112013001308T5
DE112013001308T5 DE112013001308.8T DE112013001308T DE112013001308T5 DE 112013001308 T5 DE112013001308 T5 DE 112013001308T5 DE 112013001308 T DE112013001308 T DE 112013001308T DE 112013001308 T5 DE112013001308 T5 DE 112013001308T5
Authority
DE
Germany
Prior art keywords
tenant
data store
table
data
shared
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112013001308.8T
Other languages
English (en)
Inventor
c/o IBM Deutschland RD GmbH Oberhofer Martin
c/o IBM Corporation Mandelstein Dan Jeffrey
c/o IBM Corporation Milman Ivan Matthew
c/o IBM Corporation Pandit Sushain
c/o IBM Corporation Wolfson Charles Daniel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US13/414,786 priority Critical patent/US9244951B2/en
Priority to US13/414,786 priority
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to PCT/IB2013/051398 priority patent/WO2013132377A1/en
Publication of DE112013001308T5 publication Critical patent/DE112013001308T5/de
Application status is Pending legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Abstract

Ein Verfahren, ein Computerprogrammprodukt und ein System 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, die einer Abstraktionsschicht zugehörig sind, um ein Zugreifen auf den modifizierten Datensatz zu ermöglichen.

Description

  • 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.

Claims (30)

  1. Computerimplementiertes Verfahren zum Verwalten von mandantenspezifischen Datensätzen in einem mandantenfähigen System, das aufweist: 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, die einer Abstraktionsschicht zugehörig sind, um ein Zugreifen auf den modifizierten Datensatz zu ermöglichen.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei der identifizierte Mandant der Eigner des physischen Datenspeichers ist und es sich bei dem physischen Datenspeicher entweder um einen privaten Datenspeicher oder um ein privates Schema in einem gemeinsam genutzten Datenspeicher handelt, wobei das Modifizieren des Datensatzes in dem physischen Datenspeicher aufweist: Erstellen einer Zieldatenstruktur, wobei es sich bei der Zieldatenstruktur entweder um einen privaten Datenspeicher oder um ein privates Schema in einem gemeinsam genutzten Datenspeicher handelt, wobei der identifizierte Mandant der Eigner der Zieldatenstruktur ist; Übertragen einer ersten Tabelle in dem physischen Datenspeicher an die Zieldatenstruktur; und während des Übertragens der ersten Tabelle an die Zieldatenstruktur: beim Empfangen einer Select-Abfrage Ausgeben der Select-Abfrage an die Tabelle in dem physischen Datenspeicher und die übertragene Tabelle in der Zieldatenstruktur, wobei eine Union-Abfrage auf jeden resultierenden Datensatz angewendet wird und als Satz von Ergebnissen in Reaktion auf die Select-Abfrage zurückgegeben wird; beim Empfangen einer Insert-Abfrage Ausgeben der Insert-Abfrage an die übertragene Tabelle in der Zieldatenstruktur; und beim Empfangen einer Update-Abfrage oder einer Delete-Abfrage Ausgeben der Update- oder Delete-Abfrage an die erste Tabelle und die übertragene Tabelle in der Zieldatenstruktur.
  3. Computerimplementiertes Verfahren nach Anspruch 2, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei sich die erste Tabelle in einem privaten Schema, dessen Eigner der identifizierte Mandant ist, in dem physischen Datenspeicher befindet, wobei es sich bei der Zieldatenstruktur um einen privaten Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist.
  4. Computerimplementiertes Verfahren nach Anspruch 2, wobei es sich bei dem physischen Datenspeicher um einen privaten Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist, wobei es sich bei der Zieldatenstruktur um ein privates Schema, dessen Eigner der identifizierte Mandant ist, in einem gemeinsam genutzten physischen Datenspeicher handelt.
  5. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Modifizieren des Datensatzes in dem physischen Datenspeicher aufweist: Auswählen von Daten aus einer ersten Tabelle in dem physischen Datenspeicher; Übertragen der ausgewählten Daten an eine Zieldatenstruktur, wobei es sich bei der Zieldatenstruktur entsprechend dem zweiten Typ der mandantenfähigen Implementierung um eines von einem privaten physischen Datenspeicher, einem privaten Schema in einem gemeinsam genutzten Datenspeicher oder einem gemeinsam genutzten Schema in einem gemeinsam genutzten Datenspeicher handelt; und während des Übertragens der ausgewählten Daten an die Zieldatenstruktur beim Empfangen einer Abfrage, die an die erste Tabelle gerichtet ist, Zurückgeben einer Fehlermeldung.
  6. Computerimplementiertes Verfahren nach Anspruch 5, wobei es sich bei der Zieldatenstruktur um ein gemeinsam genutztes Schema in einem gemeinsam genutzten physischen Datenspeicher handelt, wobei es sich bei dem physischen Datenspeicher um einen privaten physischen Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist, wobei das Verfahren des Weiteren aufweist: vor dem Auswählen der Daten aus der ersten Tabelle Blockieren des Zugriffs auf die erste Tabelle; nach dem Auswählen der Daten aus der ersten Tabelle Einfügen der Mandantenidentifikations-Metadaten in eine neue Spalte in dem aus dem Auswählen der Daten aus der ersten Tabelle resultierenden Datensatz; und Wiederherstellen des Zugriffs auf die erste Tabelle.
  7. Computerimplementiertes Verfahren nach Anspruch 5, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei es sich bei der Zieldatenstruktur um ein gemeinsam genutztes Schema in einem gemeinsam genutzten physischen Datenspeicher handelt, wobei sich die erste Tabelle in einem privaten Schema, dessen Eigner der identifizierte Mandant ist, in dem physischen Datenspeicher befindet, wobei das Verfahren des Weiteren aufweist: vor dem Auswählen der Daten aus der ersten Tabelle Blockieren des Zugriffs auf die erste Tabelle; nach dem Auswählen der Daten aus der ersten Tabelle Einfügen der Mandantenidentifikations-Metadaten in eine neue Spalte in dem aus dem Auswählen der Daten aus der ersten Tabelle resultierenden Datensatz; und Wiederherstellen des Zugriffs auf die erste Tabelle.
  8. Computerimplementiertes Verfahren nach Anspruch 5, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei sich die erste Tabelle in einem gemeinsam genutzten Schema in dem physischen Datenspeicher befindet, wobei es sich bei der Zieldatenstruktur um einen privaten Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist, wobei der identifizierte Mandant der Eigner der ausgewählten Daten ist, wobei das Verfahren des Weiteren aufweist: nach dem Auswählen der Daten von dem ersten Mandanten, wenn eine Spalte ausgewählt wird, die eine Mandantenidentifikation enthält, Entfernen der Spalte, die Mandantenidentifikations-Metadaten enthält; vor dem Übertragen der Daten an die Zieldatenstruktur Erstellen der Zieldatenstruktur.
  9. Computerimplementiertes Verfahren nach Anspruch 5, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei sich die erste Tabelle in einem gemeinsam genutzten Schema in dem physischen Datenspeicher befindet, wobei es sich bei der Zieldatenstruktur um ein privates Schema, dessen Eigner der identifizierte Mandant ist, in einem gemeinsam genutzten Datenspeicher handelt, wobei der identifizierte Mandant der Eigner der ausgewählten Daten ist, wobei das Verfahren des Weiteren aufweist: nach dem Auswählen der Daten von dem ersten Mandanten, wenn eine Spalte ausgewählt wird, die eine Mandantenidentifikation enthält, Entfernen der Spalte, die Mandantenidentifikations-Metadaten enthält; vor dem Übertragen der Daten an die Zieldatenstruktur Erstellen der Zieldatenstruktur.
  10. Computerimplementiertes Verfahren nach Anspruch 1, wobei eine Anwendung, die auf den mandantenspezifischen Datensatz in dem ersten Typ der mandantenfähigen Implementierung zugreift, auf den mandantenspezifischen Datensatz in dem zweiten Typ der mandantenfähigen Implementierung zugreifen kann, ohne Modifizierungen des Codes zu erfordern, wobei Anwendungen, die auf Daten in dem mandantenspezifischen Datensatz in einer mandantenfähigen Implementierung zugreifen, keine Kenntnis über eine physische Implementierung des mandantenspezifischen Datensatzes haben.
  11. Computerprogrammprodukt zum Verwalten von mandantenspezifischen Datensätzen in einem mandantenfähigen System, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das einen computerlesbaren Programmcode aufweist, der darin verkörpert ist, wobei der computerlesbare Programmcode aufweist: computerlesbaren Programmcode, der dazu eingerichtet ist, 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; computerlesbaren Programmcode, der dazu eingerichtet ist, Mandantenidentifikations-Metadaten abzurufen, die einen Mandanten identifizieren, der die Anforderung stellt; computerlesbaren Programmcode, der dazu eingerichtet ist, den Datensatz in dem physischen Datenspeicher auf der Grundlage des zweiten Typs der mandantenfähigen Implementierung zu modifizieren; und computerlesbaren Programmcode, der dazu eingerichtet ist, Metadaten zu modifizieren, die einer Abstraktionsschicht zugehörig sind, um ein Zugreifen auf den modifizierten Datensatz zu ermöglichen.
  12. Computerprogrammprodukt nach Anspruch 11, wobei der identifizierte Mandant der Eigner des physischen Datenspeichers ist und es sich bei dem physischen Datenspeicher entweder um einen privaten Datenspeicher oder um ein privates Schema in einem gemeinsam genutzten Datenspeicher handelt, wobei das Modifizieren des Datensatzes in dem physischen Datenspeicher aufweist: Erstellen einer Zieldatenstruktur, wobei es sich bei der Zieldatenstruktur entweder um einen privaten Datenspeicher oder um ein privates Schema in einem gemeinsam genutzten Datenspeicher handelt, wobei der identifizierte Mandant der Eigner der Zieldatenstruktur ist; Übertragen einer ersten Tabelle in dem physischen Datenspeicher an die Zieldatenstruktur; und während des Übertragens der ersten Tabelle an die Zieldatenstruktur: beim Empfangen einer Select-Abfrage Ausgeben der Select-Abfrage an die Tabelle in dem physischen Datenspeicher und die übertragene Tabelle in der Zieldatenstruktur, wobei eine Union-Abfrage auf jeden resultierenden Datensatz angewendet wird und als Satz von Ergebnissen in Reaktion auf die Select-Abfrage zurückgegeben wird; beim Empfangen einer Insert-Abfrage Ausgeben der Insert-Abfrage an die übertragene Tabelle in der Zieldatenstruktur; und beim Empfangen einer Update-Abfrage oder einer Delete-Abfrage Ausgeben der Update- oder Delete-Abfrage an die erste Tabelle und die übertragene Tabelle in der Zieldatenstruktur.
  13. Computerprogrammprodukt nach Anspruch 12, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei sich die erste Tabelle in einem privaten Schema, dessen Eigner der identifizierte Mandant ist, in dem physischen Datenspeicher befindet, wobei es sich bei der Zieldatenstruktur um einen privaten Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist.
  14. Computerprogrammprodukt nach Anspruch 12, wobei es sich bei dem physischen Datenspeicher um einen privaten Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist, wobei es sich bei der Zieldatenstruktur um ein privates Schema, dessen Eigner der identifizierte Mandant ist, in einem gemeinsam genutzten physischen Datenspeicher handelt.
  15. Computerprogrammprodukt nach Anspruch 11, wobei das Modifizieren des Datensatzes in dem physischen Datenspeicher aufweist: Auswählen von Daten aus einer ersten Tabelle in dem physischen Datenspeicher; Übertragen der ausgewählten Daten an eine Zieldatenstruktur, wobei es sich bei der Zieldatenstruktur entsprechend dem zweiten Typ der mandantenfähigen Implementierung um eines von einem privaten physischen Datenspeicher, einem privaten Schema in einem gemeinsam genutzten Datenspeicher oder einem gemeinsam genutzten Schema in einem gemeinsam genutzten Datenspeicher handelt; und während des Übertragens der ausgewählten Daten an die Zieldatenstruktur beim Empfangen einer Abfrage, die an die erste Tabelle gerichtet ist, Zurückgeben einer Fehlermeldung.
  16. Computerprogrammprodukt nach Anspruch 15, wobei es sich bei der Zieldatenstruktur um ein gemeinsam genutztes Schema in einem gemeinsam genutzten physischen Datenspeicher handelt, wobei es sich bei dem physischen Datenspeicher um einen privaten physischen Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist, wobei das Verfahren des Weiteren aufweist: vor dem Auswählen der Daten aus der ersten Tabelle Blockieren des Zugriffs auf die erste Tabelle; nach dem Auswählen der Daten aus der ersten Tabelle Einfügen der Mandantenidentifikations-Metadaten in eine neue Spalte in dem aus dem Auswählen der Daten aus der ersten Tabelle resultierenden Datensatz; und Wiederherstellen des Zugriffs auf die erste Tabelle.
  17. Computerprogrammprodukt nach Anspruch 15, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei es sich bei der Zieldatenstruktur um ein gemeinsam genutztes Schema in einem gemeinsam genutzten physischen Datenspeicher handelt, wobei sich die erste Tabelle in einem privaten Schema, dessen Eigner der identifizierte Mandant ist, in dem physischen Datenspeicher befindet, wobei das Verfahren des Weiteren aufweist: vor dem Auswählen der Daten aus der ersten Tabelle Blockieren des Zugriffs auf die erste Tabelle; nach dem Auswählen der Daten aus der ersten Tabelle Einfügen der Mandantenidentifikations-Metadaten in eine neue Spalte in dem aus dem Auswählen der Daten aus der ersten Tabelle resultierenden Datensatz; und Wiederherstellen des Zugriffs auf die erste Tabelle.
  18. Computerprogrammprodukt nach Anspruch 15, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei sich die erste Tabelle in einem gemeinsam genutzten Schema in dem physischen Datenspeicher befindet, wobei es sich bei der Zieldatenstruktur um einen privaten Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist, wobei der identifizierte Mandant der Eigner der ausgewählten Daten ist, wobei das Verfahren des Weiteren aufweist: nach dem Auswählen der Daten von dem ersten Mandanten, wenn eine Spalte ausgewählt wird, die eine Mandantenidentifikation enthält, Entfernen der Spalte, die Mandantenidentifikations-Metadaten enthält; vor dem Übertragen der Daten an die Zieldatenstruktur Erstellen der Zieldatenstruktur.
  19. Computerprogrammprodukt nach Anspruch 15, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei sich die erste Tabelle in einem gemeinsam genutzten Schema in dem physischen Datenspeicher befindet, wobei es sich bei der Zieldatenstruktur um ein privates Schema, dessen Eigner der identifizierte Mandant ist, in einem gemeinsam genutzten Datenspeicher handelt, wobei der identifizierte Mandant der Eigner der ausgewählten Daten ist, wobei das Verfahren des Weiteren aufweist: nach dem Auswählen der Daten von dem ersten Mandanten, wenn eine Spalte ausgewählt wird, die eine Mandantenidentifikation enthält, Entfernen der Spalte, die Mandantenidentifikations-Metadaten enthält; vor dem Übertragen der Daten an die Zieldatenstruktur Erstellen der Zieldatenstruktur.
  20. Computerprogrammprodukt nach Anspruch 11, wobei eine Anwendung, die auf den mandantenspezifischen Datensatz in dem ersten Typ der mandantenfähigen Implementierung zugreift, auf den mandantenspezifischen Datensatz in dem zweiten Typ der mandantenfähigen Implementierung zugreifen kann, ohne Modifizierungen des Codes zu erfordern, wobei Anwendungen, die auf Daten in dem mandantenspezifischen Datensatz in einer mandantenfähigen Implementierung zugreifen, keine Kenntnis über eine physische Implementierung des mandantenspezifischen Datensatzes haben.
  21. System, das aufweist: einen oder mehrere Computerprozessoren; einen Arbeitsspeicher, der ein Programm enthält, das dazu eingerichtet ist, wenn es durch den einen oder die mehreren Computerprozessoren ausgeführt wird, einen Vorgang zum Verwalten von mandantenspezifischen Datensätzen in einem mandantenfähigen System durchzuführen, wobei der Vorgang aufweist: 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, die einer Abstraktionsschicht zugehörig sind, um ein Zugreifen auf den modifizierten Datensatz zu ermöglichen.
  22. System nach Anspruch 21, wobei der identifizierte Mandant der Eigner des physischen Datenspeichers ist und es sich bei dem physischen Datenspeicher entweder um einen privaten Datenspeicher oder um ein privates Schema in einem gemeinsam genutzten Datenspeicher handelt, wobei das Modifizieren des Datensatzes in dem physischen Datenspeicher aufweist: Erstellen einer Zieldatenstruktur, wobei es sich bei der Zieldatenstruktur entweder um einen privaten Datenspeicher oder um ein privates Schema in einem gemeinsam genutzten Datenspeicher handelt, wobei der identifizierte Mandant der Eigner der Zieldatenstruktur ist; Übertragen einer ersten Tabelle in dem physischen Datenspeicher an die Zieldatenstruktur; und während des Übertragens der ersten Tabelle an die Zieldatenstruktur: beim Empfangen einer Select-Abfrage Ausgeben der Select-Abfrage an die Tabelle in dem physischen Datenspeicher und die übertragene Tabelle in der Zieldatenstruktur, wobei eine Union-Abfrage auf jeden resultierenden Datensatz angewendet wird und als Satz von Ergebnissen in Reaktion auf die Select-Abfrage zurückgegeben wird; beim Empfangen einer Insert-Abfrage Ausgeben der Insert-Abfrage an die übertragene Tabelle in der Zieldatenstruktur; und beim Empfangen einer Update-Abfrage oder einer Delete-Abfrage Ausgeben der Update- oder Delete-Abfrage an die erste Tabelle und die übertragene Tabelle in der Zieldatenstruktur.
  23. System nach Anspruch 22, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei sich die erste Tabelle in einem privaten Schema, dessen Eigner der identifizierte Mandant ist, in dem physischen Datenspeicher befindet, wobei es sich bei der Zieldatenstruktur um einen privaten Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist.
  24. System nach Anspruch 22, wobei es sich bei dem physischen Datenspeicher um einen privaten Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist, wobei es sich bei der Zieldatenstruktur um ein privates Schema, dessen Eigner der identifizierte Mandant ist, in einem gemeinsam genutzten physischen Datenspeicher handelt.
  25. System nach Anspruch 21, wobei das Modifizieren des Datensatzes in dem physischen Datenspeicher aufweist: Auswählen von Daten aus einer ersten Tabelle in dem physischen Datenspeicher; Übertragen der ausgewählten Daten an eine Zieldatenstruktur, wobei es sich bei der Zieldatenstruktur entsprechend dem zweiten Typ der mandantenfähigen Implementierung um eines von einem privaten physischen Datenspeicher, einem privaten Schema in einem gemeinsam genutzten Datenspeicher oder einem gemeinsam genutzten Schema in einem gemeinsam genutzten Datenspeicher handelt; und während des Übertragens der ausgewählten Daten an die Zieldatenstruktur beim Empfangen einer Abfrage, die an die erste Tabelle gerichtet ist, Zurückgeben einer Fehlermeldung.
  26. System nach Anspruch 25, wobei es sich bei der Zieldatenstruktur um ein gemeinsam genutztes Schema in einem gemeinsam genutzten physischen Datenspeicher handelt, wobei es sich bei dem physischen Datenspeicher um einen privaten physischen Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist, wobei der Vorgang des Weiteren aufweist: vor dem Auswählen der Daten aus der ersten Tabelle Blockieren des Zugriffs auf die erste Tabelle; nach dem Auswählen der Daten aus der ersten Tabelle Einfügen der Mandantenidentifikations-Metadaten in eine neue Spalte in dem aus dem Auswählen der Daten aus der ersten Tabelle resultierenden Datensatz; und Wiederherstellen des Zugriffs auf die erste Tabelle.
  27. System nach Anspruch 25, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei es sich bei der Zieldatenstruktur um ein gemeinsam genutztes Schema in einem gemeinsam genutzten physischen Datenspeicher handelt, wobei sich die erste Tabelle in einem privaten Schema, dessen Eigner der identifizierte Mandant ist, in dem physischen Datenspeicher befindet, wobei der Vorgang des Weiteren aufweist: vor dem Auswählen der Daten aus der ersten Tabelle Blockieren des Zugriffs auf die erste Tabelle; nach dem Auswählen der Daten aus der ersten Tabelle Einfügen der Mandantenidentifikations-Metadaten in eine neue Spalte in dem aus dem Auswählen der Daten aus der ersten Tabelle resultierenden Datensatz; und Wiederherstellen des Zugriffs auf die erste Tabelle.
  28. System nach Anspruch 25, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei sich die erste Tabelle in einem gemeinsam genutzten Schema in dem physischen Datenspeicher befindet, wobei es sich bei der Zieldatenstruktur um einen privaten Datenspeicher handelt, dessen Eigner der identifizierte Mandant ist, wobei der identifizierte Mandant der Eigner der ausgewählten Daten ist, wobei der Vorgang des Weiteren aufweist: nach dem Auswählen der Daten von dem ersten Mandanten, wenn eine Spalte ausgewählt wird, die eine Mandantenidentifikation enthält, Entfernen der Spalte, die Mandantenidentifikations-Metadaten enthält; vor dem Übertragen der Daten an die Zieldatenstruktur Erstellen der Zieldatenstruktur.
  29. System nach Anspruch 25, wobei es sich bei dem physischen Datenspeicher um einen gemeinsam genutzten Datenspeicher handelt, wobei sich die erste Tabelle in einem gemeinsam genutzten Schema in dem physischen Datenspeicher befindet, wobei es sich bei der Zieldatenstruktur um ein privates Schema, dessen Eigner der identifizierte Mandant ist, in einem gemeinsam genutzten Datenspeicher handelt, wobei der identifizierte Mandant der Eigner der ausgewählten Daten ist, wobei der Vorgang des Weiteren aufweist: nach dem Auswählen der Daten von dem ersten Mandanten, wenn eine Spalte ausgewählt wird, die eine Mandantenidentifikation enthält, Entfernen der Spalte, die Mandantenidentifikations-Metadaten enthält; vor dem Übertragen der Daten an die Zieldatenstruktur Erstellen der Zieldatenstruktur.
  30. System nach Anspruch 21, wobei eine Anwendung, die auf den mandantenspezifischen Datensatz in dem ersten Typ der mandantenfähigen Implementierung zugreift, auf den mandantenspezifischen Datensatz in dem zweiten Typ der mandantenfähigen Implementierung zugreifen kann, ohne eine Modifizierung des Codes zu erfordern, wobei Anwendungen, die auf Daten in dem mandantenspezifischen Datensatz in einer mandantenfähigen Implementierung zugreifen, keine Kenntnis über eine physische Implementierung des mandantenspezifischen Datensatzes haben.
DE112013001308.8T 2012-03-08 2013-02-21 Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung Pending DE112013001308T5 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US13/414,786 US9244951B2 (en) 2012-03-08 2012-03-08 Managing tenant-specific data sets in a multi-tenant environment
US13/414,786 2012-03-08
PCT/IB2013/051398 WO2013132377A1 (en) 2012-03-08 2013-02-21 Managing tenant-specific data sets in a multi-tenant environment

Publications (1)

Publication Number Publication Date
DE112013001308T5 true DE112013001308T5 (de) 2014-12-11

Family

ID=49114988

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013001308.8T Pending DE112013001308T5 (de) 2012-03-08 2013-02-21 Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung

Country Status (6)

Country Link
US (2) US9244951B2 (de)
JP (1) JP6188732B2 (de)
CN (1) CN104160381B (de)
DE (1) DE112013001308T5 (de)
GB (1) GB2514968A (de)
WO (1) WO2013132377A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015214253A1 (de) * 2015-07-28 2017-02-02 Siemens Aktiengesellschaft Verfahren zur Einbringung einer Multimandantenfähigkeit in bestehende Applikationen

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130050205A (ko) * 2011-11-07 2013-05-15 한국전자통신연구원 SaaS 플랫폼 및 이를 이용한 다중 테넌트 지원을 위한 서비스 프로비저닝 방법
US9244951B2 (en) 2012-03-08 2016-01-26 International Business Machines Corporation Managing tenant-specific data sets in a multi-tenant environment
US20130282761A1 (en) * 2012-04-18 2013-10-24 Salesforce.Com, Inc. System and method for entity shape abstraction in an on demand environment
US9015106B2 (en) * 2012-04-30 2015-04-21 Dell Products, Lp Cloud based master data management system and method therefor
US9158782B2 (en) 2012-04-30 2015-10-13 Dell Products, Lp Cloud based master data management system with configuration advisor and method therefore
US9606995B2 (en) * 2012-04-30 2017-03-28 Dell Products, Lp Cloud based master data management system with remote data store and method therefor
US10255344B2 (en) * 2012-06-04 2019-04-09 [24]7.ai, Inc. Multi-tenant data integration
US9509571B1 (en) * 2012-07-25 2016-11-29 NetSuite Inc. First-class component extensions for multi-tenant environments
WO2014021874A1 (en) * 2012-07-31 2014-02-06 Hewlett-Packard Development Company, L.P. Supporting multi-tenancy in a federated data management system
CN103595551B (zh) * 2012-08-17 2016-12-21 杭州华三通信技术有限公司 基于mqc实现网络虚拟化的网络管理方法和装置
US10225164B2 (en) * 2012-09-07 2019-03-05 Oracle International Corporation System and method for providing a cloud computing environment
TWI490716B (zh) * 2012-12-07 2015-07-01 Ind Tech Res Inst 多租戶應用程序的開發方法、資料存取方法與系統
US9477710B2 (en) * 2013-01-23 2016-10-25 Microsoft Technology Licensing, Llc Isolating resources and performance in a database management system
US20140214886A1 (en) * 2013-01-29 2014-07-31 ParElastic Corporation Adaptive multi-client saas database
US9596279B2 (en) 2013-02-08 2017-03-14 Dell Products L.P. Cloud-based streaming data receiver and persister
US9442993B2 (en) * 2013-02-11 2016-09-13 Dell Products L.P. Metadata manager for analytics system
US9141680B2 (en) 2013-02-11 2015-09-22 Dell Products L.P. Data consistency and rollback for cloud analytics
US9191432B2 (en) 2013-02-11 2015-11-17 Dell Products L.P. SAAS network-based backup system
US9912521B2 (en) * 2013-03-13 2018-03-06 Dell Products L.P. Systems and methods for managing connections in an orchestrated network
US9772835B1 (en) * 2013-03-13 2017-09-26 Amazon Technologies, Inc. Modification of program code for execution in a multi-tenant or distributed computing environment
TWI506452B (zh) * 2013-03-18 2015-11-01 Quanta Comp Inc 雲端平台及其資料交換方法
US9218387B2 (en) 2013-05-22 2015-12-22 Dell Products, Lp Cloud based master data management system and method therefor
US20140372484A1 (en) * 2013-06-17 2014-12-18 Salesforce.Com, Inc. Database multiplexing architectures
US9183074B2 (en) 2013-06-21 2015-11-10 Dell Products, Lp Integration process management console with error resolution interface
US10027535B1 (en) * 2013-09-27 2018-07-17 Juniper Networks, Inc. Systems and methods for managing device configurations at various levels of abstraction
US20160274940A1 (en) * 2013-10-16 2016-09-22 Hewlett Packard Enterprise Development Lp Regulating enterprise database warehouse resource usage
US20150213285A1 (en) * 2014-01-24 2015-07-30 Dante Consulting, Inc. Configuration of partition relationships
JP2015204087A (ja) * 2014-04-16 2015-11-16 キヤノン株式会社 管理システム及び管理方法
JP6362080B2 (ja) 2014-04-16 2018-07-25 キヤノン株式会社 管理システムおよび管理方法
US10356026B2 (en) 2014-04-25 2019-07-16 Entit Software Llc Data management in a distributed computing environment
US10333979B1 (en) * 2014-06-10 2019-06-25 Amazon Technologies, Inc. Multi-tenant network data validation service
US9438673B2 (en) * 2014-07-16 2016-09-06 Microsoft Technology Licensing, Llc Dynamic update streams for real time provisioning
US10303553B2 (en) 2014-07-28 2019-05-28 Entit Software Llc Providing data backup
US9471803B2 (en) * 2014-08-07 2016-10-18 Emc Corporation System and method for secure multi-tenancy in an operating system of a storage system
US9395967B2 (en) * 2014-11-03 2016-07-19 International Business Machines Corporation Workload deployment density management for a multi-stage computing architecture implemented within a multi-tenant computing environment
US10338910B2 (en) * 2015-01-05 2019-07-02 Entit Software Llc Multi-tenant upgrading
US9853873B2 (en) 2015-01-10 2017-12-26 Cisco Technology, Inc. Diagnosis and throughput measurement of fibre channel ports in a storage area network environment
US10410155B2 (en) 2015-05-01 2019-09-10 Microsoft Technology Licensing, Llc Automatic demand-driven resource scaling for relational database-as-a-service
US10222986B2 (en) * 2015-05-15 2019-03-05 Cisco Technology, Inc. Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system
US10063451B2 (en) * 2015-09-28 2018-08-28 Juniper Networks, Inc. Providing application metadata using export protocols in computer networks
CN105915470B (zh) * 2016-01-27 2019-05-21 无锡华云数据技术服务有限公司 一种基于Linux流量控制的弹性带宽配置方法
US10140172B2 (en) 2016-05-18 2018-11-27 Cisco Technology, Inc. Network-aware storage repairs
US10120734B1 (en) * 2016-08-29 2018-11-06 Equinix, Inc. Application programming interface and services engine with application-level multi-tenancy
US10243823B1 (en) 2017-02-24 2019-03-26 Cisco Technology, Inc. Techniques for using frame deep loopback capabilities for extended link diagnostics in fibre channel storage area networks
US10254991B2 (en) 2017-03-06 2019-04-09 Cisco Technology, Inc. Storage area network based extended I/O metrics computation for deep insight into application performance
US20180268154A1 (en) * 2017-03-16 2018-09-20 Sap Se Tenant table sharing with content separation
US10437795B2 (en) 2017-05-12 2019-10-08 Sap Se Upgrading systems with changing constraints
US10185552B2 (en) 2017-05-12 2019-01-22 Sap Se Enforcing content constraints on delivery and end user changes
US10268472B2 (en) 2017-05-16 2019-04-23 Sap Se Upgrading systems with replicated data
US10303534B2 (en) 2017-07-20 2019-05-28 Cisco Technology, Inc. System and method for self-healing of application centric infrastructure fabric memory
US10404596B2 (en) 2017-10-03 2019-09-03 Cisco Technology, Inc. Dynamic route profile storage in a hardware trie routing table
US10482080B2 (en) 2017-10-26 2019-11-19 Sap Se Exchanging shared containers and adapting tenants in multi-tenancy database systems
US20190129997A1 (en) * 2017-10-26 2019-05-02 Sap Se Data separation and write redirection in multi-tenancy database systems
US10452646B2 (en) 2017-10-26 2019-10-22 Sap Se Deploying changes in a multi-tenancy database system
CN108093026A (zh) * 2017-11-17 2018-05-29 阿里巴巴集团控股有限公司 多租户请求的处理方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590669B2 (en) * 2004-04-06 2009-09-15 Microsoft Corporation Managing client configuration data
US20080239985A1 (en) 2007-03-30 2008-10-02 International Business Machines Corporation Method and apparatus for a services model based provisioning in a multitenant environment
CN101639835A (zh) * 2008-07-30 2010-02-03 国际商业机器公司 多租户场景中应用数据库分区的方法和装置
US9177271B2 (en) 2008-08-14 2015-11-03 Hewlett-Packard Development Company, L.P. Heterogeneous information technology (IT) infrastructure management orchestration
US8576218B2 (en) 2008-12-18 2013-11-05 Microsoft Corporation Bi-directional update of a grid and associated visualizations
US9208188B2 (en) * 2009-02-17 2015-12-08 Microsoft Technology Licensing, Llc Tenant management of a hosted multi-tenant application
US20100262632A1 (en) * 2009-04-14 2010-10-14 Microsoft Corporation Data transfer from on-line to on-premise deployment
JP2011113103A (ja) 2009-11-24 2011-06-09 Hitachi Ltd マルチテナント型コンピュータシステム
WO2011111532A1 (ja) 2010-03-10 2011-09-15 日本電気株式会社 データベースシステム
CN102236762A (zh) 2010-04-30 2011-11-09 国际商业机器公司 用于处理对多租户应用的文件访问的方法和文件代理装置
US9275160B2 (en) * 2010-05-20 2016-03-01 Salesforce.Com, Inc. Performing an upgrade in a multi-tenant database system environment
CN102255933B (zh) 2010-05-20 2016-03-30 中兴通讯股份有限公司 云服务中介、云计算方法及云系统
US20110302277A1 (en) * 2010-06-07 2011-12-08 Salesforce.Com, Inc. Methods and apparatus for web-based migration of data in a multi-tenant database system
US8539078B2 (en) 2010-07-08 2013-09-17 International Business Machines Corporation Isolating resources between tenants in a software-as-a-service system using the estimated costs of service requests
US8739157B2 (en) * 2010-08-26 2014-05-27 Adobe Systems Incorporated System and method for managing cloud deployment configuration of an application
JP5476261B2 (ja) * 2010-09-14 2014-04-23 株式会社日立製作所 マルチテナント型情報処理システム、管理サーバ及び構成管理方法
US8386501B2 (en) * 2010-10-20 2013-02-26 Microsoft Corporation Dynamically splitting multi-tenant databases
US8875122B2 (en) * 2010-12-30 2014-10-28 Sap Se Tenant move upgrade
US9613092B2 (en) * 2010-12-31 2017-04-04 Microsoft Technology Licensing, Llc Allocation of tenants to database services
US9430505B2 (en) * 2011-04-18 2016-08-30 Infosys Limited Automated data warehouse migration
US9244951B2 (en) 2012-03-08 2016-01-26 International Business Machines Corporation Managing tenant-specific data sets in a multi-tenant environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015214253A1 (de) * 2015-07-28 2017-02-02 Siemens Aktiengesellschaft Verfahren zur Einbringung einer Multimandantenfähigkeit in bestehende Applikationen

Also Published As

Publication number Publication date
US20130238641A1 (en) 2013-09-12
WO2013132377A1 (en) 2013-09-12
US9244951B2 (en) 2016-01-26
US20130238557A1 (en) 2013-09-12
CN104160381B (zh) 2017-05-17
JP6188732B2 (ja) 2017-08-30
US9251183B2 (en) 2016-02-02
CN104160381A (zh) 2014-11-19
GB201416925D0 (en) 2014-11-12
JP2015513153A (ja) 2015-04-30
GB2514968A (en) 2014-12-10

Similar Documents

Publication Publication Date Title
US9063789B2 (en) Hybrid cloud integrator plug-in components
US9009697B2 (en) Hybrid cloud integrator
US8200705B2 (en) Method and apparatus for applying database partitioning in a multi-tenancy scenario
US8745242B2 (en) Cloud computing roaming services
US8914469B2 (en) Negotiating agreements within a cloud computing environment
US8356274B2 (en) System and methods to create a multi-tenancy software as a service application
US9110976B2 (en) Supporting compliance in a cloud environment
US9075788B1 (en) Account state simulation service for cloud computing environments
US20130031551A1 (en) On-boarding applications to a cloud
US8904382B2 (en) Creating instances of cloud computing environments
US9460176B2 (en) In-memory database for multi-tenancy
US8782762B2 (en) Building data security in a networked computing environment
US8396989B2 (en) Resource planning and data interchange functionality within a cloud computing environment
US9946578B2 (en) Managing the persistent data of a pre-installed application in an elastic virtual machine instance
US10067940B2 (en) Enhanced storage quota management for cloud computing systems
US20110314069A1 (en) Data lifecycle management within a cloud computing environment
US20150178052A1 (en) Automated experimentation platform
US20140189125A1 (en) Querying and managing computing resources in a networked computing environment
US9225604B2 (en) Mapping requirements to a system topology in a networked computing environment
US8881244B2 (en) Authorizing computing resource access based on calendar events in a networked computing environment
US9104613B2 (en) Disaster recovery in a networked computing environment
CN103226489A (zh) 用于在计算环境中创建虚拟单元的方法和系统
US8793378B2 (en) Identifying services and associated capabilities in a networked computing environment
US9253053B2 (en) Transparently enforcing policies in hadoop-style processing infrastructures
JP6188732B2 (ja) マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0017300000

R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000