SQL Server 2000
Artikel erschienen in Swiss IT Magazine 2000/36
Nach Exchange 2000 lanciert Microsoft mit SQL Server 2000 bereits den zweiten .Net Enterprise Server. In der Tat passt der neueste Datenbankserver ausgezeichnet in die neue Strategie von Microsoft. Mit Schwerpunkten wie erhöhter Skalierbarkeit, flexiblem Datenaustausch per XML und mehr Business-Intelligence-Funktionen ist SQL Server für die künftigen Herausforderungen im Enterprise- und E-Commerce-Umfeld hervorragend gerüstet.
Punkto Skalierbarkeit hat Microsoft sowohl den Scale-up- (Zufügen zusätzlicher Server-Ressourcen) wie auch den Scale-out-Support (Parallelschalten mehrerer Server) erheblich ausgebaut. Das trifft insbesondere auf SQL Server 2000 Enterprise zu. Wird dieser gemeinsam mit der soeben freigegebenen Datacenter-Version von Windows 2000 eingesetzt, werden Multiprozessorsysteme mit bis zu 32 CPU und Speicher von bis zu 64 GB unterstützt. Eine Datenbank kann neu bis zu 2 TB gross werden. Auf SMP-Systemen ist SQL Server Enterprise jetzt in der Lage, Index-Erstellung, DBCC-Operationen und Database-Scans auf mehrere CPUs zu verteilen.
Für erhöhte Scale-out-Skalierbarkeit gibt es neu die sogenannten Distributed Partitioned Views, mit der die Arbeitslast unter mehreren SQL Servern aufgeteilt werden kann. Partitioned Views arbeiten nach dem Clustering-Prinzip "shared nothing", bei dem sich die parallel-geschalteten Systeme keine gemeinsamen Ressourcen wie etwa Harddisks teilen. Das hat den Vorteil, dass der Ausfall einer gesharten Komponente nicht den ganzen Cluster lahmlegen kann. Die Partitioned Views standen übrigens auch bei den geclusterten Proliant-SMP-Servern mit SQL-Server-2000 Pate, die derzeit in der TPC-Performance-Rangliste auf den Plätzen zwei und drei liegen.
Neu ist auch das sogenannte Log-Shipping, mit dem sich mehrere Backup-Server anlegen lassen. Durch die ständige Übermittlung von Transaktions-Logs lassen sich Datenbanken auf einem Backup-Server permanent synchronisieren. Fällt der Datenbankserver aus, steht sofort ein Ersatzserver zur Verfügung. Zudem können die Backup-Server auch als Read-only-Datenbank genutzt werden. Reine Datenbankabfragen lassen sich etwa auf das Backup-System umleiten, um so die Hauptdatenbank entlasten zu können.
XML ist das zentrale Bindeglied für Microsofts .Net-Strategie. Aus diesem Grund erstaunt es auch nicht, dass die Unterstützung für das E-Commerce-Esperanto im neuesten SQL-Server-Release eine der wichtigsten Erweiterungen darstellt.
Neu kann der SQL Server jede SELECT-Abfrage nicht nur als Rowset, sondern auch als XML-Dokument liefern. Zu diesem Zweck wurde der Parameter FOR XML eingeführt, der dem SELECT-Statement angefügt wird. SQL Server 2000 bietet zudem drei verschiedene Parameter zur Auswahl, über die bestimmt werden kann, wie die abgefragten Daten im XML-Baum abgelegt werden sollen. So kann beispielsweise erzwungen werden, dass jeder Datensatz als XML-Element formatiert wird. Die gelieferten XML-Dokumente lassen sich mit XSL und XSLT umformen.
Die XML-Schnittstelle haben die Redmonder zudem mit einem Web-Gateway ausgerüstet, womit das Abfragen von Daten in XML mit simplen HTTP-Aufrufen wie http://server/vroot?sql="SELECT+*+FROM+Customers+FOR+XML" möglich wird. Aus Sicherheitsgründen können SQL-Statements auch in einem Template versteckt werden. Statt vroot?sql="…" wird dann einfach vroot?template per URL aufgerufen.
Das Web-Interface lässt sich auch dann nutzen, wenn die Resultate nicht als XML, sondern als Standard-Rowset benötigt werden. In diesem Fall wird der Parameter FOR XML einfach weggelassen.
Ein grosses Manko ist, dass das Web-Gateway nur in Zusammenarbeit mit Microsofts Internet Information Server (IIS) eingesetzt werden kann. Hinzu kommt, dass die direkte Zugriffsmöglichkeit auf den Datenbankserver via HTTP und Internet ein zusätzliches Sicherheitsrisiko darstellt.
Mit den sogenannten XML Views bietet SQL Server 2000 quasi eine XML-DOM-Ansicht auf in der Datenbank vorhandene Informationen. Basierend auf dem XDR-Schema (XML Data Reduced) kann der SQL Server interaktiv Tabellen und Felder in XML-Elemente und -Attribute umwandeln. XML-Views können mit XPath-Queries abgefragt werden. Hierbei werden die Resultate aus der Datenbank geholt und anhand des Schemas im XML-Format abgeliefert. XML-Views sind äusserst elegant und machen viel manuelle Programmierarbeit überflüssig. Allerdings basiert Microsofts Lösung noch nicht auf dem endgültigen XDR-Vorschlag. Dieser soll im Rahmen des Standardisierungsprozesses der XML-Schemas erst gegen Ende des Jahres vorliegen.
Um auf XML-Daten direkt aus SQL-Prozeduren zugreifen zu können, wird mit SQL Server 2000 die T-SQL-Funktion OpenXML eingeführt. Mit diesem Kommando lassen sich in einem File abgelegte oder direkt in die SQL-Prozedur eingebaute XML-Daten in ein gewöhnliches SQL-Rowset umwandeln. Dieses lässt sich wie gewohnt mit SQL-Statements modifizieren und als SQL-Tabelle oder wieder in Form von XML speichern. OpenXML kann überall dort eingesetzt werden, wo Row-sets wie Tabellen oder Views referenziert werden (etwa nach einem FROM-Kommando).
Zwei der für SQL Server 2000 geplanten XML-Features, die sogenannten Updategrams und XML Bulk Loadings wurden für den Final Release nicht mehr rechtzeitig fertig und können später via www.microsoft.com/sql bezogen werden. XML Updategrams bieten einen einfachen Weg, in XML formatierte Daten zu aktualisieren, anzufügen und zu löschen. Das entsprechende XML-File braucht lediglich via HTTP zum Server geschickt werden, den Rest erledigt SQL Server 2000 automatisch. XML Bulk Loading ermöglicht das Übertragen und Einspeisen von Daten aus unterschiedlichen Quellen via Internet.
Bei keinem der Microsoft-Konkurrenten ist OLAP und Date Warehousing derart nahtlos in die Umgebung des Datenbankservers integriert wie beim SQL Server. In der 2000er Version haben die Redmonder die Analyse-Funktionen um ein Data-Mining-Modul erweitert. Mit der Data-Mining-Analyse, die auf verschiedenen Decision-Tree- und neuronalen -Netzwerk-Algorithmen basiert, lassen sich in grossen Datenmengen bestimmte Trends und Verhaltensmuster ausmachen - ein Feature, das vor allem im E-Commerce-Bereich wertvolle Dienste leisten kann, um etwa Clickstream-Informationen und Kaufverhalten auszuwerten und das Angebot anhand der gewonnenen Erkenntnissen optimieren zu können.
Besonders lobenswert ist die enge Integration zwischen den Data-Mining-Funktionen und den bestehenden Datenbank-Funktionen. Auswertungen lassen sich sowohl direkt aus relationalen Datenbanken als auch auf Basis von OLAP-Cubes vornehmen.
Die Enterprise-Version wartet auch bei den OLAP-Funktionen mit einigen interessanten Neuerungen auf. So lassen sich OLAP-Cubes jetzt auch aufsplitten und zwecks Perfomance-Optimierung auf verschiedene Systeme verteilen. Darüber hinaus können Cubes nun über HTTP-Links miteinander verknüpft werden, was die Auswertung von Daten über mehrere im Internet verteilte Datenbanken möglich macht.
Der Query Analyzer, Microsofts grafische SQL-Umgebung, wurde erheblich überarbeitet. So gibt es neu eine zweigeteilte Oberfläche à la Windows Explorer. Im linken Fenster lässt sich jetzt der sogenannte Object Browser einblenden, der anhand einer Baumstruktur Zugriff auf alle Datenbankobjekte (Tabellen, Felder, Stored Procedures etc.) gewährt. Um dessen Name ins SQL-Statement einzufügen, braucht man das Element bloss per Drag&Drop ins Editorfenster hinüberziehen. Praktisch ist auch die Suchfunktion, die beim Aufspüren von bestimmten Objekten behilflich ist.
Noch raffinierter und äusserst hilfreich sind die Templates. Dabei handelt es sich um Vorlagen für Standard-SQL-Routinen wie etwa das Erstellen eines Triggers oder das Einrichten eines Index. Nach Aufruf des Template wird man per Dialogbox nach den notwendigen Variablen gefragt, worauf der Query Analyzer das zum Ausführen bereite SQL-Statement kreiert. Eine weitere hilfreiche Neuerung ist der SQL Debugger, der die Fehlersuche mit Hilfe von Breakpoints, Einzelschritt-Modus und Watch-Variablen erleichtert.
Microsofts hauseigene SQL-Sprache T-SQL hat kaum Erweiterungen erfahren. Features für objektorientiertes Applikationsdesign sucht man auch bei der 2000er Version vergeblich. Neu hingegen sind die sogenannten User Defined Functions (UDFs). Damit können SQL-Statements zu einer Gruppe zusammengefasst werden und lassen sich innerhalb einer SQL-Abfrage analog zu einer SQL-Funktion aufrufen.
Neue SQL-Befehle gibt es für die Full-Text-Search-Funktion, die so erweitert wurde, dass sich jetzt auch im Dateisystem abgelegte Dokumente (Word, Excel, HTML etc.) gemeinsam mit einer Datenbank in einem Durchgang durchsuchen lassen.
SQL Server 2000 bietet einige neue Features, die für erhebliche Performance-Verbesserungen bei der Verarbeitung von grossen Datenmengen sorgen. So lassen sich neu auch in Views performance-kritische Felder mit einem Index belegen. Auch berechnete Felder von Tabellen sind neu indizierbar.
Erstmals können mehrere unabhängige Instanzen des SQL Server auf der selben Maschine betrieben werden - ein Feature, über das sich vor allem Webhoster und Application Service Provider freuen dürften. Anwendungen lassen sich so strikte voneinander trennen: Eine Applikation mit delikaten Daten, die nur für interne Zwecke bestimmt ist, kann parallel mit einer frei zugänglichen Internet-Anwendung auf dem selben Rechner betrieben werden, ohne Gefahr zu laufen, dass die Internet-User auf die für interne Zwecke bestimmten Applikationen in irgend einer Form Zugriff erhalten könnten.
Weitere Verbesserungen punkto Sicherheit betreffen die integrierten Backup-Funktionen. So gibt es jetzt endlich auch Differential-Backups, die einer Sicherung nur noch die seit dem letzten Backup in der Datenbank durchgeführten Änderungen hinzufügt. Vor allem bei grossen Datenbanken mit wenigen Mutationen lassen sich mit dieser Funktionen enorme Geschwindigkeitssteigerungen bei der Datensicherung erzielen.
Die Installationsroutine von SQL Server 2000 erlaubt das vollautomatische Upgrade einer bestehenden SQL-Server-7.0-Anwendung. In unserer Testumgebung hat das problemlos funktioniert. Sämtliche Datenbanken wurden inklusive Tabellen, Stored Procedures, Views und Maintenance Plans übernommen.
Wem der direkte Upgrade eines produktiven Systems trotzdem zu gefährlich ist, kann SQL Server 2000 auch parallel zur Version 7.0 auf dem selben System betreiben. Die Datenbankobjekte können dann in Ruhe auf den neuen Server migriert und getestet werden. Ist das neue System bereit, fährt man die Services des SQL Server 7.0 einfach hinunter.
Gestört hat uns, dass noch keine Upsizing Wizards für Access 2000 verfügbar sind. Diese will Microsoft erst im Laufe der kommenden Wochen zur Verfügung stellen. Wer Datenbanken von Access migrieren will, muss dies manuell über die Data Transformation Services (DTS) vollziehen.
SQL Server 2000 läuft nach wie vor auch auf Windows NT 4.0 und stellt damit die grosse Ausnahme unter den kommenden .Net Enterprise Servern dar. Die Personal Edition, die für Entwickler oder Mobile-User gedacht ist, kann auch auf den Desktop-Betriebssystemen Windows 98/Me sowie Windows 2000 Professional eingesetzt werden.