SQL Server 2008 für Entwickler
Artikel erschienen in Swiss IT Magazine 2008/16
Mit seinem Ansatz einer Datenplattform bringt der SQL Server 2008 auch viele neue Funktionen für Entwickler, um mit unterschiedlichsten Arten von Informationen – von klassisch strukturierten Daten über XML und
Dokumente bis hin zu geospatialen Daten – umgehen zu können. Ein wichtiges Konzept ist dabei das neue Entity Data Model, das – wie übrigens auch in anderen Bereichen – den Schritt weg von einer Datensicht hin zu einer Objektsicht macht, wie man sie sonst erst mit Hilfe eines ORM erhält.
Eines der Probleme, die sich gerade auch beim SQL Server 2005 gezeigt haben, ist die Herausforderung, komplexere Abfragen effizient zu gestalten, wenn das System im Hintergrund versucht, das Verhalten für die Abfragen zu optimieren. Hier greifen verschiedene Neuerungen, die sowohl für Administratoren als auch Entwickler relevant sind. Eine davon ist das «Plan Freezing», mit dem sich definierte Abfragepläne verwenden lassen. Damit werden die Stabilität und die Vorhersagbarkeit von wiederkehrenden Abfragen erhöht, was vor allem bei der Entwicklung von Anwendungen mit komplexen Abfragen und entsprechenden Herausforderungen bezüglich der Performance von Bedeutung ist.
Entwickler profitieren auch von der einfacheren Installation. Mit dem SQL Server 2008 werden, abhängig von den Editionen, alle erforderlichen Entwicklungswerkzeuge bis hin zu einer Version des Visual Studio für die Realisierung von Business-Intelligence-Anwendungen geliefert. Diese Werkzeuge lassen sich auch bei der Installation gezielt auswählen.
Bei den neuen Funktionen für die Entwicklung ist das bereits erwähnte ADO.NET Entity Framework eine der wichtigsten Änderungen. Ein Blick darauf lohnt sich in jedem Fall, weil man damit potentiell die Produktivität in der Entwicklung von Anwendungen wesentlich erhöhen kann. Allerdings bedeutet das auch eine erhebliche Umstellung bezüglich der Konzepte in der Programmierung.
Aber auch bei den Grundlagen gibt es Neuerungen. Bei Transact-SQL, der SQL-Implementierung des SQL Server 2008, gibt es beispielsweise neue Datentypen für Daten und Uhrzeiten, die den Umgang damit vereinfachen. Mit den so genannten Table-Value-Parametern lassen sich Informationen in einer Tabellenstruktur als Eingabeparameter für Stored Procedures verwenden. Das ist vor allem für komplexere Prozeduren von Bedeutung. Ausserdem wurden die Funktionen für die Analyse von Abhängigkeiten zwischen Objekten erweitert. In Anbetracht immer komplexerer Datenstrukturen und Funktionen des SQL Server 2008 ist auch das eine wichtige Erweiterung für Entwickler von Applikationen.
Wenig überraschend ist im Kontext der Datenplattform-Strategie von Microsoft die Unterstützung zusätzlicher Klassen von Daten über die relationalen Daten hinaus. Hier gab es auch bisher schon wichtige Funktionen – aber beim SQL Server 2008 gibt es einige wichtige Erweiterungen.
Zu erwähnen ist hier zunächst der neue FILESTREAM-Datentyp, mit dem sich grosse binäre Daten wie Dokumente und Images direkt in das NTFS-Dateisystem speichern lassen. Die Verwaltung erfolgt aber weiterhin über die Datenbank, so dass auch die Integrität der Daten gewährleistet ist. Gerade bei diesem Datentyp wird auch sichtbar, wie Microsoft immer mehr unterschiedliche Konzepte wie das NTFS und den Microsoft SQL Server miteinander integriert.
Änderungen gibt es auch bei geographischen Daten, wo sich gleich zwei neue Datentypen finden. Mit diesen Datentypen können geographische und geometrische Daten effizienter abgelegt werden. Das ist unter anderem wichtig, um beispielsweise aktuelle GPS-Lösungen optimal unterstützen zu können.
Ein weiterer Datentyp sind die hierarchischen IDs, mit deren Hilfe sich hierarchische Strukturbäume abbilden lassen. Darüber hinaus ist das Limit von 8000 Byte für benutzerdefinierte Datentypen weggefallen. Mit Hilfe sogenannter «Sparse Columns» lassen sich ausserdem Datenmengen, in denen es grosse Mengen von Null-Werten gibt, besser verwalten, weil in diesem Fall kein physischer Speicherplatz belegt wird.
Auch bei den Business Intelligence-Funktionen hat sich viel getan. Ein vollständiger
Überblick würde den Rahmen dieses Artikels bei weitem sprengen und wird deshalb in der nächsten Ausgabe nachgeliefert. Wichtig sind vor allem die Erweiterungen, um einerseits mit mehr Arten von Informationen umgehen zu können und mit denen komplexere Anforderungen, die bisher zu Performance-Problemen führen konnten, adressiert werden. So gibt es nun beispielsweise ein spezielles MERGE-SQL-Statement, mit dem sich einfach ermitteln lässt, ob bestimmte Zeilen existieren, um dann gezielt darauf ein INSERT oder UPDATE auszuführen.
Auch bei den Analysefunktionen hat sich viel getan. Die Verbesserung der Performance steht auch hier im Vordergrund. So gibt es neue Ansätze für Berechnungen von grösseren «Blöcken» an Daten und erweiterte Funktionen für die Vorhersage von Ergebnissen.
Während sich solche Erweiterungen oft relativ einfach in bestehenden Entwicklungsansätzen nutzen lassen, stellen vor allem die fundamental neuen Konzepte der Entities und von LINQ eine Herausforderung für Entwickler dar, weil sie die Art und Weise, wie man mit Daten umgeht, grundlegend verändern. Das bietet viele Vorteile, erfordert aber einerseits, dass man sich mit diesen Ansätzen vertraut macht.
Um die Verfahren zu nutzen, benötigt man andererseits eine grundlegend andere konzeptionelle Herangehensweise, weil man auf Objekten und unterschiedlichsten Arten von Daten und nicht mehr nur auf relationalen Datenstrukturen arbeitet. Man kann damit sehr viele der Einschränkungen und Komplexitäten, die das relationale Modell hat, umgehen – aber es ist eine andere Art der Entwicklung, die sehr viel stärker objektorientiert ist. Da aber auch der Zugriff auf relationale Daten standardmässig heute aus objektorientierten Programmiersprachen heraus erfolgt, ist das ein durchaus logischer Ansatz.
Auch für Entwickler gibt es beim SQL Server 2008 also viel zu entdecken – und wenn man die Möglichkeiten nutzt, kann man deutlich produktiver werden.