Heute wurde bei MSDN ein interessanter Artikel veröffentlicht, der einen guten Einblick in die neuen Features von ADO.NET 3 gibt. Den Artikel gibt es sowohl in
Deutsch als auch in
Englisch.
In ADO.NET 3 wird es möglich sein, die Anfragen für den Datenbankzugriff direkt im Programmcode zu definieren, d.h. die Anfragen an die Datenbank sind dann nicht mehr einfache Strings, die SQL-Befehle enthalten, sondern Anweisungen in der jeweiligen Programmiersprache (z.B. C# oder VB.NET). Dieses Prinzip erinnert ein wenig an Embedded SQL, hat aber einen entscheidenden Unterschied: die Ergebnisse werden im objekt-orientierten Modell der Anwendung zurückgegeben und nicht als relationale Tupel, die man noch mit einem Cursor auslesen muss. Dieses Prinzip hat zwei Vorteile:
- Die Anfragen werden Teil des Programms und werden somit durch den Compiler z.B. auf Typkorrektheit geprüft. Beim klassischen Ansatz, dem Verwenden von SQL-Befehlen in Strings, kann es leicht zu Inkonsistenzen zwischen SQL-Befehlen und Programmiercode kommen, da die SQL-Befehle für den Compiler nicht transparent sind.
- Der "Impedance Mismatch" zwischen Datenbanksystem und Programmiersprache wird aufgehoben. Normalerweise muss man die Ergebnisse der von SQL-Anfragen aufwändig in entsprechende Objekte der Anwendung umformen. Diese Transformationen machen häufig einen großen Teil des Anwendungscode aus und müssen bei Änderungen des Objektmodells der Anwendung oder des Datenbankschemas konsistent weiterentwickelt werden.
Durch diese objekt-orientierte Sicht sieht man das Datenbanksystem in einem Modell, das eher dem konzeptuellen Modell entspricht, das man während des Entwurfs benutzt hat (also z.B. dem Entity-Relationship-Modell). Dies ist eine "natürlichere" Sichtweise als die klassische logische Sicht, in der man die Datenbank nur als eine Ansammlung von Tabellen sieht.
Für mich als Datenbank-Forscher ist natürlich auch interessant, dass diese Neuerung direkt aus Datenbankgruppe von MS Research kommt und somit eine Anwendung aktueller Forschungsergebnisse ist.
In den nächsten Wochen werde ich hier über weitere Features des neuen ADO.NET berichten und auch einige technischen Details ansprechen.