SQL Server 2008 für Entwickler

Mit dem Entity Data Model und LINQ bringt der SQL Server 2008 fundamental neue Konzepte mit. Diese bieten neue Möglichkeiten, sind aber auch eine Herausforderung.

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.



Dieses Modell steht oberhalb der Datenstrukturen, die in den SQL-Server-Datenbanken abgelegt werden, und kann von unterschiedlichsten Services der SQL-Server-Infrastruktur genutzt werden. Die Entities sind abstrakte Objekte, mit denen beispielsweise Business-Objekte oder eben Business-Entities wie der Kunde, der Lieferant, ein Vertrag, eine Rechnung oder andere Informationen abgebildet werden können. Diese Entities sind damit eine logische Sicht auf Datenstrukturen, die in den Datenbanken weiterhin in Tabellen und rela­-tio­nalen Strukturen abgelegt sind. Zwischen den Entities lassen sich Beziehungen modellieren. Der Zugriff auf solche Entities kann über das neue ADO.NET Entity Framework (detaillierte Besprechung in InfoWeek 18) erfolgen. Anwendungen können damit ohne Kenntnis der zugrundeliegenden Datenstrukturen mit solchen logischen Entities arbeiten. Das vereinfacht die Entwicklung von Business-Anwendungen signifikant, weil man auf einer höheren Ebene arbeitet.


Vorhersagbarkeit und Analyse

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.



Aber auch andere Optimierungen wie der Resource Governor sowie die Funktionen für die Predictive Analysis der SQL Server Analysis Services sind in diesem Bereich einzuordnen. An der Schnittstelle zwischen Entwicklern und Administratoren gibt es damit wesentliche Neuerungen, die auch helfen, Probleme, die ansonsten erst in der Laufzeitumgebung sichtbar werden, zu minimieren, wenn nicht gar zu eliminieren.


Entwicklungswerkzeuge

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.



Die zweite wichtige Neuerung in diesem Bereich ist LINQ, die Language Integrated Query. Dabei handelt es sich vielleicht um das derzeit am meisten unterschätzte neue Feature beim Microsoft SQL Server 2008. Bei LINQ handelt es sich um eine neue Abfragesprache, die in aktuelle Programmiersprachen mit Managed Code wie Visual C# oder Visual Basic.NET eingebunden werden kann.


LINQ arbeitet primär mit Abfragen auf die Entity-Datenmodelle, wobei damit unterschiedlichste Arten von Informationen angesprochen werden können. Es gibt aber auch Schnittstellen direkt zu SQL, um unmittelbar auf SQL Server 2008-Tabellen und -Spalten zugreifen zu können. Ausserdem gibt es eine Schnittstelle zu definierten Data Sets. LINQ ist ein Ansatz, mit dem sich in einheitlicher Weise unterschiedlichste Arten von Informationen abfragen lassen – auf Objektebene und nicht mehr auf der Datenebene. Die Ergebnisse werden als .NET-Objekte zurückgeliefert, die weiterverwendet werden können.


Transact-SQL

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.


Mehr Datentypen

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.


Business Intelligence

Auch bei den Business Intelligence-Funktio­nen 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.


Umstellungen erforderlich

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.




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Wieviele Zwerge traf Schneewittchen im Wald?
GOLD SPONSOREN
SPONSOREN & PARTNER