Datenbanken II

Transcription

Datenbanken II
Datenbanken II
Ausarbeitung zum Thema:
Oracle 10g und MS SQL Server 2005
ein Vergleich
Thomas Wächtler
MatrNr.: 39221
Thomas Wächtler
Matrikelnummer: 39221
Inhaltsverzeichnis
0.
Einführung
1.
Komponenten
2.
Architektur des SQL Server 2005
2.1
SQLOS
2.2
Relational Engine
2.3
Protocol Layer
3.
Werkzeuge des SQL Server 2005
3.1
Object Explorer
3.2
Profiler
3.3
Tuning Anvisor
3.4
Activity Monitor
3.5
Configuration Manager
3.6
SQLCMD
4.
Services des SQL Server 2005
4.1
Replikation
4.2
Reporting
4.3
Analysis
4.4
Notification
4.5
Integration
5.
Vergleich SQL Server 2005 und Oracle 10g
5.1
Daten Verwaltung
5.2
Indexierung
5.3
Concurrency Control und Locking
5.4
Backup und Recovery
5.5
Datenbank Tuning
5.6
Partitionierung
5.7
Clustering
6.
Quellen
Seite 1
Thomas Wächtler
Matrikelnummer: 39221
0. Einführung
Microsoft SQL Server 2005 ist ein RDBMS (relationales Datenbank Management System)
welches das alte SQL Server 2000 nach 5 Jahren Entwicklungszeit abgelöst hat. Wie Oracle
mit PL/SQL hat auch Microsoft zusammen mit Cybase den SQL Standard mit der Sprache
Transact-SQL (T-SQL) um Variablen, Funktionen, Prozeduren und Objekt Relationale
Erweiterungen ausgebaut. Mit einer maximalen Speicherkapazität von einem ExaByte bietet
der SQL Server 2005 die drittgrößte mögliche relationale Datenbank an, die nur noch von
PostgreSQL und Oracle übertroffen wird.
Der SQL Server 2005 ist ausschließlich für Windows-Plattformen entwickelt worden und
bietet die Windows-typische grafische Benutzeroberfläche. Die mit der Version 2005
eingeführte enge Verknüpfung mit dem .NET Framework ermöglicht es Entwicklern
einfacher über die integrierte API auf die Datenbank zuzugreifen und .NET Code direkt in der
Datenbank Engine auszuführen.
Der SQL Server ist von seiner Konzeption her ein direkter Konkurrent von Oracle und DB2
von IBM.
Im Folgenden soll ein Einblick in den Aufbau, die Komponenten und Services des SQL Server
2005 gegeben werden. Weiterhin soll ein Vergleich zu Oracle 10g im Bereich der technischen
Aspekte angestellt werden, der jedoch nicht auf Vorteile bzw. Nachteile hinweisen soll,
sondern die Unterschiede beider DBMS aufzeigen soll.
1. Komponenten
Der SQL Server 2005 beinhaltet neben der für ein DBMS wichtigsten Komponente, der
Datenbank Engine, viele weitere Komponenten und Services.
Datenbank-Engine:
Die Engine ist das Kern Element des gesamten Pakets und beinhaltet Services zur
Speicherung, Verarbeitung und Sicherung der Daten. Sie ist für den kontrollierten Zugriff
auf die Daten, sowie für eine schnelle Verarbeitung von Anfragen und Transaktionen
zuständig.
Integration Services:
Der
Service
wird
verwendet
um
Daten
Seite 2
aus
verschiedenen
Datenquellen
Thomas Wächtler
Matrikelnummer: 39221
zusammenzuführen und bilden somit die Grundlage für den Bereich Business-Intelligence,
bei dem das Datawarehousing eine wichtige Rolle spielt. Hier werden ETL-Prozesse
genutzt um Daten zu extrahieren, zu transformieren und die so bearbeiteten Daten in
eine andere Datenquelle zu laden.
Analytical Services:
Sie sind für analytische Verarbeitung der durch die Integration Services bereitgestellten
Daten zuständig. Es werden verschiedene Services für OLAP und Data Mining angeboten.
Es werden MOLAP, ROLAP, HOLAP durch die OLAP-Engine unterstützt. Für Data Mining
wird die DMX query language genutzt.
Reporting Services:
Eine Umgebung in der tabellarische, grafische oder formfreie Reports generiert werden,
die klassisch oder per Web-Interface ausgewertet werden können. Hierzu werden die
Integration Services genutzt, was ermöglicht, auch nicht persistente Datenquellen für
Reports zu verwenden.
Notification Services:
Ein Service der Benachrichtigungen sendet, wenn ein bestimmtes Ereignis in der
Datenbank eintritt. Dieser Service registriert sich als Trigger auf dem Datenbank-Server
und versendet beim eintreten eines zuvor festgelegten Events eine Nachricht über den
Service Broker, der die unterschiedlichen Komponenten zusammen synchronisiert, auf
Basis des Nachrichtenaustauschs. Wird z.B. für die schnelle Übermittlung von Daten, die
von Analyse Diensten erstellt wurden, verwendet.
Replication Services:
Wird zur Wiederherstellung und Synchronisierung der Daten in der Datenbank genutzt.
Funktioniert wie eine Art Client/Server. Der DB-Server sendet eine Nachricht an alle
Clients, diese wiederum aktualisieren ihren Datenbestand.
.NET Framework:
umfasst Klassenbibliotheken (API's), Dienste, und eine Laufzeitumgebung. Es ermöglicht
die Ausführung von Programmen, die speziell für das Framework programmiert wurden.
Es erleichtert durch vorgegebene Standards, die Kommunikation zwischen verschiedenen
Microsoft Diensten, wie dem SQL Server und z.B. dem Visual Studio, indem es
Seite 3
Thomas Wächtler
Matrikelnummer: 39221
Schnittstellen bereitstellt, die von beiden genutzt werden können.
SQL-Server Management Studio:
ist eine Umgebung in der die Komponenten des SQL Server verwaltet, konfiguriert und
entwickelt werden. Ermöglicht den Zugriff auf den SQL Server über grafische Tools und
Editoren.
Weiterhin gibt es Werkzeuge für Monitoring, Management, Backup und Restore.
2. Architektur des SQL Server 2005
Der Microsoft SQL Server 2005 ist in 3 Hauptbestandteile aufgeteilt: SQLOS beinhaltet die
Grundlegenden Dienste, die zur Ausführung des SQL Server notwendig sind. Es beinhaltet die
Verwaltung von Threads und Speicher, sowie die Ein- und Ausgabeoperationen. Die
Ralational Engine implementiert die relationalen Datenbankkomponenten, wie Tabellen,
Anfgragen und Stored Procedures und das Typsystem mit dem die Datenbanken arbeiten.
Der Protocol Layer ist die Schnittstelle zu anderen Anwendungen, außerhalb des SQL Server.
2.1 SQLOS
SQLOS implementiert Funktionen, die sonst vom Betriebssystem übernommen werden, wie
Ablaufplanung von Threads, Speicherverwaltung, Resourcenmanagement, Fehlerbehandlung
und Deadlock Erkennung. Da eine Datenbank anders als ein Filesystem, wie es das
Betriebssystem zur Verfügung stellt, auf die schnelle und effektive Verarbeitung von Daten
spezialisiert ist und auch viel mehr Daten zu verwalten hat, wurde eine eigene
Speicherverwaltung für den SQL Server programmiert. Auch weitere bereits erwähnte
Bestandteile mussten dafür angepasst werden.
SQLOS beinhaltet eine API, die es Programmierern ermöglicht, auf die im System
vorhandene Hardware zuzugreifen, ohne dabei die technische Komplexität der Hardware
verstehen zu müssen.
Die Hauptbestandteile des SQLOS sind Nodes, Schedulers und Tasks. Die oberste Ebene
bilden die Memory Nodes, denen die CPU Nodes untergeordnet sind. Jeder CPU Node
beinhaltet mehrere Scheduler, der wiederum die einzelnen Tasks ordnet um sie dann auf der
CPU auszuführen. SQLOS bietet somit Support für Programmierung paralleler Prozesse.
Seite 4
Thomas Wächtler
Matrikelnummer: 39221
2.2 Relational Engine
Die relationale Engine implemtiert die Logik für die relationale Datenbank auf Basis der
durch SQLOS bereitgestellten API. Hier werden die Datentypen definiert, die dann die
Objekte charakterisieren, die in Tabellen gespeichert werden. Weiterhin werden hier
Objekte wie Tabellen, Indizes, Logs und andere definiert, die gespeichert werden können. Sie
beinhaltet eine Storage Engine, die die Speicherung von Daten auf persistenten
Datenträgern und den schnellen Zugriff auf diese Daten verwaltet. Diese Engine
implementiert Log- basierte Transaktionen, sodass alle Änderungen dem ACID Prinzip
genügen. Sie beinhaltet weiterhin den Query- Prozessor, der die gespeicherten Daten
abruft. Die SQL Anfrage definiert, welche Daten verändert oder gelesen werden sollen, der
Query- Prozessor optimiert und übersetzt die Anfrage, sodass SQLOS sie versteht und teilt
sie in Sequenzen auf, die beschreiben, welche Operationen nacheinander durchgeführt
werden müssen um die Daten letztendlich zu ändern oder zu erhalten.
2.3 Protocol Layer
Der Protocol Layer implementiert das externe Interface zum SQL Server. Alle Operationen,
die auf dem SQL Server aufgerufen werden können, werden mittels eines von Microsoft
definierten Formats kommuniziert, welches sich Tabular Data Stream (TDS) nennt. TDS ist
ein Protokoll, das verwendet wird um den Transfer der Daten zwischen Datenbank-Server
und Client durchzuführen. TDS kann in andere Kommunikationsprotokolle wie TCP/IP oder
Pipes eingebaut werden.
3. Werkzeuge des SQL Server 2005
3.1 Object Explorer
Der Objekt Explorer ist das zentrale Element zur
Administration des SQL Server. Er bietet eine
grafische Benutzeroberfläche, in der alle auf dem
Server vorhandenen Datenbanken und Objekte
Seite 5
Thomas Wächtler
Matrikelnummer: 39221
(Tabellen + Spalten, Relationen, Indizes, Views, Stored Procedures und Trigger) angezeigt
und verwaltet werden können. Hier kann man sich zu beliebigen Diensten verbinden und alle
administrativen Tätigkeiten ausführen. Der Object Explorer verbindet sich zu Datenbank
Instanzen, Analyse-, Integrations-, Reporting- Diensten.
3.2 Profiler
Der Profiler dient zur Analyse von Aktivitäten, wie SQL Operationen, und gibt Ausführzeiten
oder I/O-Lasten an. Er überwacht eine Instanz des SQL Server oder einen Analyse Service.
Die Ergebnisse der Analyse können in einer Tabelle oder in einer Datei gespeichert werden,
diese nennt man auch Ablaufverfolgungsdatei. Man kann so z.B. selbst programmierte
Prozeduren überwachen, deren Ausführungszeiten analysieren und ggf. die Prozedur weiter
optimieren. Probleme, die zu Fehlern führen können so ebenfalls analysiert werden. Vom
Grundkonzept
her
ähnlich
in
der
Funktionalität
wie
Profiler
in
der
Anwendungsprogrammierung, wie dem Java Profiler.
Aufgaben:
•
Schrittweises Untersuchen problematischer Abfragen
•
Untersuchen langsamer Abfragen
•
Erfassen von problembehafteten T-SQL Abfragen (Replikation auf einem Testserver)
•
Überwachung der Auslastung des SQL-Server (zur Optimierung)
3.3 Tuning Advisor
Der Database Engine Tuning Advisor (DTA) dient der Analyse von SQL-Abfragen. Dies dient
dem aufspüren sehr lang dauernder Transaktionen, für die der Advisor auch
Verbesserungsvorschläge generieren kann. Dies umfasst sowohl Vorschläge für die
strukturelle Anordnung der Daten und die Verteilung auf dem Speichermedium, als auch
Vorschläge für mögliche Indizes auf bestimmten Spalten. Nach der Auswertung stellt der
DTA ein Script für sinnvolle Änderungen und somit zur Optimierung der Datenbank zu
Verfügung. Der DB-Administrator kann dann bequem die verschiedenen Vorschläge
miteinander vergleichen und Änderungen an der Struktur der Daten vornehmen.
Funktionsumfang:
Seite 6
Thomas Wächtler
•
Matrikelnummer: 39221
Empfehlen von Indizes auf bestimmten Spalten, Partitionen nach Arbeitsauslastung
und indizierten Sichten
•
Analysieren der Auswirkungen von vorgeschlagenen Änderungen
•
gezielte Optimierung auf bestimmte Gruppen von kritischen Anfragen
•
Berücksichtigen von Alternativen
•
Vorschläge zur Anpassung
3.4 Activity Monitor
der Activity Monitor ermöglicht die Überwachung aller Usersessions und deren Connections
zur Datenbank Engine. Hier können vergebene Sperren und somit auch Dead-Locks
analysiert werden um diese dann mit Hilfe anderer Werkzeuge zu beheben. Es können
sowohl alle aktuellen Sperren der aktuellen Session, als auch Sperren auf bestimmten
Objekten angezeigt werden.
3.5 Configuration Manager
Mit dem Configuration Manager lassen sich die verschiedenen bereits erwähnten Dienste
verwalten. Außerdem können hier die Netzwerkprotokolle konfiguriert werden, über die der
SQL Server mit anderen Clients kommuniziert. Mit diesem Tool lassen sich die Dienst starten,
anhalten, fortsetzen und beenden, oder Eigenschaften eines einzelnen Dienstes geändert
werden. Es lassen sich im Bereich Protokollverwaltung die Server und Client-Protokolle
bearbeiten und auch Verschlüsselung erzwingen. Vom SQL Server unterstützte Protokolle
zur Übertragung sind: Shared Memory, TCP/IP, Named Pipes und VIA.
3.6 SQLCMD
Dies ist ein Werkzeug mit dem interaktiv T-SQL Kommandos ausführen kann. Es ist mit der
MySQL Konsole oder iSQL Plus von Oracle vergleichbar. Der Verbindung über den
Kommandozeileneditor SQLCMD wird eine höhere Priorität in der Hierarchie der aktuellen
Verbindungen gegeben, als einer regulären Benutzer- oder Applikationsverknüpfung. Die
Ressourcen für diesen Prozess werden schon beim Start des SQL Server reserviert. Zweck
Seite 7
Thomas Wächtler
Matrikelnummer: 39221
dieser Anwendung ist, das trotz voller Beanspruchung aller Ressourcen der Administrator die
Möglichkeit hat, im Fehlerfall notwendige Eingriffsmöglichkeiten zu haben um. Dieses Tool
ist also ausschließlich für administrative Zwecke gedacht.
4. Services des SQL Server 2005
Die Services des SQL Server 2005 verstehen sich als so genannte Add-ons. Sie sind für den
Betrieb nicht notwendig, liefern aber sinnvolle Funktionalitäten. Sie laufen teilweise
innerhalb des SQL Server, als auch als eigenständige Windows-Prozesse mit eigener API.
Die Grundideen der einzelnen Services sind unter dem 1. Komponenten zusammengefasst.
Hier soll nochmal etwas detaillierter auf die einzelnen Services eingegangen werden.
4.1 Replikation
Replikationen sind Technologien zum Kopieren und Verteilen von Daten und zur
anschließenden Synchronisierung der gesendeten/empfangenen Daten mit dem eigenen
Datenbestand.
Der SQL Server unterstützt die folgenden 3 Arten der Replikation:
Transaction Replication:
Jede bei der Master Datenbank eingegangene Änderung des Datenbestandes wird mit
allen aktuell mit der DB verbundenen Clients synchronisiert
Merge Replication:
Änderungen sowohl bei der Master- Datenbank als auch bei den Clients werden verfolgt
und periodisch bidirektional kommuniziert und dann in den jeweiligen Server/Clients
zusammengefügt. Wenn mehrere Änderungen auf einem bestimmten Objekt getätigt
haben, entsteht ein Konflikt, der gelöst werden muss. Dies geschieht entweder über
vordefinierte Regeln oder Manuell.
Snapshot Replication:
Die Snapshot Replication erzeugt eine komplette Kopie der gesamten Datenbank
(Snapshot als aktuelle Ansicht auf die gesamte Datenbank in diesem Moment) und
versendet diese an alle Clients, sodass diese den aktuellen Stand der Master Datenbank
haben.
Seite 8
Thomas Wächtler
Matrikelnummer: 39221
4.2 Reporting
SQL Server Reporting Services (SSRS) ist dazu gedacht Reports aus verschiedenen
Datenquellen zu generieren. Dabei gibt es mehrere Möglichkeiten innerhalb der ReportErstellung:
•
relationale, multidimensionale und XML- Datenquellen. Es können alle möglichen
multidimensionalen aus Datenbanken oder durch den Analyse Service erstellte Daten
verwendet werden. Über ODBC kann auch auf Datenbanken anderer Anbieter
zugegriffen werden.
•
Layoutmöglichkeiten. tabellarisch - für spaltenbasierte Auswertungen, matix - für
zusammengefasste Daten, diagramm - für grafische Auswertungen, formlos - für alles
andere, Kombination mehrerer Layouts in einem Bericht
•
Ad-Hoc Berichte aus dem Berichtsgenerator
•
Drillthroughberichte und Interaktivität. Hyperlinks und Skriptausdrücke können nach
belieben eingefügt werden
•
Parametrisierte Berichte. Parameter um DataSets zu filtern
•
Aggregationen. Zusammenfassungen von Daten mittels Summe, Mittelwert...
um dies alles zu ermöglichen wird für die Reports eine spezielle Mark-Up Sprache namens
RDL definiert. Somit können die Berichte auch in verschiedensten anderen Formaten
exportiert werden (pdf, xml). User können direkt mit dem Report Manager kommunizieren,
oder über eine vordefinierte Web-Schnittstelle darauf zugreifen.
4.3 Analysis
SQL Server Analsysis Services (SSAS) stellt OLAP und Data-Mining Funktionalität zur
Verfügung. Es werden sowohl Server- als auch Clientkomponenten zum Bereitstellen der
OLAP Funktionen verwendet. Zur Architektur:
•
Die Serverkomponente ist als Windows-Dienst implementiert
•
Die Clients kommunizieren mittels eines SOAP-basierten Protokolls (XMLA) mit dem
Service
•
Abfragen werden mittels SQL oder MDX formuliert
Seite 9
Thomas Wächtler
Matrikelnummer: 39221
Grundkonzept ist UDM, das es dem Entwickler erlaubt ein universelles Modell für alle
physikalischen Datenquellen zu erstellen. Es werden verschiedene Algorithmen für das Data
Mining bereitgestellt, welche nach bestimmten Mustern oder Trends suchen können. Es gibt
2 verschiedene Service-Objekte:
•
Datenbanken mit OLAP- und Data Mining Objekten, Cubes, Dimensionen,
Attributen...
•
Assemblys, die benutzerdefinierte Funktionen enthalten, die die Standardsprachen
MDX und DMX systemintern erweitern
4.4 Notification
Notfication
Services
bieten
Abonnenten
Abonnements
für
bestimmte
Benachrichtigungsanwendungen, d.h. ein Interesse an bestimmten Ereignissen innerhalb der
Datenbank. Ein Ereignis kann nach einem vordefinierten Zeitplan übermittelt werden, oder
sofort bei eintreten. Dabei können diese Nachrichten an verschiedene Geräte, wie
Mobiltelefone
versendet
werden.
Der
Notification
Service
selbst
ist
eine
Programmierumgebung in dem Anwendungen geschrieben werden können, die solche
Nachrichten versenden. Die Anwendung muss nach der Programmierung auf der Notification
Plattform bereitgestellt werden.
4.5 Integration
SQL
Server
Integration
Services
(SSIS)
ist
eine
Plattform
zur
Erstellung
von
Datenintegrationslösungen, die aus mehreren Datenquellen Daten Extrahieren, diese auf ein
einheitliches Format transformieren und anschließend in eine neue Datenquelle
zusammengeführt laden (ETL).
Der SSIS besteht aus 4 Komponenten:
•
Dienst: Verwaltet die Speicherung und überwacht die Ausführung von SSIS Paketen
•
Objektmodell: Verwaltet API für Schnittstelle zum Zugriff auf SSIS-Tools
•
Laufzeit: Speichert Layout von Paketen und unterstützt die Protokollierung,
Konfiguration, Verbindungen und Transaktionen
•
Datenfluss: stellt Puffer im Arbeitsspeicher bereit mit denen Daten von der Quelle
Seite 10
Thomas Wächtler
Matrikelnummer: 39221
zum Ziel verschoben werden, es verwaltet die Transformationen auf den Daten
5. Vergleich SQL Server 2005 und Oracle 10g
Microsoft bietet mit dem SQL Server 2005 ein im Umfang und der Funktionalität ähnliches
Produkt wie Oracle mit der aktuellen Version 10g. In diesem Kapitel sollen beide DBMS
miteinander verglichen werden. Dieser Vergleich soll keinen Sieger küren, sondern die
Unterschiede und Gemeinsamkeiten der Beiden Produkte erläutern.
5.1 Daten Verwaltung
Oracle 10g:
Das Oracle DBMS speichert Daten auf 2 verschiedenen Ebenen. Die erste ist die logische
Ebene, wo die Daten in so genannten Tablespaces gespeichert werden und der
physischen Ebene, wo die Daten in Dateien organisiert sind.
Die logische Ebene besteht aus einem oder mehreren Tablespaces. In der logischen
Ebene werden die Benutzerdaten im SYSTEM Tablespace gespeichert. Ein Benutzer kann
auf dem USERS Tabelspace mehrere Tabellen, Stored Procedures, Sequencen etc. haben.
Jeder Benutzer ist als Schema in der Datenbank gespeichert und kann auch nur auf
Tabellen innerhalb zugreifen, die für sein Schema freigegeben sind. Diese Zugriffsrechte
sind im Data Dictionary, das sich ebenfalls im SYSTEM Tabelspace befindet, definiert.
In der physischen Ebene gibt 3 Stufen, in denen die Daten organisiert sind. Die kleinste
Stufe sind die Daten Blöcke (auch ORACLE Block oder Seite). Diese Blöcke können Index
Blöcke und auch Datenblöcke sein. Oracle allokiert Speicherplatz in Form solcher Blöcke.
Die nächst höhere Stufe sind die Extends. Ein Extend ist eine bestimmte Anzahl an
zusammenhängenden Daten Blöcken. Ein Extend wird allokiert um Informationen eines
bestimmten Typs zu speichern. Die höchste Stufe sind die Segmente. In einem Segment
sind mehrere Extends vorhanden, die zu einem Tabelspace gehören. Wenn ein Extend im
Segment voll ist, allokiert das Segment einen weiteren Extend hinzu, diese werden also
nur bei Bedarf angehängt. Ein Datenblock ist somit die kleinste Einheit im System und ist
so auf einem physischen Datenträger gespeichert. Über den Header des Blocks kann nun
auf diesen zugegriffen werden, wenn er von der Platte gelesen werden soll.
Seite 11
Thomas Wächtler
Matrikelnummer: 39221
SQL Server:
Einen Tablespace wie bei Oracle gibt es beim SQL Server nicht. Hier werden die Daten in
separaten Datenbanken gespeichert. Wobei jede Datenbank von der anderen sowohl
logisch als auch physisch unabhängig ist. In einer Datenbank sind jeweils deren Tabellen,
Sequenzen, Trigger, Stored Procedures etc. gespeichert. Sie bildet nach außen hin ein
geschlossenes Gebilde, sowohl physisch als auch logisch. Bei Oracle ist der USER
Tablespace für alle Tabellen zuständig. Dadurch sind unterschiedliche Schemata indirekt
durch die Speicherung miteinander verbunden und eine Oracle Instanz muss alle Daten
Schemata auch die gerade nicht benötigten Verwalten. Somit ist es nicht möglich
mehrere unabhängige Instanzen des Oracle Server laufen zu lassen, die auf den selben
Tablespace zugreifen müssen. Beim SQL Server können Datenbanken jedoch komplett als
eigenständiges Gebilde verwaltet werden und somit die Daten effektiver voneinander
getrennt werden, wenn der Anwender mehrere Datenbanken verwalten möchte.
Ähnlich zu Oracle 10g werden die Daten physikalisch in so genannten 8KB großen Pages
gespeichert, das ist die grundlegende Einheit für I/O-Operationen des SQL Server. Wie bei
Oracle gibt es Extends, diese sind aber nicht von variabler Größe, sondern beinhalten
immer 8 Pages. Dabei kann es passieren, dass ein Datenbank Objekt alle 8 Pages des
Extend belegt (uniform extend) oder sich bis zu 8 Objekte den Platz teilen (mixed extend).
Eine Eintrag in einer Spalte der Datenbank kann nur auf eine Page geschrieben werden,
ist somit auf 8 KB beschränkt. Sollte die Größe doch überschritten werden, muss der
Eintrag in eine neue Page (oder eine Reihe von Pages) geschrieben werden (Alloction unit)
und ein Zeiger zu diesen in die ursprüngliche Page gesetzt werden.
5.2 Indexierung
Indexe sind für den schnellen Datenzugriff und können somit die Dauer von I/O-Operationen
stark verkürzen, was die Performance einer Transaktion entscheidend verbessern kann.
Die folgende Tabelle zeigt, welche Indexverfahren von den jeweiligen Systemen unterstützt
werden.
Seite 12
Thomas Wächtler
Matrikelnummer: 39221
Indextyp
Oracle 10g
SQL Server
2005
B-Baum Index
ü
ü
B-Baum Index (geclustert)
ü
ü
Hash Index (geclustert)
ü
O
Heap Index (ungeclustert)
O
ü
Reverse Key Index
ü
Bitmap Index
ü
Bitmap join Index
ü
Funktionsbasierter Index
ü
Bereichs Index
ü
O
O
O
O
O
Index-organisierte Tabellen
ü
ü
Volltext Index
O
ü
Sowohl Oracle als auch SQL Server bieten den B-Baum Index an, der eine geordnete Liste
von Schlüsseln enthält, die auf den jeweiligen Dateneintrag auf dem Datenträger verweisen.
Beide bieten diese Art des Index auch für geclusterte Indexierung. Oracle eigen sind die
Bitmap Indizes. Hier werden nicht die Inhalte der einzelnen Zeilen aus der Tabelle im Index
verwaltet, sondern ein Zeiger auf den Eintrag gesetzt, der die Bedingung erfüllt. Somit wird
weniger Speicherplatz verbraucht, was jedoch zum ermitteln der Werte einen etwas
höheren Rechenaufwand mit sich bringt. Bitmap Join Indizes enthalten Zeiger auf die Daten
in den jeweils zu verknüpfenden Tabellen, sodass im besonderen Fall Joins gespart werden
können, wenn zuvor Regeln dafür definiert wurden. Zusätzlich zu den B-Baum Indizes bietet
SQL Server 2005 den Volltext Index, der auf der Windows Suchfunktion basiert. Hierbei führt
nicht der SQL Server den Such-Task aus, sondern das OS auf dem er installiert ist. Da
Windows immer den Search Service installiert hat, wird diese Aufgabe vom Betriebssystem
ausgeführt. Das Problem dabei ist, das auch das OS den Index verwaltet und somit kein
Backup oder Recovery möglich ist. Die Volltextsuche ermöglicht es Teile eines gesuchten
Eintrages in Form von Strings einzugeben und dazu die betroffenen Spalten auszugeben.
5.3 Concurrency Control und Locking
Seite 13
Thomas Wächtler
Matrikelnummer: 39221
Die Überwachung gleichzeitig stattfindender Operationen auf dem selben Datenbestand
einer Datenbank und die Sicherstellung der Konsistenz der Daten während parallel
ablaufender Transaktionen, ist ein wichtiger Bestandteil eines DBMS. Bestandteile sind das
Locking und die Isolation Levels.
Beide Anbieter bieten die Möglichkeit schon vor Beginn irgendwelcher Transaktionen
Sperren auf bestimmten Tabellen anzulegen. In der folgenden Tabelle ist gegenübergestellt,
welche Sperren auf Tabellen jeweils möglich sind.
Sperre (Oracle)
Sperren(SQL Server 2005)
RS (Row Shared)
IS (Intent Shared)
RX (Row Exclusive)
IX (Intent Exclusive)
S (Shared)
S (Shared)
SRX (Shared Row Exclusive)
SIX (Shared Intent Exclusive)
X (Exclusive)
X (Exclusive)
-
U (Update)
-
BU (Bulk-Update)
Exclusive DDL Lock
Sch-M (Schema Modification)
Shared DDL Lock
Sch-S (Schema Shared)
Oracle sowie SQL Server unterstützen beide alle gängigen Sperrverfahren. Zusätzlich bietet
SQL Server noch 2 weitere Verfahren an um Tabellen zu sperren. Das wäre zum einen das
Update Lock, welches zwischen dem Shared und dem Exclusive Lock liegt. Diese Art des
Sperren wird verwendet, wenn noch nicht feststeht, ob eine Änderung in einer Tabelle
stattfindet, sollte es zu einer Änderung kommen wird dieses Lock in Exclusive Lock
automatisch umgewandelt, wenn nicht, dann wird es ein Shared Lock. Die Besonderheit hier
ist, das 2 Update Locks nicht mit einander kompatibel sind. D.h. wenn bereits ein Update
Lock vorliegt, wird kein weiteres gestattet, ein Shared Lock ist jedoch noch möglich, was bei
einem SIX Lock nicht mehr möglich ist. Das BU ist dazu gedacht, wenn große Datenmengen
in eine Tabelle geladen werden, diese zu sperren. Besonders ist hier, das auch das Auslesen
der Struktur der Tabelle dabei unterbunden wird, d.h. Sch-S ist ebenfalls verboten, was bei
allen anderen Sperren (außer Sch-M) jedoch erlaubt ist.
Oracle und MS SQL Server bieten verschiedene Isolation Levels:
Seite 14
Thomas Wächtler
Isolationlevel
Matrikelnummer: 39221
Oracle 10g
SQL Server 2005
Read Committed
ü
ü
Read Uncommitted
ü
Repeatable Read
O
O
Serializable
ü
ü
Read Only
ü
Explizites Locking
ü
ü
ü
(Snapshot)
ü
Beide Systeme unterstützen des Read Committed Level. Bei diesem sieht die aktuelle
Transaktion ausschließlich die vor dem Beginn stattgefundenen Änderungen und arbeitet
mit diesen. Das kann ein Unrepeatable Read, oder ein Phantom Read verursachen.
SQL Server bietet zusätzlich noch das Read Uncommitted, was es einzelnen Transaktionen
ermöglicht, uncommittete Änderungen von anderen Transaktionen zu sehen und das
Repeatable Read, was sicherstellt, das auch bei wiederholtem Lesen die selben Ergebnisse
erzielt werden können.
Beide unterstützen mit Serializable die höchst mögliche Isolations-Ebene, in der die
Transaktion ablaufen, als würden sie nacheinander durchgeführt.
Das von Oracle 10g verwendete ReadOnly Verfahren ist dem Snapshotverfahren des SQL
Server in der Wirkungsweise sehr ähnlich. Oracle stellt mit Versionsvergabe für die einzelnen
Transaktionen sicher, das Daten, die jede einzelne Transaktion benötigt, auch beim Update
durch eine andere Transaktion noch vorhanden ist. SQL Server dehnt dies soweit aus, das ein
komplettes Abbild der zu bearbeitenden Daten gemacht wird und in einer neuen Datenbank
(TempDB) gespeichert wird.
Somit hat jede Transaktion ihre eigenen konsistenten Daten und es müssen keine exklusiven
Sperren auf die Tabellen vergeben werden.
Weiterhin bieten beide Anbieter die Möglichkeit das Locking selbst zu bestimmen. Bei
beiden kann das Isolation Level transaktionsbezogen geändert werden, siehe Tabelle.
5.4 Backup und Recovery
Backups werden dazu benötigt, um bei System-Crashes sicher zustellen, das alle Daten, die
in der Datnebank vorhanden waren, wieder zur Verfügung gestellt werden können. Recovery
Seite 15
Thomas Wächtler
Matrikelnummer: 39221
ist wichtig, wenn ein System während der Laufzeit einen kritischen Fehler erzeugt und
abstürtzt und noch nicht beendete Transaktionen auf der Datenbank ausgeführt wurde. In
diesem Fall helfen Logs diese Transaktionen nachzuvollziehen und sie ggf. zu wiederholen,
oder ungültig zu machen.
Es gibt 4 verschiedene Arten eine Datenbank in Oracle mithilfe eines Backups zu sichern:
•
Export/Import. Dies sind logische Backup Operationen, die logische Definitionen einer
Datenbank in einer Datei speichern
•
Offline Backup. Wenn die Datenbank vom Netz genommen wird, werden hier alle
Daten, Logs und Kontroll- Dateien auf einen anderem Datenträger gesichert
•
Online Backup. Hier wird das Backup während des laufenden Betriebes gemacht. Bei
dieser Form des Backups müssen die Log-Files weiterlaufen um Änderungen während
der Backup-Phase ebenfalls zu speichern.
•
RMAN Backups. Hierzu wird der Recovery Manager von Oracle benutzt.
Sollte eine Datenbankanwendung abstürzen, obwohl noch nicht alle Transaktionen beendet
wurden, kommt das Recovery ins Spiel. Oracle hat zu diesem Zweck 3 wichtige Log-Dateien,
die jeden Vorgang überwachen:
•
Das Control File beinhaltet Informationen, wie den Datenbank Namen, Zeitstempel
für die Erstellung der Datenbank, Namen der DDL Files und des Redo-Log-Files, sowie
den letzten Checkpoint, an dem der Status der Datenbank vollständig gespeichert
wurde.
•
In die Online Redo Log Files werden alle Änderungen gespeichert, die während des
laufenden Betriebes gemacht werden. In den Redo- Records werden neue
Änderungen gespeichert, die eine Transaktion vorgenommen hat, in den UndoRecords werden die Daten vor der Änderung gespeichert, damit das System in jeder
Situation die Möglichkeit hat, den korrekten Wert beim Recovery zu setzten.
•
Die Archived Redo Log Files sind Redo Log Files, die nur noch Redo Informationen
enthalten und bereits in ein Log Archiv gespeichert wurden.
Der Recovery Manager bietet hier die einfachste Art und Weise seine Datenbank effektiv zu
sichern.
Der SQL Server 2005 bietet mehrere Strategien für das Recovery an:
Seite 16
Thomas Wächtler
•
Matrikelnummer: 39221
Simple. Ermöglicht es lediglich zum letzten vollständigen Backup zurückzugehen, da
das Transactionlog hier nicht gespeichert wird.
•
Full. Hier wird zusätzlich das Transaction Log gespeichert, sodass man zu jeder
beliebigen Position vor dem Absturz zurückkehren kann
•
Bulk Logged. Hier werden die normalen Datenbankoperationen in den Transaction
Logs gespeichert, jedoch nicht die Erstellung von Indizes oder das laden per Bulk Load
(siehe Bulk-Update unter Concurrency Control und Locking)
Die wichtigste Datei beim SQL Server ist das Transaction Log File, das wie das Redo Log File
von Oracle, alle Transaktionen aufzeichnet, um jeden beliebigen konsistenten Punkt
wiederherstellen zu können. Die Methode des SQL Server wird Systemintern geregelt, man
muss sich nur für eine der 3 oben genannten Methoden entscheiden. Oracle bietet mehr
Vielfalt, ist aber auch komplizierter zu handhaben.
5.5 Datenbank Tuning
Datenbank Tuning kann von Indexoptimierung, über Abfrageoptimierung, bis hin zu
Änderungen an der Speicherverwaltung gehen. Hier soll ein kurzer Überblick in nicht
technische Aspekte des Tunings.
SQL Server und Oracle bieten unterschiedliche Möglichkeiten Aggregat-Funktionen die sich
auf Spalten einer Zeile beziehen effektiver in Indizes zu speichern.
Oracle bietet die Möglichkeit Indizes auf eine Funktion zu legen, die zu einer speziellen
Spalte gehört. SQL Server bietet die Möglichkeit einen Index direkt auf der Spalte, deren
Inhalt durch eine Funktion berechnet wird. Diese beiden Ansätze sind im Prinzip äquivalent
und nennt sich "function based index". SQL Server gibt zusätzlich die Möglichkeit beim
erstellen/ändern einer solchen Spalte das Schlüsselwort PERSISTED zu verwenden um
anzuzeigen, das diese Spalte auch physisch gespeichert werden soll. Im Unterschied zu SQL
Server ist bei Oracle 10g die durch den funktionsbasierten Index indirekt definierte Spalte
nicht physisch in der Datenbank vorhanden. Ein solcher Index (Oracle) oder eine Spalte mit
entsprechendem Index (SQL Server) kann die Performance bestimmter Anfragen, die sich auf
eine Aggregation mehrerer Einträge in einer Zeile beziehen, stark verbessern.
Auch im Bereich der Optimierung von Views gibt es unterschiedliche Konzepte auf beiden
Seite 17
Thomas Wächtler
Matrikelnummer: 39221
Seiten. SQL Server bietet die Indexed Views und Oracle die Materialized Views.
Um große und teure Joins zu vermeiden, bietet Oracle Materialized Views, die einen View als
Tabelle in der Datenbank speichern und so auch Informationen in einer Tabelle vereinen, die
sonst über komplexe Joins errechnet werden müssten.
SQL Server hingegen erzeugt einen Index auf einem bestimmten View, der phsikalisch
gespeichert wird. Verwendet man einen Clustered Index auf dem ensprechenden View hat
man das selbe Ergebnis wie der Materialised View von Oracle bietet. Nachteile hierbei ist
jedoch, das man auf einen Index keine Funktionen wie DISTINCT, SUM, etc. anwenden kann,
somit ist die Oracle Variante was die Auswertung betrifft leistungsstärker, verbraucht aber
auch mehr Speicherplatz im Vergleich zum Index auf dem View.
Beide Ansätze beinhalten das Problem, das bei starker Änderung der einzelnen Spalten, die
auf den View Einfluss haben, auch der View angepasst werden muss. Dies Beeinflusst die
Materialized Views stärker als die Index Views, da dort nur der Index angepasst werden
muss. Diese Methode ist also nur sinnvoll, wenn die Anfragen schwerer wiegen, als die
Änderungen der Basis-Tabellen.
SQL Server bietet mit dem Tuning Advisor ein sehr nützliches Tool an, das beim Finden von
optimalen Indizes, Sichten und Partitionen hilft. Dabei wertet es voll automatisch die
Datenbank nach Struktur und häufigen Anfragen aus und macht Vorschläge für
Optimierungen (siehe auch 3.3 Tuning Advisor).
5.6 Partitionierung
Partitionierung erlaubt es große Tabellen, Indizes und komplexe Strukturen in kleinere
Stücke aufzuspalten. Dieses Verfahren wird hauptsächlich zur Übersichtlichkeit und
Wartbarkeit der Daten eingesetzt, bietet aber unter bestimmten Umständen auch
Performance Verbesserungen.
mögliche Partitionierungsmethoden für Tabellen sind:
•
Aufteilen einer Tabelle indem die Tabelle horizontal aufgespalten wird, d.h. es
werden die Zeilen einer Tabelle auf mehrere von der Struktur her gleiche Tabellen
aufgeteilt. Ist z.B. bei einer Geschichts-Datenbank sehr nützlich, wenn sie in mehrere
Zeiträume aufgeteilt wird.
Seite 18
Thomas Wächtler
•
Matrikelnummer: 39221
Hash- Partitionierung benutzt eine Hash-Funktion um die einzelnen Zeilen einer
Tabelle neuen Tabellen zuzuordnen.
•
Function Partitionierung bietet die Möglichkeit die Daten über eine bestimmte
Funktion aufzuteilen
•
Listen Partitionierung. In Listen kann genau definiert werden, in welcher Reihenfolge
die Zeilen auf die jeweiligen Tabellen abgebildet werden sollen.
•
gemischte
Partitionierung
erlaubt
es
mehrere
Partitionierungs-Techniken
anzuwenden. Wenn man z.B. eine Tabelle per Hash partitioniert und die Partitionen
wieder mittels Listen in weitere Partitionen aufsplittet.
mögliche Methoden für Indizes sind:
•
Lokale Indizes sind von der Partitionierung her genauso aufgebaut, wie die zu Grunde
liegenden partitionierten Tabellen. D.h. ein partitionierter Index gehört genau zu
einer partitionierten Tabelle.
•
global Partitionierte Indizes sind Indizes, die nicht nach Art der Tabelle partitioniert
sind. Solch ein Index kann für eine partitionierte Tabelle, oder eine nicht
partitionierte Tabelle angelegt werden
•
nicht partitionierte Indizes sind normale Indizes, wie sie normaler Weise für eine
nicht partitionierte Tabelle verwendet werden
Von Oracle und SQL Server werden folgende Möglichkeiten zur Partitionierung angeboten:
Partition Typ
Oracle 10g
SQL Server
2005
Range
ü
ü
Hash
ü
O
Function
O
ü
List
ü
ü
Composite
ü
O
Lokale Indizes
ü
ü
Globale Indizes
ü
ü
SQL Server verfolgt mit dem funktionsbasiertem Partitionieren eine andere Strategie, als
Oracle mit hashbasiertem Partitionieren. Durch Funktionen kann der Anwender viel genauer
Seite 19
Thomas Wächtler
Matrikelnummer: 39221
bestimmen, wie die Tabelle aufgeteilt werden soll, wohingegen durch Hashing eine
gleichmäßigere Verteilung der Daten möglich ist.
Unterschiede bestehen aber besonders in der maximalen Anzahl an Partitionen, während
Oracle bis zu 1 Million Partitionen pro Tabelle erlaubt, sind es beim SQL Server lediglich
1000.
5.7 Clustering
Cluster sind eine Reihe von unabhängig voneinander positionierten Servern, die über ein
Netzwerk miteinander verbunden sind, so dass sie als ein ganzes System zusammenarbeiten
können. Im Datenbank Technischen Sinn ist dies also eine Datenbank, die auf verschiedenen
Servern läuft, aber als eine Datenbank betrachtet wird. Clustering findet hauptsächlich bei
sehr großen Datenbeständen Anwendung, wenn ein einzelner Server nicht mehr die
Kapazitäten hat, sei es speicherplatztechnisch, oder leistungsmäßig, zur Abarbeitung der
einzelnen Transaktionen.
Oracle verfolgt eine andere Strategie beim Clustering als der SQL Server 2005. Oracle
ermöglicht es eine Datenbank auf mehrere Server zu verteilen und nach belieben neue
Knoten (Server) zum Cluster hinzuzufügen, wenn es der Umstand erfordert. Dies ist auch
dicht an das Konzept zur Verwaltung der Daten innerhalb der Datenbank gekoppelt. Der
Vorteil ist, das die Last gleichmäßig auf alle Server verteilt werden kann, was die
Skalierbarkeit, Parallelität und Performance sehr stark verbessert. Außerdem gibt es nur ein
DDL File, das die Struktur der gesamten Datenbank beinhaltet.
SQL Server bietet eine indirekte Clusterung, indem eine Datenbank in mehrere Datenbanken
per Partitionierung aufgeteilt werden. Nachteil hierbei ist, das nur der Server, auf dem die
angefragte Partition vorhanden ist, diese auch verändern, bzw. auslesen kann. Somit ist die
Geschwindigkeit von den einzelnen Rechnern abhängig und widerspricht dem eigentlichen
Konzept der Clusterung. Vorteil der SQL Server Methode besteht nur dann, wenn die
Datenbanken unabhängig voneinander sind. Das Problem der Oracle Methode ist die
Überwachung der gleichzeitig stattfindenden Transaktionen. Im Prinzip ist das Cluster eine
große Datenbank und damit ist die Bearbeitung der Daten sehr von der Implementierung
der Datenbank Engine abhängig.
Seite 20
Thomas Wächtler
Matrikelnummer: 39221
6. Quellen
Neutraler Vergleich von Oracle 10g und SQL Server 2005
●
http://www.wisdomforce.com/dweb/resources/docs/MSSQL2005_ORACLE10g_compare.p
df
Oracle Whitepaper zum technischen Vergleich
●
http://www.oracle.com/technology/deploy/performance/pdf/twp_perf_oracle%20databa
se%2010gr2%20vs%20ss2005.pdf
Übersicht SQL Server 2005
●
http://www.datenbank-spektrum.de/pdf/dbs-16-34.pdf
●
http://en.wikipedia.org/wiki/Microsoft_SQL_Server
Oracle Architecture
●
http://ugweb.cs.ualberta.ca/~c391/manual/chapt2.html
●
http://www.ucertify.com/article/THE-ORACLE-10g-ARCHITECTURE.html
Concurrency Control & Locking
●
http://www.db.cs.ucdavis.edu/teaching/289F/handout-5-6.pdf
●
https://www.indiana.edu/~dbateam/resources/tips/oracle_locking.ppt
●
http://www.sws.bfh.ch/~schmd/db/MEMOS/Oracle%20Isolation%20Levels.pdf
●
http://www.mssqlcity.com/Articles/Adm/SQL70Locks.htm
Partitionierung
●
http://www.oracle.com/technology/products/bi/db/10g/pdf/twp_general_partitioning_10
gr2_0505.pdf
Microsoft SQL Server 2005
●
http://msdn.microsoft.com/de-de/library/ms130214.aspx
●
http://technet.microsoft.com/de-de/library/ms130214.aspx
Seite 21