Hohe Performance und Skalierbarkeit von verteilten Anwendungen • Unterstützung heterogener Netzwerke, • flexible Gestaltung der Datenhaltung (lokal/remote gemischt), • minimaler Konfigurationsaufwand, • automatischer Systembetrieb einschließlich Recovery. Bernhard Röhrig Hohe Performance und Skalierbarkeit von verteilten Anwendungen mit dem Enterprise Cache Protocol (ECP) Datenbanksysteme mit vielen tausend Benutzern werden meist in verteilten Serverlandschaften betrieben, um zufrieden stellende Antwortzeiten zu gewährleisten. Besonders bei Web-Anwendungen ist oft nicht vorherzusagen, für welche Transaktionslast das Gesamtsystem ausgelegt sein muss. Performance und Skalierbarkeit sind deshalb neben der Sicherheit die Hauptanforderungen an ein solches System. Das Enterprise Cache Protocol (ECP) der Firma InterSystems liefert hierfür eine Lösung. Es setzt auf das TCP/ IP-Protokoll auf und bietet Strategien zum Daten- und Objekt-Caching an. 1 Einführung Das Enterprise Cache Protocol (ECP) ist ein Transaktionsprotokoll für verteilte Datenbanken als Bestandteil des DBMS Caché der Firma InterSystems, das aktuell in der Version 5 vorliegt [InterSystems 2003]. Es dient dazu, die Performance in verteilten Systemen zu erhöhen, und bietet sich für Thin-Client-Architekturen an, die heute vielfach im Einsatz sind. Die Wirkungsweise des ECP zeigt Abbildung 1: Fordert ein Client eine Information aus der Datenbank an, versucht der Applikationsserver, die Anfrage aus seinem lokalen Cache zu bedienen. Ist dies nicht möglich, wird die Information vom zentralen Datenserver abgerufen. Zusätzlich zu den aktuell verlangten Daten liefert der Datenserver weitere Informationen, die wahrscheinlich als nächste benötigt werden. Auch diese werden im Cache des Applikationsservers abgelegt und stehen dort für Anforderungen aller angeschlossenen Clientrechner zur Verfügung. Dies senkt die Netzlast und verkürzt Reaktionszeiten des Gesamtsystems. Bei der Entscheidung, welche Daten mit Wahrscheinlichkeit im nächsten Verarbeitungsschritt verlangt werden, hilft die objektorientierte Struktur der CachéDatenbank: Datenbeziehungen werden intern realitätsnah in Form von Objekten abgebildet und in multidimensionalen Arrays gespeichert. Ein Datenobjekt ent- Datenbank-Spektrum 7/2003 hält alle Informationen über ein Objekt der Realität, die nicht erst aus verschiedenen »flachen« Tabellen zusammengesetzt werden müssen. Damit reduziert sich die Zahl der Lese- und Schreibvorgänge auf dem Einzelrechner und der Transportvorgänge im Netz [Kirsten & Ihringer 2002]. Neben der reinen Bereitstellung von Daten kümmert sich ECP darum, die Konsistenz des Caches auf dem lokalen Applikationsserver zu gewährleisten und Änderungen an den Datenserver zurückzuliefern. Erfahrungsgemäß verwenden Clients oft Daten, die auf der mittleren Schicht der 3-Tier-Architektur zwischengespeichert sind. Daraus ergeben sich ein Performance-Vorteil gegenüber Direktzugriffen auf den zentralen Datenserver und eine bessere Skalierbarkeit, insbesondere durch Reduzierung der benötigten Netzbandbreite. Im Einzelnen zeichnet sich ECP durch folgende Merkmale aus: • verteilte Netzwerk-Zwischenspeicher, • Datenbank-Blockgrößen von 8 KB, • robuste Transportschicht (TCP/IP), 2 Die Architektur von Caché und ECP Das mit Caché-Version 5.0 eingeführte ECP ist eine Weiterentwicklung von DCP, dem Distributed Cache Protocol früherer Caché-Versionen, und baut auf den langjährigen Erfahrungen auf, die mit diesem Protokoll gesammelt wurden [InterSystems 2002]. Wie sein Vorgänger ist es fest in das Caché-DBMS integriert, so dass zu seinem Einsatz keine besonderen Entwicklungs-, Kodierungs- und Implementierungsarbeiten erforderlich werden. Es sind lediglich einige Konfigurationseinstellungen an den Datenbankservern der verteilten Struktur vorzunehmen. Diese Verfahrensweise besitzt eine Reihe von Vorzügen: • Anwendungen sind aus funktionaler Sicht beliebig skalierbar, da am Programmcode keine Änderungen vorgenommen werden müssen. Ein und dieselbe Anwendung lässt sich sowohl auf einem PC als auch auf großen Mehrrechnersystemen einsetzen, unabhängig von den Betriebssystemen, unter denen die einzelnen Stationen betrieben werden. Datenserver Datenbank (Caché) Applikationsserver Applikationsserver lokaler Cache lokaler Cache Thin Clients (Webbrowser) Thin Clients (Webbrowser) Abb. 1: ECP verwaltet Daten in einer 3-Tier-Architektur 13 Hohe Performance und Skalierbarkeit von verteilten Anwendungen • Auch aus der Sicht des Datendurchsatzes und der Anzahl möglicher, konkurrierender Benutzerzugriffe ergeben sich bemerkenswerte Leistungssteigerungen durch das verteilte Caching, wie verschiedene Untersuchungen (z.B. [Epic 2002]) belegen. • Außerdem vereinfacht sich der Entwicklungsprozess. Der Programmierer muss sich nicht um Details der Netzinfrastruktur und der Skalierung auf größere Serverlandschaften kümmern, da diese Prozesse für ihn transparent vom ECP abgewickelt werden. • Hinzu kommt eine gesteigerte Zuverlässigkeit. Die meisten Laufzeitprobleme, wie Ausfälle einzelner Server, werden von ECP abgefangen und automatisch bearbeitet, ohne dass ein Administrationseingriff erforderlich wird. Das Prinzip ist einfach: ECP bietet die Möglichkeit, Daten und ausführbaren Code auf verteilten Caché-Systemen gemeinsam zu nutzen. Speicherung, Transaktionssteuerung und Locking erfolgen zentral, jedoch werden aktuelle Kopien der gelieferten Daten lokal auf verteilten Applikationsservern gehalten, die somit Cache-Funktionen erfüllen. Für das Verständnis des Wirkprinzips ist es nützlich, die Konzepte zu kennen, nach denen in Caché Daten physisch und logisch verwaltet werden. 2.1 Datenspeicherung in Caché Caché ist wie andere DBMS in der Lage, eine Vielzahl unterschiedlichster Informationen abzuspeichern und zu verwalten. Hierbei sind die Möglichkeiten nicht auf rein numerische und alphanumerische Daten sowie BLOBs (Bilder, Klänge, Videoclips usw.) beschränkt. Vielmehr lassen sich auch hierarchisch strukturierte Informationen und darüber hinaus Programmcode zur Umsetzung von Geschäftslogik in der Datenbank ablegen. Umgesetzt wird dies in einer Unified Data Architecture, beschrieben in [Lutz 2002] und anderen Veröffentlichungen (siehe Abb. 2). Diese vom Hersteller InterSystems als postrelational bezeichnete Technik erlaubt es, Daten sowohl für SQL- als auch für objektorientierte Zugriffe auf der Basis einer einheitlichen Speichertechnologie zur Verfügung zu stellen. Speicherung, Verwaltung und Auswertung der Daten sind mit gängigen 14 Java EJB ActiveX .NET C++ CSP SOAP ODBC JDBC XML SQL Objekte Basic Caché Object Script Klassenbibliothek SQLGateway Multidimensionale Caché Data Engine ActiveXGateway Caché-Server Abb. 2: Die Unified Data Architecture von Caché mit Programmierschnittstellen Programmiersprachen beschreibbar, unabhängig vom jeweils vorherrschenden Paradigma (vgl. [Reichelt 2003], [Kaluzova & Manasova 2003]). Die logische Speicherung erfolgt in multidimensionalen Arrays, die beide Zugriffsarten sowie auch den Direktzugriff gestatten [Kirsten et al. 2003]. Als Programmiersprachen für CachéApplikationen kommen objektorientierte wie Java und C++ zum Einsatz oder mittels ODBC und JDBC angebundenes SQL, das in beliebige andere Sprachen eingebettet sein kann. Für die Formulierung von Methodencode finden das proprietäre, jedoch in der Anwendung sehr effektive Caché Object Script (kleine Beispiele u.a. in [Röhrig 2003]) und alternativ seit der Version 5 ein von InterSystems implementierter Basic-Dialekt Verwendung. Die Definition von Objektklassen erfolgt in XML. Intern werden die Daten in Blöcken zu je 8 KB verwaltet. Ein Datenblock enthält dabei einen so genannten Global. Der Begriff bezeichnet den Inhalt einer multidimensionalen, globalen Variablen. Dieser repräsentiert ein Datenobjekt als Instanz einer Objektklasse (evtl. in Kombination mit weiteren Globals z.B. bei Streams). Aus SQL-Sicht entspricht das meist einer Tabellenzeile, wobei die Möglichkeiten von Caché darüber hinausgehen; als Eigenschaften eines solchen Objekts sind außer Literalen auch Listen, Arrays und sogar andere Objekte zugelassen, also ihrerseits strukturierte Daten. Überschreitet der Inhalt eines Globals die Blockgröße von 8 KB, werden mehrere Blöcke verwendet. Die Organisation der Globals erfolgt in Form von B*-Bäumen (Näheres in [Härder & Rahm 1999]). Im Unterschied zur allgemeinen Form von B-Bäumen verweist bei einem B*-Baum jeder Schlüssel eines Zeigerblocks niedrigster Ebene direkt auf einen Datenblock, der den gesuchten Datensatz enthält [Kirsten et al. 2003]. Hierdurch wird die Integration von Schlüssel- und Datenbereichen in einer einheitlichen Speicherstruktur ermöglicht. B*-Bäume enthalten verschiedene Arten von Blöcken: einen Verzeichnisblock an der Spitze, einen oder mehrere Zeigerblöcke und auf der untersten Ebene Datenblöcke, die die eigentliche Information repräsentieren. Neben reinen Daten lässt sich zu den Objekten bzw. Objektklassen auch ausführbarer Programmcode (»Methoden«) speichern, die Caché-Routinen. Die Routinen werden ebenfalls in Form von Globals verwaltet. Damit entfällt eine gesonderte Middleware, die bei der klassischen 3-Tier-Architektur erforderlich wäre [Binder 2003]; die Geschäftslogik integriert sich nahtlos in den Datenbankserver. 2.2 Datenbanken und Namespaces Die Daten- oder Codeblöcke speichert Caché in Datenbankdateien im Verzeichnisbaum des Betriebssystems. Jedes Caché-System verfügt über mehrere System- und benutzereigene Datenbanken. Dieser physischen Speicherungsform überlagert ist das Konzept der logischen Namespaces. Caché-Anwendungen greifen auf die bereitgestellten Daten stets über einen Namespace zu. Abbildung 3 gibt einen Überblick über die Zusammenhänge. Datenbank-Spektrum 7/2003 Hohe Performance und Skalierbarkeit von verteilten Anwendungen Globals (Daten) Routinen (Programmcode) Namespace (logische Sicht) Datenbankserver RAM Datenbankdateien Festplatte DatenbankCache Dateisystem des Betriebssystems solange keine Updates auf das zentral vorliegende Directory erfolgen. Als vorteilhaft erweist sich die beschriebene Technik in verteilten Strukturen, da sich durch Reduzierung der erforderlichen Netzzugriffe die Netzbelastung verringert, die zur Verfügung stehende Bandbreite erhöht und natürlich auch die Reaktionszeiten des Gesamtsystems verkürzen. Darüber hinaus können durch geeignete Defnition von Namespaces Daten und Programmcode intelligent im Netz verteilt und immer dort angeordnet werden, wo sie im Interesse einer hohen Performance am besten aufgehoben sind. Näheres zur Verfahrensweise enthält Abschnitt 3.2 des Artikels. 2.4 ECP-Clients und -Server Äußerlich unterscheidet sich eine ECPKonfiguration nicht von klassischen verAbb. 3: Das Zusammenspiel von Datenbanken, Namespaces und lokalem Cache in einem Caché-System teilten DBS oder 3-Tier-basierten Strukturen. Sie besteht aus einer Anzahl von Ein Namespace ist ein Arbeitsbereich, schnelle Reaktionszeiten des lokalen SysCaché-Systemen, die über TCP/IPin dem Daten und Programmcode logisch tems. Da es sich um Shared Memory hanStacks miteinander kommunizieren und zusammengefasst sind. Bei der Definition delt, stehen die gecachten Globals allen als ECP-Server oder -Clients agieren. eines Namespace durch den DB-Admi- Prozessen auf derselben Maschine zur ECP-Server entsprechen dem Datennistrator wird angegeben, welche Daten Verfügung, nicht nur dem Client, der sie server in Abbildung 1, ECP-Clients den und Programme sich in welcher Daten- angefordert hat. Applikationsservern. Im Unterschied zur bank befinden. Diese Art der GruppieGegenüber einem rein relationalen klassischen 3-Tier-Architektur handelt es rung wird vom Hersteller als Global Map- DBS wird eine zusätzliche Leistungssteisich jedoch nicht um unterschiedliche ping bezeichnet [Kirsten et al. 2003]. gerung dadurch erzielt, dass die Speiche- Software. Vielmehr sind alle diese SysteDer Namespace bietet eine logische rung der Daten generell objektbezogen, me jeweils mit einem Caché-5-Server beSicht auf die Globals und Routinen, die in also realitätsnah erfolgt. Somit ist auch stückt. Der Unterschied liegt lediglich in einer oder mehreren physischen Daten- bei komplizierteren Objekten mit einem der Konfiguration [InterSystems 2002]. banken gespeichert sind, und entkoppelt Lesevorgang gleich das ganze Objekt im Aufgrund der gleichen Softwareausso die Applikationen vom darunter lie- Shared Memory präsent, während die Dastattung kann ein Caché-System auch genden Betriebssystem und dessen Da- ten in einem RDBMS aus verschiedenen gleichzeitig als ECP-Client und ECP-Sertenspeicherungs-Mechanismen. Dies un- Tabellen – und damit auch Speicherblö- ver fungieren. terstützt sowohl die Migration auf eine cken auf dem externen Medium – zusamDefinition: Ein ECP-Server ist ein Cachéandere Hard- oder Softwarebasis als auch mengesucht werden. Durch die VerwenSystem, das Daten für andere Caché-Sysdie Skalierung vom Einzelserver auf verdung der multidimensionalen Speiche- teme bereitstellt. teilte Strukturen. Zusätzliche Server lasrungsform reduziert sich auch die Zahl Jeder ECP-Server in einer gegebenen sen sich im laufenden Betrieb hinzufügen der Festplattenzugriffe, was sich in messStruktur ist zuständig für und vom Administrator als Datenquellen baren Performance-Gewinnen niederoder Applikationsserver konfigurieren, schlägt [Olofson 2003]. • die Speicherung von Daten in seinen lokalen Datenbanken, ohne dass an den darauf aufsetzenden Gegenstand des Caching sind die Da• den Abgleich der Datenbank-Caches Anwendungen irgendetwas geändert tenblöcke, die die Globals repräsentieren, der verschiedenen Clientsysteme, werden müsste. sowie das Global Directory, das zum • die Verwaltung von SperrinformatioAuffinden der gespeicherten Informationen für die Globals. 2.3 Lokales und verteiltes Caching nen dient [Schatz-Cairoli 2003]. Die Verwaltung erfolgt wie bei Speicherseiten in Definition: Ein ECP-Client ist ein SysJedes Caché-System verwaltet, wie bei DBMS üblich, einen lokalen Datenbank- klassischen Datenbank- oder Betriebs- tem, das seine Informationen von einem oder mehreren ECP-Serversystemen besystemen. Cache (Abb. 3), ein Shared-MemoryBei häufig wiederkehrenden Anfragen zieht. Segment, das als Zwischenspeicher für ECP-Clients erfüllen folgende AufZugriffe auf die lokalen Datenbanken ist es sogar möglich, dass die benötigten gaben: Teile des Global Directory überhaupt nicht dient. Dieser Cache reduziert den Aufwand für Datenzugriffsoperationen beim Lesen und Speichern und gewährleistet Datenbank-Spektrum 7/2003 mehr vom externen Datenträger (oder bei ECP aus dem Netz) geholt werden müssen, • Verbindungsaufbau zum ECP-Server, wenn eine Applikation Daten anfor- 15 Hohe Performance und Skalierbarkeit von verteilten Anwendungen dert, die auf diesem Server gespeichert sind, • Statusüberwachung aller Verbindungen zu ECP-Servern und Versuch der Wiederherstellung bei unterbrochenen Verbindungen, • Vorhalten der aus dem Netz gewonnenen Daten im lokalen DatenbankCache. Bezüglich der Betriebssysteme auf den im Netz eingesetzten Rechnern ist der Systemintegrator relativ frei: Es kann sogar jede Station mit einem anderen Betriebssystem gefahren werden, sofern dafür eine Caché-5-Version angeboten wird. Dies betrifft neben den 32-Bit-Windows-Versionen und Open VMS auch alle geschäftlich bedeutsamen Unix- und Linux-Distributionen sowie Mac OS X [InterSystems 2002]. Da die Konfiguration über Namespaces erfolgt, entsteht kein zusätzlicher Aufwand gegenüber einer homogenen Rechnerlandschaft. 2.5 ECP-Interna Eine wichtige Frage in verteilten Strukturen ist die Konsistenz/Kohärenz der beteiligten Caches. Allgemein sind die Requests der ECP-Clients in zwei Gruppen zu unterteilen: • Typ get entspricht dem SELECT in relationalen DBS, • Typ set/kill entspricht INSERT, UPDATE und DELETE. Requests vom Typ »get« lösen auf dem ECP-Client als Erstes eine Suche im Cache aus und im »miss«-Fall die Anforderung des gesuchten Datenblocks vom ECP-Server mit anschließendem Caching auf dem Client. Der ECP-Server führt eine Liste aller Datenblöcke, die auf den einzelnen ECP-Clients aktuell gecacht sind (Abb. 4). Requests vom Typ »set/kill« werden demgegenüber direkt zum ECP-Server gesandt. Betrifft dies einen Block, der auf demselben Client gecacht ist, erfolgt parallel das Update des eigenen Caches. Kann der Request nicht im Rahmen des vorliegenden, gecachten Datenblocks vollzogen werden, wird dieser auf dem Client gelöscht und die Löschung dem Server mitgeteilt, der den Block aus der Liste der gecachten Blocks für das betreffende Clientsystem streicht. Bei jeder Änderung eines Blocks auf dem ECP-Server werden alle Clients benachrichtigt, die diesen Block gecacht ha- 16 ECP-Server Blocklist Client 1: … 47110815 ... Cache Client 2: … # 47110815 Client 3: … 47110815 … get notify set/kill ECP-Client 2 ECP-Client 1 set/kill Cache ECP-Client 3 (Block # 47110815 nicht vorhanden) purge Cache Cache # 47110815 # 47110815 Thin Clients Thin Clients Thin Clients Abb. 4: Der ECP-Server gewährleistet die Konsistenz der Caches ben, und streichen den betreffenden Block aus ihrem Cache. Spielt sich die Änderung im Rahmen eines Blockes ab, wird aus Performance-Gründen auf dem betroffenen ECP-Client der Block nicht gelöscht, wohl aber auf allen anderen Clients, die den gleichen Block zwischengespeichert haben. 3 3ECP in der Praxis Um ECP zu betreiben, werden mindestens zwei, besser mehrere Serversysteme benötigt, auf denen Caché ab der Version 5 installiert ist. Im zu installierenden Softwareumfang gibt es keinerlei Unterschiede. Lediglich einige Konfigurationsparameter teilen dem Einzelsystem mit, welche Funktion es im Gesamtgefüge zu erfüllen hat. Für die Einstellung dieser Parameter stellt Caché eine grafische Oberfläche zur Verfügung. Das vorliegende Kapitel beschreibt die Details der Konfiguration, erläutert die Besonderheiten einer verteilten Struktur unter Caché/ ECP und gibt einen Überblick über die implementierte Recovery-Strategie. 3.1 ECP-Strukturen konfigurieren ECP-fähige Anwendungen basieren auf einer Netzwerkstruktur mit einem oder mehreren ECP-Servern (Datenserver) sowie mehreren ECP-Clients (Applikationsserver). Die Trennung in »Daten«und »Applikations«-Server ist eher formaler Natur, da beide Typen von Servern im Falle von Caché in der Lage sind, sowohl Daten als auch Programmcode für Geschäftsanwendungen zu speichern und letztere auch auszuführen. Zu beachten ist nur, dass für jeden gespeicherten Global ein einziger Server im Netz als Lockmaster fungiert, also diesen Global in seiner lokalen Datenbank auf der Festplatte vorhält; alle anderen üben bezüglich dieses Globals reine Caching-Funktionen aus. Die Konfiguration der Einzelserver erfolgt über ein von InterSystems geliefertes GUI, den Konfigurationsmanager, der unter MS Windows läuft, mit dem sich aber ebenso alle Caché-Server im Netz konfigurieren lassen, die auf anderen Betriebssystemen laufen. Die Konfiguration für die Benutzung von ECP im Netz umfasst drei Bereiche: • Ein System, das als ECP-Server dienen soll, wird als solcher gekennzeichnet. Hierzu ist lediglich eine Checkbox im grafischen Konfigurationsdialog anzuwählen, woraufhin das Serversystem alle notwendigen Einstellungen automatisch vornimmt. Für jeden ECP-Server lässt sich eine Liste von Clients festlegen, die überhaupt auf diesen Server zugreifen dürfen. Dies ist eine reine Sicherheitsfunktion, die mit dem eigentlichen Caching oder der Funktionsweise des Transaktionsprotokolls nichts weiter zu tun hat. Möglich ist die Angabe einzelner Datenbank-Spektrum 7/2003 Hohe Performance und Skalierbarkeit von verteilten Anwendungen Hosts per IP-Adresse oder Hostname wie auch die Festlegung ganzer Bereiche von IP-Adressen. • Für jedes ECP-Clientsystem sind der oder die ECP-Server anzugeben, von denen der Client seine Daten beziehen soll. In diesem Schritt wird lediglich festgelegt, welche Datenbanken von im Netz vorhandenen Servern für die nachfolgende, detailliertere Konfiguration auf dem Clientsystem sichtbar sein sollen. • Auf jedem ECP-Client ist der Zugriff auf Datenbanken des Serversystems einzurichten. Sowohl ECP-Server als auch ECPClients benötigen nach den Konfigurationsschritten des ersten und zweiten Anstriches einen Neustart des Caché-Datenbankservers, nicht jedoch des darunter liegenden Betriebssystems. Auf dem Clientsystem ist nach dem Neustart der Datenbankzugriff zu konfigurieren. ECP verwendet hierzu den Begriff der Remote Database. Eine solche Datenbank residiert physisch auf dem ECP-Server (»Datenserver«), der entsprechende Namespace wird jedoch auf dem Clientsystem (»Applikationsserver«) eingerichtet. Als Werkzeug ist wiederum der Konfigurationsmanager nutzbar. Ein Namespace auf der Basis einer (oder mehrerer) Remote-Datenbank(en) wird hierbei genauso konfiguriert wie sein Äquivalent bei einer rein lokalen Datenbank. Die erforderlichen Zugriffe werden zur Laufzeit gleichsam im Verborgenen ausgeführt, der Programmierer oder Anwender braucht sich hierum nicht zu kümmern. Da die Anwendung nur mit dem Namespace kommuniziert, niemals direkt mit der oder den darunter liegenden Datenbanken, erfolgt der Zuriff völlig transparent. Für die Programmierung hat es keinerlei Konsequenzen, unter welchem Betriebssystem die einzelnen Server laufen und wo sie sich physisch befinden. 3.2 Intelligente Verteilung von Datenobjekten und Programmcode Über die reine Caching-Funktion hinaus ist es in einer ECP-Struktur möglich, weitere Performance-Vorteile durch geschickte Verteilung der Globals und Routinen im Netz zu erzielen. Routinen sind Bestandteil der Klassendefinitionen, gleich ob es sich dabei um Klassen- oder Instanzenmethoden handelt. Das heißt, diese Methoden wer- Datenbank-Spektrum 7/2003 den für gleichartige Objekte nur einmal auf jedem dezentralen System benötigt. Dem trägt ECP Rechnung, indem es diesen Programmcode nur einmal cacht, unabhängig von der Anzahl der Instanzen einer Objektklasse, die aktuell im Cache des Clientsystems vorliegen. Alle diese Instanzen greifen gleichberechtigt und multientrant auf den gecachten Code zu. Andererseits ist es eine Erfahrungstatsache, dass Methodencode sich wesentlich seltener ändert als »gewöhnliche« Objektdaten. Hier bietet Caché die Möglichkeit, Klassendefinitionen samt Routinen dezentral und somit näher am Benutzer zu speichern, so dass Netzzugriffe im täglichen Betrieb für diesen Teil des Datenbankbetriebes unter günstigen Umständen sogar ganz entfallen. Für jeden Namespace kann der Administrator beim Anlegen (oder einer späteren Modifikation) des Namespace festlegen, woher einerseits die Globals und andererseits die Routinen bezogen werden (standardmäßig aus derselben Datenbank, aber nicht Bedingung). Darüber hinaus besteht durch differenziertes Global Mapping die Möglichkeit, einzelne Globals und/oder Routinen auch aus anderen Datenbanken zu beziehen. Hierdurch ergeben sich flexible Strukturen mit minimalen Zugriffszeiten für die Benutzer. 3.3 Recovery im Hintergrund Die Behandlung von Ausnahmesituationen wie Unterbrechungen der Verbindung zwischen Client und Server verläuft unter ECP im Wesentlichen unbemerkt. Bei einer Unterbrechung des Datenverkehrs werden – ähnlich wie in anderen verteilten Systemen – nacheinander die folgenden Schritte durchlaufen: • Der Verbindungszustand wird auf »Trouble« gesetzt. • Der ECP-Client versucht die Verbindung zum Server wiederherzustellen. • Bei Erfolg erhält der Verbindungszustand wieder den Wert »Normal«. • Sperren und offene Transaktionen werden in den Zustand vor der Unterbrechung zurückgesetzt. Lässt sich die Verbindung nicht innerhalb einer vorgegebenen Timeout-Periode automatisch wiederherstellen, hebt ECP auf dem Server alle Sperren auf, die von diesem Clientsystem gehalten werden; offene Transaktionen werden zurückgesetzt (Rollback) und der Verbindungszustand wird auf »Not Connected« gesetzt. Die standardmäßig eingestellten Timeout-Werte zeigt Tabelle 1. Sie können durch Administratoreingriff jederzeit geändert werden, gesondert für jeden einzelnen ECP-Server (erste Tabellenzeile) und ECP-Client (zweite und dritte Tabellenzeile). 60 sec Zeit, die ein Server auf Beendigung des Troublezustandes wartet 5 sec Zeit, bevor ein Client nach missglücktem Versuch erneut Verbindung aufnimmt 20 min Zeit, nach der der Client die Verbindungsversuche aufgibt Tab. 1: Standard-Timeout-Werte des ECPProtokolls Zu erkennen ist, dass der ECP-Client dem Server eine wesentlich größere »Gnadenfrist« einräumt, nach einem etwaigen Crash seine Datenbanken wiederherzustellen, so dass er dann normal mit ihm weiterarbeiten kann. Umgekehrt ist es für den ECP-Server wenig sinnvoll, allzu lange die Verbindungen für einen eventuell ausgefallenen Client offen zu halten. 3.4 Leistungsfähigkeit von ECP Ziel aller Bemühungen sind natürlich messbare Vorteile in der Performance von Datenbanksystemen, die mit der beschriebenen Technik ausgestattet sind. Hierzu gibt es einige Studien, die im Internet und in Zeitschriften bzw. Reports veröffentlicht sind. Eher qualitative Aussagen trifft [Olofson 2003]. Demgegenüber enthält die Untersuchung von [Epic 2002] Zahlenmaterial zum Vergleich zwischen einer Ein-Server-Struktur und einer ECPKonfiguration mit einem Daten- und zwei Applikationsservern. Einen Bericht der sächsischen Landesbibliothek Dresden über die Einführung des ECP-basierten Bibliotheksverwaltungssystems LIBERO enthält [Grothe 2002]. Weitere Anwendungsbeispiele mit Zahlenangaben finden sich auf der Website von InterSystems USA unter http:// www.InterSystems.com/cache/whitepapers/ performance.html. Ein Beispiel aus dem Bereich der Medizin soll den vorliegenden Beitrag abschließen. 17 Hohe Performance und Skalierbarkeit von verteilten Anwendungen 4 Anwendung: ECP bei Partners HealthCare in Boston Ein Anwendungsbereich für Datenbanken, in dem es besonders auf Ausfallsicherheit und kurze Reaktionszeiten ankommt und der sich traditionell durch ein hohes Datenaufkommen auszeichnet, ist das Gesundheitswesen [Kirsten & Ihringer 2002]. Zahlreiche Kliniken und Klinikverbunde in aller Welt verwenden bereits seit längerem das DBMS Caché [Advance 2002]. Mit der Einführung von Version 5 ergeben sich erweiterte Möglichkeiten durch den Einsatz des Enterprise Cache Protocol. Eines der großen Gesundheitsfürsorge-Netzwerke der USA, Partners HealthCare System in Boston, Massachusetts, setzt ECP auf der Basis von Caché-Servern zur Verwaltung seiner Informationssysteme ein. Angeschlossen sind Mitglieds- und Partnereinrichtungen wie das Massachusetts General Hospital und die Harvard School of Medicine mit einer Gesamtzahl von mehreren tausend Ärzten und Angestellten [Flammini 2002]. Das Datenvolumen betrug bereits im Vorjahr etwa 300 GB. Gegenwärtig werden durch das Netz etwa 35.000 Endbenutzer-Arbeitsplätze bedient. Aus beiden Größen ergibt sich ein entsprechendes Transaktionsaufkommen. Erwartet wird ein Wachstum auf ca. 50.000 Arbeitsstationen. Die Hälfte davon sind Thin Clients auf der Basis von Webbrowsern. Seitens der Geschäftsleitung von Partners wird angegeben, dass ständig etwa 5.000 Benutzerzugriffe gleichzeitig erfolgen. Die Tendenz ist hier ebenfalls steigend. Tabelle 2 zeigt noch einmal eine Zusammenstellung der wesentlichen technischen Daten. Anzahl Merkmal 6 Caché-Datenserver (ECP-Server) 11 Caché-Applikationsserver (ECP-Clients) 300 GB gespeicherte Daten 35000 Arbeitsstationen 4 Datenbankadministratoren Tab. 2: Wichtige Kenngrößen des PartnersNetzes in Boston Inhaltlich ist vom System ein breites Spektrum an Aufgaben abzudecken. Enthalten sind eine komplette Mitarbeiter- 18 verwaltung mit integriertem Notrufsystem, das Führen von Patientenakten, die Aufnahme und Archivierung ärztlicher Verordnungen, ein Web-Portal zur öffentlichen Benutzung durch Patienten bzw. Interessenten und ein unternehmensweit nutzbares Repository klinischer Daten. Jede dieser und weiterer, hier nicht genannter Anwendungen muss ständig verfügbar sein (»7x24«-Betrieb), um die Erfordernisse der sieben angeschlossenen Notfallkliniken zu erfüllen. Zu verarbeiten sind die Daten von mehreren Millionen Patientenkontakten. Eine Besonderheit von Partners ist, dass das Netzwerk durch Zusammenschluss von teilweise recht unterschiedlich ausgestatteten Einzelunternehmen entstand und eine dementsprechend heterogene Rechnerlandschaft aufweist. In dieser Umgebung kommen die Vorteile der hier im Artikel beschriebenen Struktur besonders zum Tragen. 5 Fazit Das Enterprise Cache Protocol ECP gestattet die Entwicklung verteilter Datenbankanwendungen unter Entkopplung von der darunter liegenden Hardwareund Betriebssystemtechnik. Für Programmierer und Benutzer ist das Protokoll transparent; für Administratoren bedeutet es nur einen geringen Konfigurationsaufwand. Durch Nutzung von TCP/IP eignet es sich besonders zum Einsatz in heterogenen Netzwerken. Seine Stärken sind hohe Performance durch intelligentes, lokales Caching und Skalierbarkeit ohne zusätzlichen Programmieraufwand sowie eingebaute Sicherheits- und Wiederherstellungsfunktionen bei Teilausfällen im Netz. 6 Literatur [Advance 2002] redaktionell: InterSystems Focuses on Health Care. Advance for Health Information Executives, 6. Jg., 2002, Heft 5 (Mai 2002), S. 72. [Binder 2003] Binder, U.: Schaltzentrale der Unternehmens-IT. InfoWeek.CH, 2003, Ausgabe 08 v. 24.04.2003, S. 23-25. [Epic 2002] Epic: Solaris Unix/Caché and Sun 6800. Stress Testing Results. November 25 December 12, 2002. Epic Systems Corp., Madison (WI), 2002. [Flammini 2002] Flammini, St.: Partners HealthCare Extends Application Reach with InterSystems Caché Post-Relational Database. DM Review, 12. Jg., 2002, Heft 6 (Juli), S. 112. [Grothe 2002] Grothe, J.: Die Einführung von LIBERO in Sachsen. B.I.T., 5. Jg., 2002, Heft 4, S. 313-325. [Härder & Rahm 1999] Härder, T.; Rahm, E.: Datenbanksysteme. Konzepte und Techniken der Implementierung. Springer-Verlag, Berlin, Heidelberg, New York, 1999. [Heuer 1997] Heuer, A.: Objektorientierte Datenbanken. Konzepte, Modelle, Standards und Systeme. 2., aktualisierte und erweiterte Auflage. Addison-Wesley, Bonn, 1997. [InterSystems 2002] InterSystems Corp.: OnlineDokumentation zu Caché 5, Cambridge (MA), 2002. [InterSystems 2003] InterSystems GmbH, Darmstadt: Caché 5 von InterSystems verfügbar. In: Datenbank-Spektrum, 3. Jg., 2003, Heft 6, S. 3. [Kaluzova & Manasova 2003] Kaluzova, L.; Manasova, S.: Relational and Object-oriented Approach in the Environment of the database system Caché. Manuskript für die 5th International Conference on Strategic Management and its Support by Information Systems, Ostrava (Tchechische Republik), 03.-5.09.2003. [Kirsten & Ihringer 2002] Kirsten, W.; Ihringer, M.: Caché von InterSystems. Postrelationale Datenbanktechnologie für das Gesundheitswesen. mdi, 4. Jg., 2002, Heft 4, S. 127 - 130. [Kirsten et al. 2003] Kirsten, W.; Ihringer, M.; Kühn, M.; Röhrig, B.: Objektorientierte Anwendungsentwicklung mit der postrelationalen Datenbank Caché. Springer-Verlag, Berlin, Heidelberg, New York, 2003. [Lutz 2002] Lutz, H.: Postrelationale Datenverwaltung. Technische Kommunikation, 24. Jg., 2002, Heft 6, S. 44-46. [Olofson 2003] Olofson, C. W.: Breaking the Relational Barreer: User Data Management Triumphs with Intersystems' Caché. IDC White Paper. IDC, Framingham (MA), Februar 2003. [Reichelt 2003] Reichelt, D.: Mehr als Objekte. Javamagazin, 6. Jg., 2003, Heft 6, S. 84-87. [Röhrig 2003] Röhrig, B.: Webdatenbanken mit Linux. Computer und Literatur Verlag, Böblingen, 2003. [Schatz-Cairoli 2003] Schatz-Cairoli, K.: persönlich erteilte Auskunft, InterSystems GmbH, Darmstadt, 2003. Dr.-Ing. Bernhard Röhrig leitet die Firma roehrig.com in Erfurt, die sich auf heterogene Netzwerke und Datenbanksysteme spezialisiert hat. Bekannt geworden ist er durch zahlreiche Veröffentlichungen in Fachzeitschriften und in Buchform sowie Vorträge, Seminare und Workshops im gesamten Bundesgebiet. Dr.-Ing. Bernhard Röhrig EDV-Consulting Publikationen Kabarett Singerstr. 96 99099 Erfurt [email protected] http://www.roehrig.com Datenbank-Spektrum 7/2003