Yukon - ein Blick ins Eingemachte

16.03.2005 von Shinja Strasser
Die Integration des .NET-Frameworks 2.0 in den "SQL Server 2005" (Yukon) hat weitreichende Folgen. Die Einsatzoptionen reichen bis hin zu einem autonomen, serviceorientierten Anwendungs-Server.

Voraussichtlich im Sommer dieses Jahres wird Microsoft den SQL Server 2005 auf den Markt bringen. Mit ihm ändert sich das Datenbankkonzept völlig, denn aufgrund der Integration des .NET-Framework geht das Produkt weit über die bisherige Funktion der Datenhaltung hinaus: Es ermöglicht den Aufbau eigenständiger Anwendungs-Server, die sich zum Beispiel über Web-Services-Techniken in eine IT-Landschaft integrieren lassen.

Aus Sicht der Datenbankentwickler dürfte deshalb der Einzug der Common Language Runtime (CLR) in den SQL Server die größte technische Neuerung bedeuten. Denn künftig lassen sich Stored Procedures, benutzerdefinierte Funktionen und Trigger nicht mehr nur in der Abfragesprache T-SQL schreiben. Zur Auswahl stehen auch .NET-Sprachen wie C# und VB.NET, um Datenbankobjekte zu erstellen oder strukturierte Fehlerbehandlung, Arrays, Namespaces etc. zu verwenden.

Vorteile der Opjektorientierung

Somit können Datenbankentwickler auf die Vorzüge einer objektorientierten Sprache zurückgreifen, ihre Geschäftslogiken darauf aufbauen, und ganz nebenbei kommen sie noch in den Genuss der Vererbung oder Polymorphie sowie eines objektorientierten strukturierten Exception Handlings. Zudem steht die komplette Klassenbibliothek des .NET-Frameworks mit Tausenden von Klassen zur Verfügung, inklusive der Security-Mechanismen, des automatischen Speicher-Managements und Techniken zur Verarbeitung von XML-Daten. Die Anwendungs- und Geschäftslogik liegt als kompiliertes Assembly im SQL Server 2005 vor, das sich leicht verteilen und verwalten lässt. Ein weiterer Vorteil für Entwickler: Hat man bislang eine Datenbankschicht programmiert, die auf Daten der Datenbank zugreift und deren Berechnung übernimmt, erlaubt die .NET-Integration nun je nach Anforderung, Methoden der Business- beziehungsweise Datenbankschicht in den SQL Server zu verschieben und dort direkt zu bearbeiten.

Doch die neuen Sprachalternativen bedeuten noch lange nicht das Aus für T-SQL, das sich nach wie vor dann anbietet, wenn es um Datenabfragen geht, die keine oder nur sehr wenig prozedurale Logik enthalten. Will man dagegen komplexe Berechnungen betreiben, die rechenintensiv sind und viele Ressourcen der CPU benötigen, bietet sich C# oder VB.NET an. Durch diese Auswahl lassen sich gravierende Performance- und Leistungssteigerungen erreichen. Doch auch T-SQL selbst hat viele Neuerungen erfahren. So gibt es einen neuen Typ für rekursive Abfragen, Arrays für die Parameterübergabe, einen Pivot Operator, mit dem man Tabellen rotieren kann, eine strukturierte Fehlerbehandlung (SEH) sowie neue Datentypen wie zum Beispiel Datum, Zeit oder XML.

In Sachen Sicherheit verwendet der neue SQL Server über die bisherigen Security-Mechanismen von Datenbank und Betriebssystem hinaus das .NET-Konzept "Code Access Security". Auf diesem Weg erübrigt sich beispielsweise die Programmierung von C#-Methoden für Administratorrechte, da entsprechende Metamodelle direkt verwendet werden können.

Zugriffssicherheit

Ein weiterer Aspekt ist, dass nun Sicherheitsänderungen direkt zur Laufzeit vorgenommen werden können, ohne den Code anfassen zu müssen. Die komplette Rechteverwaltung wird nur vom SQL Server 2005 übernommen, sei es der Zugriff auf die Daten, auf Threads oder aber auch auf das grafische User Interface und nicht verwalteten Code. Hierzu gibt es für die gehosteten Assemblies drei Sicherheitssysteme: SAFE, EXTERNAL_ACCESS, UNSAFE. Das Sicherheitssystem SAFE beispielsweise erlaubt nur den Zugriff auf die Daten des SQL Server 2005, aber keinen Zugriff auf das Dateisystem (zum Beispiel Schreiben einer Datei).

Eine herausragende Eigenschaft von SQL Server 2005 ist ferner, dass man XML-Web-Dienste (Web-Services) auf Ebene der Datenbank entwickeln kann, indem er die Aufgabe eines http-Listener übernimmt. Die Integration von Web-Services in den SQL Server bietet für Anwendungen eine neue Möglichkeit des Datenzugriffs. Konkret wird beim Einsatz von Web-Services kein Internet Information Server mehr benötigt, da der SQL Server diese Dienstschnittstelle direkt in der http.sys offen legt. Die Abfrageergebnisse werden im XML-Format zurückgegeben. Beim Zugriff auf einen Web-Service des SQL Server gilt "Security by Default". Somit ist es nicht möglich, auf die Daten über einen Web-Service zuzugreifen, wenn der Port beispielsweise als "Clear" definiert wird und die Authentifizierung auf "Anonymous" eingestellt ist. In der Regel verwendet man hier ein gültiges Zertifikat, um Daten abfragen zu können, oder muss sich beim Web-Service als Benutzer anmelden.

Erweitertes Provider-Modell

Mit der .NET-Integration erhält der SQL Server zudem ein neues und erweitertes Provider-Modell. Provider sind auf spezielle Datenbanken wie Oracle, Access oder MySQL abgestimmte Abfragemechanismen - solche Datenzugriffskomponenten werden im .NET-Framework mit ADO.NET 2.0 geboten. Sie erlauben jetzt beispielsweise auch Managed Provider mit Server-Auflistung, Bulkcopy und asynchrones Processing. Mit ADO.NET 2.0 ist es zudem möglich, Provider-unabhängig Zugriffe für verschiedene Arten von Datenbanken zu programmieren.

Außerdem wird mit ADO.NET das Konzept der Offline-Datenbanken unterstützt, also das autonome Arbeiten mit einer Datenbank, etwa im Außendienst, bei späterem Abgleich. Verbesserungen wurden auch in der Batch-Verarbeitung und am Dataset erzielt. Beim Dataset handelt es sich um eine In-Memory-Datenbank der .NET-Architektur, in der die gewünschten Tabellen und deren Verknüpfungen aus verschiedenen Datenbanken zusammengeführt werden.

Neuer Benachrichtigungsdienst

Ferner besitzt der SQL Server 2005 einen Benachrichtigungsdienst für Abfragen, die eine Meldung generieren, wenn das erneute Ausführen eines Befehls ein anderes Ergebnis liefert als das vorherige. Hierzu wird eine Notification Subscription (Benachrichtigungs-Abo) generiert, die über ADO.NET 2.0 abgefangen werden kann.

Das in SQL Server 2005 eingeführte "Mars" steht für Multiple Active Resultsets und ermöglicht mehrere ausstehende Anforderungen pro Verbindung.

Durch Mars kann es mehrere offene Resultsets pro Verbindung geben. Bisher war die Einschränkung bei offenen Resultsets so, dass dem Treiber erst dann erlaubt wurde, eine Anforderung an den Server zu senden, wenn das gesamte Resultset verwendet wurde.

Neu ist auch die Snapshot-Isolationsebene. Sie macht Daten für schreibgeschützte Anwendungen beispielsweise durch eine automatische Konflikterkennung für Schreibtransaktionen besser verfügbar.

Snapshot-Isolation

Die Snapshot-Isolation ist ein Zeilenversionierungsmechanismus, der Datenversionen für die Datenleser speichert. Über diese Technik wird auch die Migration von Anwendungen zum Beispiel von Oracle zu SQL Server 2005 vereinfacht. Die Snapshot-Isolationsebene wird von vielen Providern wie zum Beispiel ADO, OLE DB (Managed Provider) SQL OLE DB, Shape, SQL ODBC und SQL Managed Provider unterstützt.

Das Objektmodell für die SQL-Server-Verwaltung wird über die "SQL Management Objects" (SMO) abgebildet. Sie lassen sich sehr einfach in SQL-Management-Anwendungen und in entsprechenden Tools verwenden. Über 150 neue Klassen wurden hier implementiert, die Handhabung ist aber trotz dieses reichhaltigen Angebots einfach. SMO ist so entworfen, dass Änderungen an den Eigenschaften eines Objekts vorgenommen werden können, bevor deren Auswirkungen im SQL Server 2005 eintreten. So kann man über den verwalteten Code mit SMO auf die Eigenschaften des SQL Server zugreifen und auch ein Monitoring erstellen.

In Bezug auf den Datenaustausch hat Microsoft die XML-Unterstützung in SQL Server 2005 deutlich erweitert. Während SQL Server 2000 noch SQL XML verwendet, um relationale Daten in ein XML-Format zu konvertieren beziehungsweise zu speichern, erweitert die neue Datenbank diese Funktionalität, indem es XML direkt unterstützt und einen eigenen XML-Datentypen bereitstellt. Dadurch steht eine neue Abfragesprache für XML zur Verfügung, die beispielsweise eine direkte Änderung der XML-Daten zulässt. Bislang integrierte Datentypen wie "char" oder "varchar" können die Vorteile von XML nicht effektiv nutzen. Wählt man für XML eine Zeichenfolge mit derartigen Datentypen, ist man nur in der Lage, das gesamte XML-Dokument zu lesen beziehungsweise zu speichern, während man bei der Wahl des neu eingeführten XML-Datentyps direkt Inhalte oder Teile des Dokuments abfragen und ändern kann.

Mit dem "Service Broker" führt der SQL Server 2005 ein neues Anwendungs-Framework ein, das zuverlässig Daten verarbeitet und asynchrones Messaging bereitstellt. Betrachtet man die Datenbank als autonomes System in einer IT-Landschaft, entsteht mit ihm eine neue skalierbare Größe in der Architektur eines Anwendungs-Frameworks. Als autonomer Bestandteil in einer verteilten Architektur stellt der Service Broker die technische Implementierung einer serviceorientierten Architektur (SOA) dar, indem die Kommunikation zwischen zwei Diensten zeitversetzt stattfinden kann. Autonom bedeutet in diesem Zusammenhang, dass SQL Server 2005 mit dem Service Broker Funktionalität und Daten vernetzt kapselt, die Prozesse unabhängig von Störeinflüssen abarbeitet und die Nachrichten in der richtigen Reihenfolge bearbeitet. Zudem übernimmt SQL Server die Authentifizierung.

Ein wichtiger Faktor ist die Geschwindigkeit, in der die Daten abgearbeitet werden können. So muss sichergestellt sein, dass Anwendungen, die unterschiedlich schnell laufen, die Nachrichten zuverlässig abarbeiten und der Versender nach Versand der Daten sofort einen anderen Prozess beginnen kann. Der Service Broker ist in der Lage, fragmentierte Nachrichten wieder zusammenzusetzen.

Im Zuge der Business-Intelligence-Aktivitäten von Microsoft stellt SQL Server 2005 die "Reporting Services" zur Verfügung. Dabei handelt es sich um eine rein Server-basierende Plattform zum Erstellen und Verwalten von Berichten. Die Funktionen der Reporting Services reichen von interaktiven Berichten, deren einfacher Erstellung, Verteilung und Verwaltung bis hin zu einer umfassenden Programmierschnittstelle (API), über die Entwickler direkt auf das Berichtswesen zugreifen können.

Jederzeit informiert

Ein weiterer interessanter Dienst in SQL Server 2005 sind die "Notification Services". Sie stellen ein Benachrichtigungssystem bereit, das Nachrichten generieren und personalisiert beziehungsweise zeitgerecht an verschiedene Benutzer oder Geräte senden kann. Die Benachrichtigung zu einem Ereignis kann unmittelbar erfolgen oder nach einem festen Zeitplan, je nachdem, wie der einzelne Benutzer die Benachrichtigung abonniert hat. Ein weiterer Vorteil der Notification Services ist, dass dieser Dienst Daten-Spam verhindert, da die Nachrichten personalisiert abonniert sind und zeitgerecht zugestellt werden.

Nicht mehrfach kompilieren

Eine weitere Neuerung ist die Common Table Expression (CTE). Sie löst das Problem, dass alle Rekursionen einer Abfrage vom SQL Server kompiliert werden. Mit CTE wird die Abfrage einmal kompiliert und dann rekursiv ausgeführt. Sie basiert auf einem temporären Resultset, das von einer regulären SELECT-Abfrage erzeugt wurde und einen fest definierten Namen besitzt. Dieses temporäre Resultset kann in jeder SELECT-, INSERT-, UPDATE- oder DELETE-Abfrage verwendet werden, die innerhalb einer CTE beziehungsweise im gleichen Batch ausgeführt wird. Eine CTE wird einmal definiert und kann später pro Abfrage ein- oder mehrmals Referenzen auf sich selbst bilden. Diese rekursive Fähigkeit ist der wesentliche Vorteil einer CTE.

Mit dem SQL Server 2005 kommen auch zwei neue relationale Operatoren für Tabellen: Pivot und Unpivot. Beide ermöglichen es dem Datenbankentwickler, innerhalb der Abfragelogiken einfacher mit Metadaten arbeiten zu können. Der Pivot-Operator ordnet die Zeilen als Spalten an, der Unpivot-Operator ordnet Spalten als Zeilen an. Somit ist es möglich, in einer Abfrage Jagged Tables (jede Datenzeile besitzt eine unterschiedliche Anzahl von Spalten) abzubilden.

Mit SQL Server 2005 kommt auch eine verbesserte Katalogisierungsfunktion für komplexe Volltextanwendungen. Diese Verbesserungen erhöhen die Flexibilität der Katalogelemente, die Abfrageleistung und die Skalierbarkeit. Zudem werden neue Verwaltungs-Tools bereitgestellt.

Ein wesentlicher Vorteil der neuen Datenbank ist, dass sie vollständig mit der Nachfolgerversion von Visual Studio .NET (Codename Whidbey) integriert ist. Die enthaltenen Tools können zum Entwickeln und Debuggen von Datenbankobjekten, gespeicherten Prozeduren, Triggern, benutzerdefinierten Funktionen und Skripts verwendet werden. Vor allem der Entwurf der Datenbank gestaltet sich damit wesentlich komfortabler. Das Entwickeln und Verteilen der Assemblies für den SQL Server 2005 ist in Whidbey durch die Deployment-Funktion möglich.

Die neue Datenbanksoftware soll in diesem Sommer mit vier Lizenzmodellen auf den Markt gebracht werden. Diese reichen von der Enterprise Edition, die die komplette Daten- und Analyseplattform umfasst, bis hin zur kostenlosen SQL Server 2005 Express Edition. Neben der verbesserten Skalierbarkeit und der Erweiterung durch das .NET-Framework soll der SQL Server 2005 künftig auch stärkere Visualisierungsfunktionen bieten und um bestimmte Data-Mining-Algorithmen ergänzt werden. Zudem steht bei Microsoft zur Diskussion, ob, dem Beispiel anderer Datenbankanbieter folgend, Quellcode offen gelegt werden soll. Hier ist aber noch keine Entscheidung gefallen.