Microsoft SQL Server 2005 im Vergleich zu Oracle Database 10g Alexander Bittner 07MIM Datenbanken II HTWK Leipzig, Fachbereich IMN Leipzig, den 27 Juni 2008 1 Inhalt 1. Einleitung ............................................................................................................................................ 4 2. Architektur .......................................................................................................................................... 4 2.1 Rechenarchitektur / Host-Systeme ................................................................................................ 4 2.2 Datenspeicherung .......................................................................................................................... 5 2.2.1 Physische Datenspeicherung .................................................................................................. 5 2.2.2 Logische Datenspeicherung ................................................................................................... 5 2.3 Datenbankverbindungen ................................................................................................................ 6 2.3.1 Gemeinsamkeiten beider Systeme .......................................................................................... 6 2.3.2 Neuerungen beim SQL Server ............................................................................................... 6 2.4 Instanzen ........................................................................................................................................ 7 2.4.1 Instanzen in Oracle ................................................................................................................. 7 2.4.2 Instanzen in SQL Server ......................................................................................................... 8 2.5 SQL Standards und Spracherweiterungen ..................................................................................... 8 2.6 Sperren und Nebenläufigkeit ......................................................................................................... 9 2.6.1 Sperrkonzepte in Oracle ......................................................................................................... 9 2.6.2 Sperrkonzepte in SQL Server ............................................................................................... 10 2.7 Lesekonsistenz............................................................................................................................. 10 2.7.1 Lesekonsistenz in Oracle ...................................................................................................... 10 2.7.2 Lesekonsistenz in SQL Server ............................................................................................. 11 2.8 Partitionierung ............................................................................................................................. 11 2.8.1 Partitionierung in Oracle ...................................................................................................... 12 2.8.2 Partitionierung in SQL Server .............................................................................................. 12 2.9 Verfügbarkeit und Skalierbarkeit ................................................................................................ 12 2.9.1 Verfügbarkeit und Skalierbarkeit in Oracle ......................................................................... 13 2.9.2 Verfügbarkeit im SQL Server .............................................................................................. 13 3. Verwaltbarkeit ................................................................................................................................... 14 3.2 Verwaltung des SQL Server ........................................................................................................ 14 3.1 Verwaltung von Oracle ............................................................................................................... 14 4. Data Warehouse und Applikationsentwicklung ............................................................................ 15 4.1 Data Warehouse in Oracle ........................................................................................................... 15 4.1.1 Oracle Data Warehouse Builder ........................................................................................... 16 4.1.2 Oracle Discoverer ................................................................................................................. 16 4.1.3 Oracle Reports ...................................................................................................................... 17 4.2 Data Warehouse in SQL Server .................................................................................................. 17 2 4.2.1 SQL Server und das .NET-Framework ................................................................................ 17 4.2.2 Integration Services .............................................................................................................. 18 4.2.3 Analysis Services ................................................................................................................. 18 4.2.4 Reporting Services ............................................................................................................... 19 4.2.5 Notification Services ............................................................................................................ 19 5. Zusammenfassung ............................................................................................................................. 19 6. Quellen .............................................................................................................................................. 20 3 1. Einleitung Sowohl Oracle als auch der SQL Server sind führende Produkte auf dem Gebiet der Datenbanksysteme. Oracle gilt als Marktführer und findet mit seinen Produkten gerade bei Großunternehmen viele Kunden. Microsoft stößt mit dem SQL Server 2005 verstärkt in dieses Segment vor und braucht mittlerweile einen Vergleich mit Oracle nicht zu scheuen. Ziel dieser Ausarbeitung soll ein Vergleich der beiden Datenbanksysteme Oracle 10g und SQL Server 2005 sein anhand bestimmter Gesichtspunkte sein. In Kapitel 2 werden vorrangig Aspekte der Architektur beider Systeme untersucht. Dabei geht es vor allem um hardwareseitige Gesichtspunkte wie unterstützten Rechnerarchitekturen, Arten der Datenspeicherung, die Verteilung von Datenbanken über Clustering und Partitionierungsmechanismen. Des Weiteren wird die Arbeitsweise in Hinsicht auf die Bildung von Instanzen, Verbindungen zur Datenbank, unterstützte SQL Standards sowie Transaktionskonzepte untersucht. Das Kapitel 3 beschäftigt sich näher mit der Verwaltbarkeit beider Systeme. Dabei werden die verfügbaren Werkzeuge vorgestellt und ihre Funktionsweise genauer untersucht. In Kapitel 4 geht es um die von beiden Systemen bereitgestellten Lösungen im Bereich der Business Intelligence und des Data Warehousing. Die verwendeten Konzepte werden erläutert und deren Umsetzung untersucht. Zum Abschluss wird eine Zusammenfassung des Vergleichs gegeben. 2. Architektur 2.1 Rechenarchitektur / Host-Systeme In der verwendeten Rechenarchitektur unterscheiden sich Oracle und SQL Server kaum. Beide sind für den Betrieb auf SMP-Systemen (Symmetic Multiprocessing Systems) ausgelegt. Mithilfe des Oracle RAC (Oracle Real Application Clusters) lässt sich Oracle jedoch auch auf MMP-Systemen (Massively Parrallel Processing Systems) betreiben. Beide Datenbanksysteme benötigen ein Host-System, auf dem sie arbeiten können. Dort gibt es Unterschiede bezüglich der unterstützten Betriebssysteme. Oracle ist weitgehend plattformunabhängig und kann sowohl in einer UNIX- beziehungsweise LINUX-Umgebung, als auch in einer Windows-Umgebung betrieben werden. Der SQL Server bringt lediglich eine Unterstützung für Windows-Betriebssysteme mit. Man kann daher sagen, dass Oracle vielseitiger in eine IT-Infrastruktur integriert werden kann. Der SQL Server hat jedoch den Vorteil, auf einem hauseigenen (Microsoft)Betriebssystem ausgeführt zu werden. Daher lässt sich die Integration in das Host-System besser und tiefgreifender realisieren. 4 2.2 Datenspeicherung 2.2.1 Physische Datenspeicherung Oracle verwendet für die Speicherung seiner Daten Kontrolldateien, Datendateien und Online-Redolog-Dateien. Die Kontrolldateien dienen der Speicherung von Informationen über die physische Datenbankstruktur, beispielsweise das Backup, Recovery und die Konsistenzsicherung betreffend. Die Datendateien beinhalten alle Benutzerdaten sowie Metadaten. Die OnlineRedolog-Dateien beherbergen alle Transaktionsprotokollinformationen, die für eine eventuelle Datenbankwiederherstellung benötigt werden. Microsofts SQL Server verwendet eine ähnliche Trennung sekundäre Datendateien und Protokolldateien. in primäre Datendateien, Dabei enthalten die primären Datendateien Startinformationen für die Datenbank und Verweise auf andere Datendateien. Die sekundären Datendateien sind optional und benutzerdefiniert. Sie speichern Benutzerdaten. Die Protokolldateien beherbergen ähnlich den Oracle Redolog-Dateien Transaktionsprotokollinformationen zu DatenbankWiederherstellung. 2.2.2 Logische Datenspeicherung Oracle organisiert seine Daten logisch in Tablespaces. Es werden verschiedene Arten von Tablespaces unterschieden. Tablespaces werden in Datendateien gespeichert, wobei eine Datendatei mehrere Tablespaces enthalten kann. Der Oracle SYSTEM-Tablespace dient der Speicherung von Tabellen, die die Kernfunktionalität des Systems beschreiben, so zum Beispiel das Data Dictionary. Der SYSAUX-Tablespace speichert Datenbankkomponenten, so zum Beispiel den Enterprise Resource Manager. Der TEMP-Tablespace beherbergt temporäre Segmente, die bei der Verarbeitung von SQL-Anfragen erstellt werden. Im UNDO-Tablespace werden UndoSegmente für die Datenbankwiederherstellung gespeichert. Permanente Benutzerdaten- und Objekte werden im USERS-Tablespace abgelegt. Der SQL Server kennt zwei Dateigruppen. Die primäre Dateigruppe umfasst die primäre Datendatei und alle Datendateien, die keiner Gruppe zugeordnet werden können. Des weiteren gibt es noch eine benutzerdefinierte Dateigruppe, in der sich Datenbanken befinden, die mit Hilfe des Parameters FILEGROUP im CREATE-Statement einer bestimmten Dateigruppe zugeordnet werden. Für die logische Organisation verwendet der SQL Server die Systemdatenbanken „master“, „ msdb“, „tempdb“, „resource“ und „model“. Dabei hält „master“ Informationen auf Systemebene, so zum Beispiel Metadaten über Anmeldekonten, Verbindungsserver, Endpunkte und Systemkonfigurationseinstellungen. Die „msdb“ wird vom SQL Agent verwendet und dient der Planung von Aufträgen und Warnungen. In der „tempdb“ werden temporäre Objekte und Zwischenergebnisse gespeichert. Es handelt sich dabei um eine globale Ressource, die für alle Benutzer zugänglich ist. Die Systemdatenbank „resource“ ist 5 schreibgeschützt und dient der Speicherung von Systemobjekten. Die Datenbank „model“ enthält Vorlagen, die für die Erstellung von neuen Datenbanken verwendet werden. 2.3 Datenbankverbindungen 2.3.1 Gemeinsamkeiten beider Systeme Sowohl Oracle als auch der SQL Server bieten zur Kommunikation mit dem Datenbanksystem das Client-Server-Modell an. Dabei handelt es sich um ein Kommunikationsmodell, an dem zwei Prozesse beteiligt sind: der Clientprozess und der Serverprozess. Das Prinzip besteht darin, dass der Client Anfragen an den Server sendet und dieser die Anfragen für den Client ausführt. Das Ergebnis einer Anfrage wird an den Client zurück gesendet. Das Modell hat sich in vielen Bereichen etabliert und findet nicht nur bei Datenbanken Anwendung. Das liegt nicht zuletzt an den unbestreitbaren Vorteilen, die das Modell bietet. Zum einen erhöht es die Zuverlässigkeit, da nur wenige Prozesse kontrollierenden Zugriff auf Daten haben und diese nicht über viele Anwendungen gestreut werden. Außerdem sichert es die Integrität, da sich das Regelwerk für die Behandlung der Daten an einer zentralen Stelle im Kommunikationsprozess, nämlich dem Server, befindet. Des Weiteren bietet es erhebliche Verbesserungen bezüglich der Sicherheit, da in der Regel nur eine Kommunikationsverbindung zwischen Client und Server besteht. Dadurch wird die Zahl der Angriffsziele verringert. Außerdem lassen sich an Servern stärkere Sicherheitsverfahren anwenden, als es an einem Client möglich wäre. Nicht zuletzt ist das Modell der Leistung des Gesamtsystems dienlich, da zwischen Client und Server eine Arbeitsteilung stattfindet. Der Server nimmt dem Client Rechenarbeit ab und präsentiert nur Ergebnisse, die der Client im Anschluss weiterverarbeiten kann. Außerdem bieten Server auf ihr Anwendungsgebiet zugeschnittene Hardware sowie Cachingmethoden, die Daten für einen schnellen Abruf bereit halten. Die Kommunikation der Clients mit dem Server bringt aufgrund der Sterntopologie auch eine verringerte Netzlast mit sich, da die Kommunikation nur über einen zentralen Punkt stattfindet. In die Kommunikation zwischen Client und Server sind serverseitig meist zusätzlich Prozesse geschaltet, die so genannten Tiers. Sie bilden eine Kombination aus einer Abstraktionsschicht und einem Regelwerk und haben die Möglichkeit, die bestehende Verbindungen einzugreifen und diese in bestimmten Situationen umzuleiten. Das ist beispielsweise im Falle eines Failovers notwendig, um die Verbindungen der Clients im Fehlerfall sauber auf einen anderen Server umzulenken. 2.3.2 Neuerungen beim SQL Server Neben der standardmäßigen Unterstützung des Client-Server-Modells wagt Microsoft mit dem SQL Server die Orientierung in Richtung einer Service Oriented Architecture (SOA). Diese Technologie für den Zugriff auf den Datenbankserver basiert auf einer standardisierten Abstraktionsschicht, die der Server verwendet, um mit anderen Anwendungen zu kommunizieren. Sie beruht auf der Kommunikation über Standard-HTTP-Calls, wodurch die Datenübertragung über XML, SOAP oder andere Webservices möglich wird. 6 Der SQL Server unterstützt im Speziellen ServeXML für die Erstellung von Data Stores und bietet darüber hinaus die Möglichkeit ServeXML- und XSLT-Code direkt an einen Browser zu versenden. Des Weiteren unterstützt die Datenbankengine queryXML sowie Store-, Insertund BulkInsert-Befehle. Die Technologie erleichtert die Entwicklung von Datenbankapplikationen ungemein, da Funktionen direkt auf dem Server angesprochen werden können und Daten dank XML in einer für die Anwendung sofort verwertbaren Form vorliegen. Die Erleichterungen bringen jedoch auch Nachteile mit sich. Das Hauptproblem liegt in der zusätzlichen Abstraktionsschicht, die Daten beim Transfer über mehrere Schichten für jede Schicht übersetzen muss. Das führt zu Performanceeinbußen. Trotzdem lässt sich sagen, dass die Entwicklung hin zu einer serviceorientierten Architektur viele Möglichkeiten in sich birgt und auch in der Zukunft von Bedeutung sein wird, speziell für die zunehmenden Entwicklungen im Bereich der .NET-Programmierung. 2.4 Instanzen Jedes Datenbanksystem verwendet für den Datenbankzugriff so genannte Instanzen. Dabei handelt es sich um Konstrukte auf dem Server, die es Benutzern oder Applikationen erlauben, mit dem Datenbankserver zu interagieren. Je nach verwendetem Datenbanksystem können Instanzen unterschiedlicher Gestalt sein. So verwendet das Datenbanksystem IDS beispielsweise Threads, Oracle und auch der SQL Server arbeiten prozessbasiert. Sowohl Oracle als auch der SQL Server haben diesbezüglich einige Gemeinsamkeiten. So verfügen beide Systeme über Mechanismen, die Prozessen eine gemeinsame Speichernutzung und Puffer zum Austausch von Informationen ermöglichen. Prozesse zur Protokollierung sowie Mechanismen für das Vorauslesen von Daten gehören ebenfalls zur Kernfunktionalität beider Systeme. 2.4.1 Instanzen in Oracle Instanzen bestehen in Oracle aus bestimmten Speicherstrukturen, die auch als System Global Area (SGA) bezeichnet werden, und einer Reihe von Hintergrundprozessen. Dabei kann eine Instanz immer nur mit einer Datenbank verknüpft sein. Es ist jedoch möglich, dass eine Datenbank an mehreren Instanzen beteiligt ist. Alle Prozesse, die an einer Instanz beteiligt sind, teilen sich die SGA. Oracle unterscheidet zwei Arten von Prozessen: dedizierte Prozesse und gemeinsame Serverprozesse. Charakteristisch für dedizierte Prozesse ist, dass sie zur Steuerung nur einer Verbindung zur Datenbank verantwortlich sind. Diese Vorgehensweise eignet sich gut zur parallelen Verarbeitung, birgt jedoch auch einige Nachteile in sich. So ist Oracle auf eine maximale Anzahl an ausführbaren Prozessen festgelegt. Diese Grenze legt der Administrator der Datenbank systemweit fest. Ist diese Schranke zu hoch bemessen, kann es zu einer Überlastung des Systems kommen, wodurch die Verfügbarkeit des Systems beeinträchtigt werden kann. Dieser Effekt wird dadurch verstärkt, dass der Wechsel zwischen Prozessen auf Betriebssystemebene weniger performant ist, als es beispielsweise bei der Verwendung von Threads der Fall wäre. 7 Um dieses Problem einzudämmen, gibt es in Oracle die Möglichkeit der Verwendung von gemeinsamen Serverprozessen. Diese sind frei konfigurierbar und können dynamisch zu- und abgeschalten werden. Sie können mehrere Anfragen entgegennehmen und diese verarbeiten. Dazu wird ein so genannter Dispatcher verwendet. Er nimmt die Anfrage entgegen und reiht sie in eine Anforderungswarteschlange ein. Dort wird sie vom nächsten verfügbaren Prozess entgegengenommen und verarbeitet. Das Ergebnis der Anfrage wird in eine Antwortwarteschlange eingereiht und wieder an den Dispatcher übergeben, der es an den Adressaten weiterleitet. Diese Methode arbeitet sequentiell und kann daher gut zur Stapelverarbeitung verwendet werden. Dadurch sinkt in Konsequenz aber auch der Grad an möglicher Parallelität. Es gilt also Anhand der verwendeten Applikationen abzuwiegen, welcher Methode in einem bestimmten Fall der Vorzug gegeben werden soll. 2.4.2 Instanzen in SQL Server Der SQL Server arbeitet ebenfalls prozessbasiert und kennt zwei Arten von Instanzen: die Standardinstanz und benannte Instanzen. Auf einem physischen Server ist es möglich, bis zu 50 Instanzen parallel auszuführen. Wird der Server in einem Failover-Cluster betrieben, so können 25 Instanzen ausgeführt werden. Die Instanzen arbeiten voneinander unabhängig und können mit mehreren Datenbanken verknüpft sein. Es kann jedoch nur eine Standardinstanz pro Server geben. Eine Instanz besteht im SQL Server neben Speicherstrukturen und verarbeitenden Diensten aus einer Reihe von zusätzlichen Komponenten, die die Anfrageverarbeitung unterstützen. Für das Vorauslesen und effiziente Caching von Daten ist der Buffer Manager zuständig. Er hält häufig benötigte Datenseiten im Cache. Für das Rückschreiben modifizierter Datenseiten auf die Platte ist der so genannte Lazy Writer zuständig. Um Anfragen zu verbessern gibt es den Query Optimizer. Er untersucht die zu verarbeitenden Anfragen und versucht sie gegebenenfalls in eine performantere Form zu bringen. Für eine zusätzliche Optimierung des Caches ist der Resource Monitor zuständig. Seine Aufgabe ist es, für die Abarbeitung des Query-Plan s möglichst effizient Datenseiten zu cachen. Dabei werden spezielle intelligente Algorithmen verwendet, die die zur Verfügung stehenden Ressourcen optimal nutzen sollen. Des Weiteren gibt es noch den Lock Manager, der sich um die Verwaltung und Vergabe von Sperren für Transaktionen kümmert. Microsoft spielt im Kern der Datenbankengine seinen Vorteil aus, der Entwickler des Betriebssystems zu sein, auf dem der SQL Server läuft. Für den Zugriff auf die Hardware muss der SQL Server nicht den Umweg über die Abstraktionsschicht des Betriebssystems gehen, da er seine eigene Abstraktionsschicht namens SQLOS besitzt. Dadurch können die verfügbaren Ressourcen optimal an die arbeitenden Prozesse zugeteilt werden, ohne dabei einen nennenswerten Overhead zu erzeugen. 2.5 SQL Standards und Spracherweiterungen Da SQL als Anfragesprache weitestgehend standardisiert ist, finden sich in der Syntax des umgesetzten Standards nur geringe Unterschiede bei beiden Systemen. Oracle 10g unterstützt den ANSI SQL 2003-Standard und bietet daher einige spezielle Funktionen mehr als der SQL 8 Server 2005, der den ANSI SQL 1999-Standard umsetzt. Das betrifft beispielsweise die Erstellung von verschachtelten Tabellen. Um datenbankspezifische Funktionen verwenden zu können, verfügen beide Systeme über eine prozedurale Spracherweiterung des SQL-Standards. Oracle nennt seine Erweiterung Procedural Language/SQL (PL/SQL), die des SQL Servers heißt Transact-SQL (T-SQL). Dadurch wird beispielsweise die Erstellung von Server-Variablen und Cursorn, die Verwendung von Programmkonstrukten wie der Verzweigung (IF…THEN…ELSE) und der Schleife (WHILE, FOR,…) sowie die Definition von Triggern möglich. Oracle bietet in PL/SQL darüber hinaus die Möglichkeit, Pakete über „CREATE PACKAGE xyz“ zu erstellen und Typen zu deklarieren, beispielsweise über „DECLARE gewinn NUMBER(6,2)“. Des Weiteren ist es in PL/SQL möglich mittels „FOR…END LOOP“ beziehungsweise „LOOP…END LOOP“ eine Schleifenkontrolle zu realisieren. 2.6 Sperren und Nebenläufigkeit Der Grad an Nebenläufigkeit, den ein Datenbanksystem realisieren kann, ist von vielen Faktoren abhängig. Zum Einen kommt es darauf an, auf welcher Grundlage das System Datenbankinstanzen erstellt und verwaltet (Vergleich Kapitel 1.4), zum Anderen wie die Datenbank physisch organisiert ist. Das betrifft vor allem den Bereich der Tabellen- und Indexorganisation. Ein weiterer wichtiger Punkt ist die Fähigkeit des Systems, konkurrierende, also nebenläufige, Anfragen zu verarbeiten. Dafür sind die zu Grunde liegenden Sperrkonzepte von hoher Bedeutung. 2.6.1 Sperrkonzepte in Oracle Oracle verfügt sowohl über automatische, als auch über manuelle Sperren. Verlangt eine Anfrage nicht explizit eine manuelle Sperre, so übernimmt das System die Anforderung von Sperren. Das Interessante an den automatischen Sperren ist, dass Oracle keine Lesesperren vergibt. Somit können Transaktionen, die lediglich Daten Lesen wollen, parallel au dieselben Daten zugreifen. Sollen Daten durch eine Transaktion geändert werden, so vergibt Oracle entweder eine ROW EXCLUSIV-Sperre, wenn nur bestimmte Tabellenzeilen von der Änderung betroffen sind, beziehungsweise EXCLUSIV-Sperren, wenn ganze Tabellen gesperrt werden müssen. Manuelle Sperren können differenzierter angewendet werden. Auch hier unterscheidet man zwischen Sperren auf Zeilenebene und Sperren auf Tabellenebene. Will man Tabellen für den schreibenden Zugriff anderer Transaktionen sperren, das Lesen der Daten jedoch erlauben, so kann man die Sperre „Shared“ anfordern. Will man auch das Lesen unterbinden, so ist die Sperre „Exclusiv“ das Mittel der Wahl. Für das manuelle Sperren auf Zeilenebene gibt es zum Einen die Sperre „Row Share“, mit der der lesende Zugriff für andere Transaktionen gewährt, der schreibende jedoch blockiert wird. Es ist anderen Transaktionen außerdem nicht möglich, eine „Exclusiv“-Sperre der ganzen Tabelle anzufordern. Verwendet man für eine Tabellenzeile die „Row Exclusiv“-Sperre, so unterbindet man zusätzlich auch „Shared“-Sperren anderer Transaktionen. Noch einen Schritt weiter geht die „Share Row Exclusiv“-Sperre, die zusätzlich auch Updates auf Daten verhindert. 9 Das Sperrkonzept von Oracle hat die Eigenschaft, dass Lesesperren Schreibsperren nicht blockieren. Das wird dadurch ermöglicht, dass Oracle UNDO-Segmente für das Sichern von Daten vor einem Update vornimmt. Siehe dazu auch Kapitel 1.7 Lesekonsistenz. 2.6.2 Sperrkonzepte in SQL Server Auch der SQL Server verfügt über automatische Sperrmodule. Im Gegensatz zu Oracle vergibt der SQL Server jedoch auch Sperren für lesende Zugriffe, beispielsweise für „SELECT“-Statements. Die zugehörige Sperre heißt „Shared“. Sollen Datensätze aktualisiert werden, so verwendet SQL Server „Update“-Sperren. Für „INSERT“- und „DELETE“Statements werden „Exclusive“-Sperren vergeben. Für den Anwendungsfall, dass eine große Menge an Daten in eine Tabelle kopiert werden soll, kennt SQL Server die „Bulk-Update“Sperre. Außerdem gibt es für Änderungen die DDL betreffend die so genannte „Schema“-Sperre. Sie findet zum Beispiel bei Hinzufügen oder Entfernen von Tabellenspalten Anwendung. Für Bereichsanfragen, die nur einen bestimmten Schlüsselbereich betreffen, besteht die Möglichkeit der Vergabe einer „Schlüsselbereich“-Sperre. Neben den automatischen Sperren gibt es im SQL Server noch die beabsichtigten Sperren. Sie dienen dazu, Sperren untergeordneter Ebenen vor Datenänderungen durch Sperren übergeordneter Ebenen zu unterbinden. Somit dienen beabsichtigte Sperren dem effizienteren Erkennen von Sperrkonflikten. So schützt die IS-Sperre (Intended Shared) S-Sperren niederer Hierarchieebenen und die IXSperre (Intended Exclusive) X-Sperren niederer Ebenen. Dabei ist anzumerken, dass die IXSperren eine Obermenge der IS-Sperren bilden und somit auch S-Sperren schützen. Um SSperren und IX-Sperren schützen zu können, werden SIX-Sperren (Shared Intended Exlcusive) verwendet. Mit der IU-Sperre (Intended Update) lassen sich Sperren vor Aktualisierungssperren schützen. Die SIU-Sperre (Shared Intended Update) stellt eine Kombination der S- und der IU-Sperre dar und entsteht durch die separate Einrichtung dieser beiden Sperren. In Analogie zu dieser Sperre gibt es noch die UIX-Sperren (Update Intended Exlcusive), die ebenfalls durch die separate Einrichtung einer U- und einer IX-Sperre entsteht. 2.7 Lesekonsistenz Konsistenz ist eines der Grundprinzipien relationaler Datenbanksysteme. Lesekonsistenz beschreibt dabei einen speziellen Sachverhalt. So stellt sich die Frage, auf welche Version eines Datenbestandes Transaktionen zugreifen. Das ist besonders dann von großem Interesse, wenn lang laufende Transaktionen auf Daten lesend zugreifen wollen, die zwischenzeitlich von anderen Transaktionen geändert wurden. Oracle und SQL Server verwenden hier unterschiedliche Ansätze, um dem Problem Herr zu werden. 2.7.1 Lesekonsistenz in Oracle Lesekonsistenz ist in Oracle ein transparenter Vorgang, der vom System automatisch durchgeführt wird. Sie wird über UNDO-Segmente gesichert, die vor jedem Update eines Datensatzes angelegt werden. Ist eine Transaktion dabei, einen Datensatz zu ändern, so wird 10 er vom System für andere Transaktionen sichtbar als in Bearbeitung stehend gekennzeichnet. Wollen andere Transaktionen diesen Datensatz lesen, so werden sie automatisch auf den letzen Eintrag in den Undo-Segmenten umgeleitet. Ist die bearbeitende Transaktion beendet, so wird der Datensatz mit einem Zeitstempel versehen (SCN). Dadurch wird ein Vergleich für andere laufende Transaktionen ermöglicht und sie können anhand ihrer Startzeit erkennen, ob ein Datensatz zu ihrer Laufzeit von anderen Transaktionen geändert wurde. 2.7.2 Lesekonsistenz in SQL Server Der SQL Server wendet zur Sicherung der Lesekonsistenz die so genannte „HOLDLOCK“Funktion an. Diese fordert gleichzeitig eine „Shared“-Sperre an und ermöglicht dadurch mehreren Transaktionen gleichzeitig einen Datensatz zu lesen. Will eine Transaktion jedoch ein Update auf einen diese „Shared“-Sperre betreffenden Datensatz ausführen, so wird sie so lange blockiert, bis alle an der Sperre beteiligten Transaktionen ein COMMIT ausgeführt haben. Um die Nebenläufigkeit von Transaktionen zu erhöhen bietet SQL Server eine Reihe verschiedener Isolationsstufen (Isolation Levels) für Transaktionen an. Die schwächste Stufe ist „Read Uncommitted“. Eine aktuell laufende Transaktion darf Daten, auf denen gerade ein Update durch eine andere Transaktion stattfindet bereits vor dem COMMIT der Transaktion lesen. Der Level „Read Committed“ setzt für das Lesen solcher Daten ein COMMIT der laufenden Transaktion voraus. Dieses Vorgehen verhindert das Auftreten von Dirty Reads. Die Tatsache, dass andere Transaktionen zwischen den einzelnen Anweisung de laufenden Transaktion allerdings Daten ändern dürfen, kann unter Umständen zu Non-Repeatable Reads und Phantom Reads führen. Der Level „Repeatable Read“ verschärft dieses Prinzip dahingehend, dass die laufende Transaktion komplett abgeschlossen sein muss, bevor andere Transaktionen geänderte Daten lesen können. Der Level „Serializable“ schützt darüber hinaus auch Schlüsselbereiche laufender Transaktionen, Bis zum Abschluss der laufenden Transaktion dürfen keine neuen Schlüssel in die Transaktion betreffende Schlüsselbereiche eingefügt werden. Der ebenfalls in der Version 2005 neu eingeführte Level „Snapshot“ implementiert eine ähnliche Funktionalität wie die Sperrkonzepte anderer Datenbanksysteme, die mit einer Zeilenversionierung arbeiten. Dabei sind für eine Transaktion zum Zeitpunkt ihres Beginns nur jene Änderungen von Datensätzen sichtbar, für die bis dahin auch ein COMMIT ausgeführt wurde. Diese Methodik wird auch als „Optimistic Locking“ bezeichnet. 2.8 Partitionierung Im Bereich der Partitionierung von Tabellen bieten beide Datenbanksysteme Lösungen an. Das Prinzip ist bei beiden gleich. Tabellen, oft auch Indizes, werden anhand bestimmter Kriterien in verschiedene Partitionen aufgeteilt und gespeichert. Es ist prinzipiell auch nicht von Bedeutung, auf welchem Medium die Partitionen liegen. Dadurch wird die physische Datenunabhängigkeit verbessert. Die Vorteile der Partitionierung liegen aber vor allem im Performancegewinn. Unter der Voraussetzung, dass der Index einer Tabelle ebenfalls partitioniert wird, muss bei einer Reorganisation eines Indexes nur der die Partition betreffende Index reorganisiert 11 werden. Das senkt die Systemlast erheblich. Dasselbe gilt für eine Defragmentierung von Indizes. Der wohl signifikanteste Vorteil liegt allerdings darin, dass der Datenbankserver in der Arbeit mit partitionierten Tabellen parallele CPU-Operationen nutzen kann. Es ist jedoch anzumerken, dass der Performancegewinn häufig erst dann zu Tage tritt, wenn man mit sehr großen Tabellen arbeitet, die mit mehreren Millionen von Zeilen beinhalten. Außerdem wird das Management der Datenbank vereinfacht, da einzelne Partitionen für Wartungszwecke offline genommen werden können, während andere Partitionen verfügbar bleiben. Es muss also nicht die gesamte Tabelle offline genommen werden. Es muss jedoch, um die Vorteile der Partitionierung zu nutzen, ein anhand bestimmter Kriterien analysierbarer Datenbestand vorliegen. Die Analyseergebnisse müssen sich auch in ein vom Datenbanksystem angebotenen passendes Verfahren umsetzen lassen. 2.8.1 Partitionierung in Oracle Seit Oracle8 gehört die Partitionierung zum Funktionsumfang von Oracle. In der Version 10g ist die Partitionierung jedoch nur der Enterprise Edition vorbehalten. Oracle stellt verschiedene Partitionierungsverfahren zur Verfügung. Die Bereichspartitionierung ermöglicht das Aufteilen von Tabellen iin Schlüsselbereiche anhand bestimmter Kriterien. Im Gegensatz dazu ermöglicht es die Hash-Partitionierung, die Daten mit Hilfe einer speziellen Hash-Funktion auf die Partitionen zu verteilen. Dadurch kann eine Gleichverteilung der Daten erreicht werden. Beide Verfahren lassen sich auch kombinieren, indem man Hash-Partitionen in bestimmten Bereichspartitionen erstellt. Dieses Verfahren wird als kombinierte Partitionierung bezeichnet. Seit Oracle 9i wird auch die Listenpartitionierung angeboten, mit deren Hilfe sich Daten anhand diskreter Werte, wie zum Beispiel geographische Daten, auf Partitionen aufteilen lassen. 2.8.2 Partitionierung in SQL Server Die Partitionierung im SQL Server erfolgt über die Erstellung einer Partitionierungsfunktion, der Festlegung eine Partitionsschemas, der Erstellung der Tabelle und der anschließenden Erstellung eines geclusterten Indexes, der die Partitionierungsfunktion und das Partitionsschema berücksichtigt. Die Partitionierungsfunktion ist dabei dafür zuständig, die Bereiche zu definieren, in die die Daten aufgeteilt werden sollen. Der SQL Server beschränkt sich dabei auf die Bereichspartitionierung, Es lässt sich mittels einiger Workarounds aber eine HashPartitionierung simulieren. Das Partitionierungsschema baut auf der Partitionierungsfunktion auf und legt den physischen Speicherort für die Datenbereiche fest. Die Partitionen können alle in derselben Dateigruppe untergebracht oder auf verschiedene Dateigruppen verteilt werden. Dabei können mehrere Partitionsschemata dieselbe Partitionierungsfunktion benutzen. Die im Anschluss zu erstellende Tabelle muss einen ungeclusterten Primärschlüssel haben, der auf die Tabelle gelegte Index muss geclustert sein. 2.9 Verfügbarkeit und Skalierbarkeit Um die Verfügbarkeit von Datenbanksystemen zu erhöhen gibt es die Möglichkeit des Clusterings. Ein solcher Cluster erlaubt es mehreren physischen Servern als ein virtueller 12 Server in Erscheinung zu treten. Fällt ein physischer Server aus, wird seine Funktionalität durch andere Server des Verbundes ersetzt. Oftmals implementieren die Cluster ein Plattensystem, mit dem jeder Clusterknoten üblicherweise über SCSI oder optische Medien verbunden ist. 2.9.1 Verfügbarkeit und Skalierbarkeit in Oracle Oracle bietet schon seit längerem umfangreiche Features für Hochverfügbarkeitslösungen an. Für die einfache Schaffung von Redundanz gibt es „Oracle Fail Safe“. An dem Konzept sind zwei Maschinen beteiligt, die sich jedoch nicht in einer Shared-Disk-Umgebung befinden. Die erste Maschine stellt läuft als aktiver Datenbankserver, die zweite Maschine hat einen Standby-Zugriff auf die Daten. Weiterführende Funktionalität wie echte Clusterunterstützung und Skalierbarkeit bietet „Oracle Real Application Cluster“ (RAC). Die Funktionalität ist nicht neu, sie basiert auf dem in Oracle 10g abgelösten Feature „Oracle Parallel Server“ (OPS). RAC ist in der Lage, die Rechenleistung der einzelnen Clusterknoten zu bündeln und dem Gesamtsystem zur Verfügung zu stellen. Die Herausforderung liegt dabei in der Kommunikation zwischen den Clusterknoten. Neben der Verwendung einer Shared-Disk-Umgebung ür den Zugriff gemeinsame Daten ist auch die gemeinsame Nutzung von Daten im RAM notwendig, um häufige Plattenzugriffe zu verhindern und damit die I/O-Last zu senken. Letzteres war eine Schwachstelle von OPS, die im RAC beseitigt wurde. RAC nutzt „Cache Fusion“, um Clusterknoten Daten zur Verfügung zu stellen, die sich im Cache eines anderen Clusterknotens befinden. Beim abgelösten OPS mussten dafür noch die Daten zuerst auf Platte geschrieben werden, bevor ein anderer Knoten sie lesen konnte (Pinging), Cache Fusion ist in der Lage, angeforderte Blöcke im Cache des einen Knotens via Highspeed-Interconnect direkt in den Cache des anderen Knoten zu übertragen. Neben dem Performancegewinn bietet der RAC auch eine Failover-Funktion für jeden Knoten im Cluster. Da sich alleMaschinen dieselben Ressourcen verwenden kann ein Umleiten von Verbindungen im Falle eines Serverausfalls problemlaos erfolgen. 2.9.2 Verfügbarkeit im SQL Server Der SQL Server stellt im Bereich der Hochverfügbarkeit die Funktionalität der Failover Server durch Clustering bereit. Im Speziellen realisiert wird das Clustering durch den Windows Cluster Server, also auf Betriebssystemebene. Um einen SQL Cluster zu erstellen, muss man also zuerst einen Windows Cluster erstellen und auf diesem dann ganz normal den SQL Server installieren. Es ist wichtig zu erwähnen, dass der SQL Server Cluster lediglich Redundanz, nicht aber Skalierbarkeit zur Verfügung stellt. Er agiert als reiner Failover Cluster. Jeder Server im Cluster kann entweder aktiv oder passiv sein. Die Menge der passiven Server bietet die Redundanz für die Menge der aktiven Server. Ist ein aktiver Server von einem Ausfall betroffen, wechselt ein passiver Server in den Aktiv-Modus und übernimmt den Status des ausgefallenen Servers anhand des gemeinsamen Transaktionsprotokolls und der Datendateien. Der Benutzer bekommt davon wenig mit, er bemerkt lediglich eine verlorene 13 Verbindung. Ist die Anwendung für den Clusterbetrieb konzipiert, so bemerkt sie den Ausfall und initiiert die Verbindung neu. 3. Verwaltbarkeit Die Verwaltbarkeit von Datenbanksystemen spielt angesichts des meist immensen Funktionsumfangs heutiger Datenbanksysteme eine enorm wichtige Rolle. Sie ist entscheidend für schnelles Handeln der Administratoren, die Effizienz von Entwicklungsprozessen sowie für Aspekte der Skalierbarkeit und Sicherheit. Kennzeichnend für Oracle und den SQL Server ist, dass versucht wird, alle wichtigen Werkzeuge zur Verwaltung in zentralen Umgebungen zu bündeln. 3.2 Verwaltung des SQL Server Seit der letzten Version SQL Server 2000 haben sich zahlreiche Änderungen im Bereich der Verwaltung des SQL Servers ergeben. Die Version 2005 führt das SQL Server Management Studio (SSMS) ein, das die zentrale Verwaltungskonsole des SQL Servers darstellt und den Enterprise Manager des SQL Server 2000 ablöst. Das Layout des SSMS ist an das Visual Studio angelehnt und bietet Zugriff auf die Datenbankengine und auf Business IntelligenceDienste (siehe Kapitel 3.2) wie die Integration Services, die Analysis Services und die Reporting Services. Außerdem verfügt es über eine Projektverwaltung, Query-Editoren und eine Anbindung an SourceSafe. Zur Überwachung der Aktivitäten der Datenbankengine gibt es den „Profiler“. Er liefert Ausführungszeiten von Anfragen und Daten über die I/O-Last. Die ermittelten Werte können an Monitoring-.Mechanismen von Windows weitergegeben werden. Der „Tuning Advisor“ überwacht SQL-Anfragen und erkennt selbständig lang laufende Transaktionen und bietet Verbesserungsvorschläge bezüglich der Anfrageoptimierung. Diese betreffen die Änderung von Datenstrukturen, die Datenverteilung auf den physischen Datenträgern, die Einführung von Indizes sowie Partitionierungsvorschläge. Mit Hilfe des „Activity Monitors“ lassen sich Benutzersitzungen protokollieren und analysieren. Er bietet umfangreiche Filteroptionen, eine Sperrenanalyse und unterstützt beim Aufspüren von Deadlocks. Über den „Configuration Manager“ lassen sich alle Dienste des SQL Servers verwalten und viele weitere Parameter einstellen, beispielsweise die Verwaltung sämtlicher Netzwerkeinstellungen. Die Shell des SQL Servers bildet SQLCMD, die osql/Isql ablöst. Sie arbeitet über die Datenbankschnittstelle OLE DB und ermöglicht nun auch dedizierte Verbindungen mit der Datenbank. Dafür werden im Vorfeld Systemressourcen reserviert, um Administratoren im Fehlerfall das Eingreifen zu ermöglichen. 3.1 Verwaltung von Oracle Die zentrale Stelle zur Verwaltung von Oracle ist der „Enterprise Manager“. Er besteht aus verschiedenen Management-Agents, die es für nahezu alle verfügbaren Betriebssysteme gibt. 14 Weitere Bestandteile ist die „Central Console“, der „Oracle Management Service“ (OMS) und das „Management-Knowledge Center“ (MKC). Die zentrale Oberfläche für den Enterprise Manager bildet eine HTML-Oberfläche, die die Verwaltung zentraler Funktionen wie Backup und Recovery, Export und Import, Instanzen, Schemata, RAC, OLAP, Data Guard und zahlreicher Sicherheitseinstellungen wie Benutzer, Rollen und Zugriffsrechte ermöglicht. Ebenfalls über das Webinterface zu erreichen ist iSQL, eine Java-basierte SQL-Konsole, die neben typischen SQL-Anfragen auch die Einstellung zahlreicher Datenbankparameter ermöglicht. Zum Funktionsumfang des Enterprise Managers gehören noch optionale Komponenten, oftmals auch „Option Packs“ genannt. So erlaubt die „Database Diagnostics Option“ das Monitoring lokaler und verteilter Datenbanken und hilft dabei, Flaschenhälse der Datenverarbeitung zu entdecken. Zum Umfang der Option gehören auch einige Tools zur Problembehebung. Für das Monitoring des Oracle Application Servers ist die „Application Server Diagnostics Option“ zuständig. Mit Hilfe der „Database Tuning Option“ lassen sich Transaktionen überwachen und Anfragen optimieren. Über die „Database Change Management Option“ lassen sich Änderungen an den Datenbankschemata evaluieren und implementieren. Die „Database Configuration Management Option“ ermöglicht die Hardware- und Softwareverwaltung des Datenbanksystems sowie eine Patchverwaltung und Replikationseinstellungen. 4. Data Warehouse und Applikationsentwicklung Der Bereich des Data Warehousing beschäftigt sich mit der Analyse großer Datenmengen, um daraus Schlüsse ziehen zu können. Das betrifft zum Beispiel Vergangenheitsanalysen, Zukunftsprognosen und die daraus resultierende Entwicklung von Verfahren zur Geschäftsoptimierung. Die dabei verwendeten Systeme müssen dafür in der Lage sein, große Mengen an Daten aufzuzeichnen und verlässlich zu speichern. Des Weiteren ist eine konsistente Sicht auf die Daten notwendig, um im laufenden Betrieb Daten lesen und Berichte erstellen zu können. Spezielle Analysemethoden ermöglichen die Erstellung von Geschäftstrends. Erreicht wird das über die Erstellung von Zusammenfassungen und deren gegenseitige Verknüpfung. Typisch für Data Warehouse-Prozesse ist die strategische Analyse von Trends über einen großen Datenbestand, weniger das Sammeln von einzelnen Fakten. Außerdem wird auf Datenbestände, die sich in einem Data Warehouse befinden, meist lesend zugegriffen. Es gibt seltener Updates auf die Daten. Ein weiterer wichtiger Punkt ist der Fakt, dass die analysierten Daten nicht zwangsläufig sekundengenaue Aktualität benötigen, da die für Data Warehouse typischen Anwendungszwecke meist nur Daten eines bestimmten Kriteriums benötigen, seltener Daten in Echtzeit. 4.1 Data Warehouse in Oracle Oracle engagiert sich bereits seit längerem im Bereich des Data Warhousing und bietet umfassende Konzepte zur Erstellung, Verwaltung und Nutzung von Warehouses an. Für die Datenverwaltung in einem Data Warehouse werden Tabellen nach dem so genannten „StarSchema“ angelegt. Dises ist notwendig, um den Ansprüchen gerecht zu werden, die ein Data 15 Warehouse benötigt und die Performance zu steigern. Der übliche Ansatz der Datenmodellierung über das Entity Relationship Modell ist dafür ungeeignet, da Warehousetypische Anfragen sich meist über mehrere inhaltliche Bereiche, auch Dimensionen genannt, erstrecken und damit zu einer hohen Join-Last des ER-modellierten Systems führen würden. Im Zentrum des Star-Schemas steht die Faktentabelle. Sie enthält zusammenfassende Daten, die sich je nach dem Anwendungsszenario des Data Warehouses unterscheiden können. Es können auch mehrere Faktentabellen existieren. Umgeben wird die Faktentabelle von mehreren Dimensionstabellen, die meist bereichsspezifische Informationen beinhalten. Das können beispielsweise Informationen über Verkäufe, Abteilungen, räumliche Informationen oder Zeiträume sein. Die Daten der Dimensionstabellen werden je nach Anwendungszweck kombiniert und umgeformt und in entsprechender Form in die Faktentabelle ausgeleitet. Redundanz wird hier durchaus in Kauf genommen, da der alleinige Zugriff der Warehouse-Benutzer auf die Faktentabelle unnötige Joins der Dimensionstabellen unterbindet. 4.1.1 Oracle Data Warehouse Builder Es gibt verschiedene Wege, um Warehouses zu erstellen und zu verwalten. Eine Möglichkeit wäre die Benutzung von PL/SQL. Oracle stellt aber auch einige Werkzeuge für diesen Entwicklungsprozess zur Verfügung. Im Zentrum steht dabei der „Oracle Warehouse Builder“ (OWB). Er ist wie viele andere Werkzeuge Bestandteil der Oracle Developer Suite und ermöglicht das Design und die Implementierung von Data Warehouses, Data Marts oder Business IntelligenceAnwendungen. Warehouse-Schemata können zentral verwaltet und der Datenfluss zwischen Datenquellen- und Senken kontrolliert werden. Des Weiteren lassen sich mit dem OWB OLAP- und Ad-Hoc-Query-Umgebungen entwickeln. Der gesamte Implementierungsprozess wird dabei an zentraler Stelle überwacht. Zur Arbeit mit dem OWB gibt es den OWB-Client, der die Schnittstelle zwischen dem OWB und dem Entwickler darstellt und auf die Funktionalitäten des OWB zugreift. Die im OWb erstellten Modelle lassen sich mit Hilfe des Code Generators in Skripte umsetzen, die dann auf den Daten ausgeführt werden können. Änderungen in den Warehouse-Schemata lassen sich einfach im OWB vornehmen und durch den automatisch erzeugten Code schnell implementieren. 4.1.2 Oracle Discoverer Der Discoverer übernimmt die Aufgabe, Anfragen an das Warheouse abzusetzen und Berichte zu erstellen. Er ist vorrangig für Endbenutzer gedacht und existiert in vier verschiedenen Varianten. Zum einen gibt es die Variante „Administrator“. Sie ist dem Namen entsprechend Administratoren und Power Usern vorbehalten und dient Ihnen dazu, den Benutzern Discoverer-Umgebungen zu erstellen. Das erfolgt bequem über grafische Oberflächen. Die Variante „Desktop“ ist für Endbenutzer gedacht un erlaubt diesen ein einfaches und schnelles Arbeiten mit Daten und Berichten aus dem Data Warehouse. 16 Die Varianten „Administrator“ und „Desktop“ sind echte Desktop-Applikationen, wohingegen die Varianten „Plus“ und „Viewer“ Webapplikationen darstellen, die auch einfach über einen normalen Webbrowser genutzt werden können. Dabei stellt „Plus“ eine webbasierte Erweiterung zu „Desktop“ dar, „Viewer“ bietet dem Nutzer vordefinierte Sichten auf Berichte, ohne dass Änderungen an den Daten vorgenommen werden können. Durch eine enge Interaktion des Discoverers mit „Oracle Portal“ ist es möglich, Webseiten zu erstellen, die direkten Zugriff auf die Berichte des Discoverers haben. 4.1.3 Oracle Reports Oracle Reports dient ebenso wie Oracle Discoverer zur Erstellung von Berichten. Nur bietet er eine breitere Unterstützung für Datenquellen und Ausgabeformate. So lassen sich Daten aus Oracle Datenbanken, Oracle Express, OLAP-Umgebungen, XMLDokumenten, über die JDBC-Schnittstelle oder Textdateien akquirieren. Für die Berichterstellung bietet Oracle Reports die Möglichkeit, Templates zu verwenden oder auch eigene Templates zu erstellen. Dabei ist der Integration von Medien wie Diagrammen, Bildern und ähnlichem kaum Grenzen gesetzt. Die Ausgabeformate sind ebenfalls sehr vielfältig. Zu diesen Zählen der Versand über Email, die Erstellung von Dateien beispielsweise im PDF-Format, das Versenden an Drucker und nicht zuletzt die Erstellung von HTML-Seiten. Im Web-Bereich bietet Oracle Reports auch Unterstützung für die Skriptsprache JSP. Des Weiteren lassen sich erstellte Webseiten in Oracle Portal publizieren. 4.2 Data Warehouse in SQL Server 4.2.1 SQL Server und das .NET-Framework Das neue am SQL Server 2005 ist die Integration der Common Language Runtime in den Kern des Datenbanksystems. Dadurch werden im Datenbankserver sämtliche Softwarebasisdienste, die nicht Bestandteil des Betriebssystems sind, verfügbar. Das betrifft beispielsweise Funktionsgruppen für die Programmierung in ASP.NET, den Dateizugriff, die Kommunikation und die Programmierung von grafischen Oberflächen mit Hilfe von Windows Forms. Signifikant ist die Möglichkeit, Datenbankcode wie zum Beispiel Stored Procedures oder Trigger in allen verfügbaren .NET-Sprachen schreiben zu können. Das erleichtert die Erstellung von Anwendungen, da Datenbankanweisungen direkt in Applikationen eingebunden werden können, ohne externe Schnittstellen nutzen zu müssen. Der erstellte Code läuft als Managed Code in der Common Language Runtime. Die Integration des .NET-Frameworks fungiert als Mittler zwischen dem SQL Server und Microsofts Visual Studio. Entwickler verfügen dadurch über eine einheitliche Oberfläche, mit der sie in der Lage sind, einheitlichen Code für verschiedene Anwendungszwecke zu entwerfen. Sei es für den Datenbankserver oder für andere Applikationen. Dieser Schritt von Microsoft soll zu einem beschleunigten Entwicklungsprozess führen. 17 Das .NET-Framework bildet die Grundlage für Microsofts Business Intelligence und Data Warehouseing-Angebot. 4.2.2 Integration Services Die „Integration Services“ sind der Grundbaustein für Microsofts Data Warehouse. Sie haben die Aufgabe, verschiedene Daten zu einem neuen Datenbestand, den „Data Stores“, zusammenzuführen. Diese Funktionalität wurde in SQL Server 2000 noch von „Data Transformation Services“ (DTS), die noch auf ActiveX und DOM beruhten, getragen. Die Integration Services arbeiten nun mit dem .NET-Framework. Um eine sanfte Migration zu ermöglichen sind die DTS aber noch parallel benutzbar. Im Speziellen bestehen die Integration Services aus einer Reihe von Werkzeugen zur Extraktion von Daten aus verschiedenen Quellen. Dabei kann es sich um Datenbankschnittstellen wie OLE DB und ODBC, TCP/IP-Protokolle wie HTTP oder FTP, einfache Dateien auf unterschiedlichen Speichermedien und viele andere Quellen handeln. Die somit gewonnenen Daten können in ebenso vielfältige Ziele geladen werden. Der Integrationsablauf wird in Paketen definiert. Um diese zu erstellen gibt es den „SQL Server Integration Services Designer“ (SSIS Designer). Dieser ermöglicht die Beschreibung von Projekten über grafische Oberflächen und bietet zahlreiche Debughilfen an. 4.2.3 Analysis Services Die Analysis Services stellen einen OLAP-Server im Datenbanksystem bereit und bilden damit eine Entwicklungsplattform. Eine Aufgabe der Analysis Services ist die Bereitstellung von Basisdaten für andere Anwendungen wie zum Beispiel Microsoft Excel oder den Scorecard Manager. Sie sind an das Visual Studio angebunden und stellen eine Reihe von Assistenten und Design-Tools zur Verfügung, mit denen sich beispielsweise Cubes erstellen lassen, die Fakten- und Dimensionstabellen oder Measures erstellen beinhalten. Eines der zentralen Werkzeuge der Analysis Services ist der „Data Source Modeller“. Mit ihm lassen sich Datenmodelle und Relationen aufbauen, die die Grundlage für die Cubes bilden. Der „Data Mining Assistant“ dient zur Verwaltung eigenständiger Datensammlungen, die mit Mining-Algorithmen abgeglichen werden können. Dazu werden unter anderem neuronale Netze und Zeitreihen unterstützt. Die „Key Perfomance Indicators“ (KPI) dienen der Definition graphisch anpassbarer Geschäftsmetriken und bilden die Grundlage für Unternehmensbenchmarks. Die Analysis Services arbeiten als Web-Server, speziell als XMLA-Server. Die Datenmodelle, die erstellt wurden, werden als Web-Dienste angeboten. Dadurch lassen sie sich einfacher von anderen Applikationen nutzen. Es werden mehrere Instanzen unterstützt und eine Failover-Funktionalität bereitgestellt. Für einen schnelleren Zugriff auf Daten kommt das „proaktive Caching“ zum Einsatz, das Hochgeschwindigkeitsapplikationen Kopien bestimmter Daten bereitstellt. Durch die freie Konfigurierbarkeit des Caches wird die Skalierbarkeit der angebotenen Dienste erhöht. 18 4.2.4 Reporting Services Die Aufgabe der Reporting Services ist die Erstellung und Verwaltung jeglicher Berichte. In früheren Versionen von SQL Server gab es keine eigene Funktionalität zur Berichterstellung. Damals wurde auf eine Kooperation mit Crystal Reports gesetzt. Das .NET-Framework bietet hier Integrationskonzepte zur Einbindung von Berichten in weitere Anwendungen. Die Reporting Services bieten einen eigenen XML-Dialekt „Report Definition Language“ (RDL).RDL-Dokumente können zur Laufzeit an die Reporting Services Engine übergeben werden, die für das Auslesen benötigter Daten und den Aufbau von Reports zuständig ist. Als Datenquellen für die Reporting Services können OLAP-Dienste wie die Analytical Services sein, aber auch relationale Daten, angelegte Data Warehouses oder allgemeine Datenbankschnittstellen wie OLE DB oder ODBC können verwendet werden. Im Zentrum der Reporting Services steht der „Report Manager“ als WYSIWYG-Editor. Er steht im Kontext mit dem Visual Studio und ermöglicht die Programmierung von Berichten in .NET-Sprachen. Dadurch lassen sich unter anderem einfache Auswertungen oder Ad-HocReports erstellen. Das .NET-Framework bietet hier eine einfachere Bereitstellung von Daten für OLAP-Umgebungen. Mit zahlreichen offenen Schnittstellen wird der Entwickler in die Lage versetzt, eigene Werkzeuge für die Berichterstellung zu entwickeln. Für die Verteilung und die Ausgabe von Berichten sind die „Delivery Services“ verantwortlich. Sie ermöglichen den Versand per Email, die Erstellung von PDFs, HTMLSeiten die sich auch in ASP.NET-Anwendungen einbinden lassen sowie die Weitergabe an Sharpoint-Server und Microsoft Office. 4.2.5 Notification Services Die Notification Services erlauben die Definition von Benachrichtigungsabläufen und zu verwendenden Quellen. Sie sind in die Analysis Services und in das SQL Server Management Studio integriert. Das damit angestrebte Ziel heißt Real-Time.Monitoring, wodurch im Speziellen eine schnelle Übermittlung der Ergebnisse der Analysis Services angestrebt wird. 5. Zusammenfassung Der Vergleich beider Systeme anhand der vielfältigen Kriterien hat gezeigt, wie ähnlich beide Systeme strukturiert sind. Das liegt nicht zuletzt an der vergleichbaren Zielgruppenausrichtung. Microsoft hat mit dem SQL Server 2005 ein umfassend überarbeitetes Produkt entwickelt, dass in Hinblick auf die Funktionalitäten ähnlich leistungsfähig wie Oracle ist. Microsoft setzt mit der Integration des .NET-Framework stark auf eine Konsolidierung von Entwicklungsprozessen und kann dadurch entscheidende Vorteile gegenüber Oracle gewinnen. Oracle hingegen setzt in dieser Richtung sehr stark auf Erfahrung und Zuverlässigkeit und verbessert seine Konzepte stetig. Zukunftsentscheidende Aspekte des Erfolgs beider Systeme liegen in der Akzeptanz von Microsofts Konsolidierungskonzeptes und der Plattformausrichtung der Unternehmen. Dieser Prozess könnte maßgeblich von den Grundsatzentscheidungen der Kunden in den Bereichen 19 Sicherheit, Stabilität und Performanz und der Umsetzung daraus resultierender gewünschter Funktionalitäten auf den verschiedenen Rechnerarchitekturen und Betriebssystemen beeinflusst werden. 6. Quellen Greenwald, Stackowiak, Stern: „Oracle Essentials: Oracle Database 10g, 3rd Edition“, O’Reilly 2004 Baumeister: “SQL Server 2005”, Datenbankspektrum 16/2006 Nielsen: “SQL Server 2005 Bible”, Wiley 2007 Hobbs, Hillson, Lawande, Smith: „Oracle Database 10g Data Warehousing“, Elsevier Digital Press 2005 Roy: „IDS 10 und Oracle 10g im Vergleich“ , 2005 PL/SQL – Wikipedia, http://de.wikipedia.org/wiki/PL/SQL, Abruf 15.6.2008 20