Home

Klemens Konopasek über Datenbanksysteme

video2brain: Begriffsklärung: SQL ist ja eigentlich eine recht einfache Sprache, um Daten abzufragen. Gleichzeitig tragen einige Datenbanksysteme auch diese drei Buchstaben im Namen. Für Einsteiger ist das eventuell verwirrend - was also ist die Definition/Aufgabe einer Abfragesprache und was ist ein Datenbankmanagementsystem bzw. ein Datenbank-Server?

 

Konopasek: Stimmt, das mag für den Einsteiger durchaus etwas verwirrend sein. Die Structured Query Language ist ja die Standardabfragesprache, mit der alle relationalen Datenbanksysteme bedient werden können. Diese enthält Anweisungen, mit denen man alle datenbankbezogenen Aufgaben erledigen kann. Dazu gehören nicht nur das Auslesen bzw. Auswerten von Daten, sondern auch andere Bereiche. So umfasst SQL fünf Sprachbereiche, welche vom Lesen von Daten über das Schreiben, das Erstellen der Struktur bis hin zur Vergabe von Berechtigung und der Steuerung von Transaktionen reicht.

 

Das Datenbankmanagementsystem ist jene Software, welche Datenbanken verwaltet und den Zugriff auf Datenbanken ermöglicht. Ein Datenbankmanagement-System kann Client-gestützt sein, dann spricht man von einem Desktop-Datenbanksystem. Hier laufen alle Prozesse am Client ab. „Der“ Vertreter dieser Kategorie ist MS Access. Ein Datenbank-Server ist ein servergestütztes Datenbanksystem, bei dem das Datenbankmanagementsystem auf einem Server läuft. Hier verarbeitet ein Server die SQL-Anweisungen, welche ihm vom Client übermittel werden. Der Datenbank-Server generiert dann das Ergebnis und liefert er an den Client zurück.

video2brain: Im Video-Training geht es um die Programmierung des Microsoft SQL Server. Dabei wird Transact-SQL (T-SQL) verwendet. Was ist der Unterschied zwischen SQL und T-SQL?

 

Konopasek: SQL als solches ist keine Programmier-, sondern eine Anweisungssprache. Daher kommt auch der Ausdruck SQL-Anweisung oder SQL-Statement. Transact-SQL – oder kurz T-SQL ­– hingegen ist eine Programmiersprache, welche auf SQL aufsetzt und diese Anweisungssprache um die Programmierelemente erweitert. Hier gibt es zum Beispiel Variablen und Kontrollstrukturen, wodurch das Erstellen von Abläufen, sprich Programmieren möglich wird. Außerdem können Prozeduren und Funktionen erstellt werden. Während mit SQL nur Anweisungen ausgeführt werden können, können mittels T-SQL komplexe Abläufe serverseitig umgesetzt werden.

 

Während SQL standardisiert ist und von allen namhaften Datenbankmanagement-Systemen unterstützt wird, ist T-SQL eine produktspezifische Erweiterung, welche nur vom Microsoft SQL Server und vom Sybase Adaptive Server Enterprise – beide waren vor vielen Jahren einmal ein gemeinsames Produkt von Microsoft und Sybase – unterstützt wird. Auch andere Produkte wie ORACLE haben eine solche prozedurale Spracherweiterung. Bei ORACLE heißt diese zum Beispiel PL/SQL.

 

Das schöne beim Programmieren mit T-SQL ist, dass man serverseitig auch komplexe Prozesse sehr performant implementieren kann und dabei mittels SQL – welches hier ja eins zu eins verwendbar ist – sehr einfach und direkt auf Daten zugreifen kann.

 

 

video2brain: DB-Programmierung per Abfragesprache: Ist ein MS Visual Studio im SQL-Server enthalten? Wie viele Benutzer dürfen es als IDE benutzen? Kann auch mit anderen (Programmier-) Sprachen die DB programmiert werden?

 

Konopasek: Der MS SQL Server enthält einige besondere Features, welche das Visual Studio benötigen. Dies sind zum Beispiel die Integration Services (IS), Reporting Services und einige BI-Funktionalitäten. Daher ist ein Visual Studio unter der Bezeichnung „Business Intelligence Development Studio“ als GUI-Tool beim SQL Server 2005 enthalten. Dieses enthält jedoch nur die Vorlagen für SQL Server eigene Projekttypen. Daher sollte man zu Erstellung von Windows-Anwendungen besser zum Beispiel ein Visual Studio Express oder eine Vollversion desselben einsetzten.Für das Erstellen von Web-Anwendungen mit ASP-NET kann auch der Visual Web Developer Express eingesetzt werden.

 

Für das Erstellen einer Datenbank-Anwendung kann man eigentlich jede beliebige Programmiersprache einsetzen. Man benötigt hier nur die entsprechenden Objektbibliotheken, um darin mittels SQL auf die DB zugreifen zu können. Begrifflich trennen sollte man hier das Programmieren einer Datenbank und das Programmieren einer Datenbankanwendung. Unter ersterem – und das ist der Fokus dieses Video-Trainings – versteht man das Programmieren von Funktionalitäten, welche direkt in der Datenbank integriert werden. Unter zweiterem versteht man das Entwickeln eines Frontends als Windows- oder Web-Applikation, welche eine Datenbank benutzt. Hier kann man datenbankseitig programmierte Funktionalität einbinden und verwenden.

 

Um auf den letzten Teil der Frage noch einzugehen: für die datenbankseitige Programmierung wird in erster Linie T-SQL verwendet. Ab der Version SQL Server 2005 können Sie auch mit einer .NET-Entwicklungssprache serverseitig entwickeln. Dies ist kein Ersatz sondern eine Erweiterung von T-SQL. Stark datenbezogene Aufgaben benötigen T-SQL. Bei stark allgorithmuslastigen Aufgabenstellungen gibt es Vorteile für die Entwicklung mit .NET. Und vor allem bei erweiterter Aufgabenstellung, welche nicht direkt typische Datenbankaufgaben sind, wie z.B. der Zugriff auf das Filesystem bietet die .NET-Integration des SQL Server 2005 tolle Vorteile.

video2brain: Klappt eine Performance-Erhöhung durch Verteilung der DB auf verschiedene Server (Lastverteilung)?

 

Konopasek: Prinzipiell lassen sich Server clustern und auch Daten ohne Clusterung auf mehrere Server verteilen. In der Regel macht es aber Sinn, eine Datenbank komplett auf einem Server zu belassen und nicht zu splitten, da nur dann der Einsatz von Datenintegritätsregeln (Beziehungen, Constraints) möglich ist. Performancegewinne lassen sich besser durch eine saubere Datenstruktur, eine sinnvolle Indizierung sowie den Einsatz von serverseitiger Programmierung mittels T-SQL erzielen als durch den Einsatz von stärkerer Hardware.

 

Folgendes Szenario macht aber sehr wohl Sinn: Wenn sehr viele Benutzer auf eine Datenbank zugreifen, kann man mehrere Server mittels Replikation mit derselben Datenbank zu bestücken. Das bedeutet, dass eine DB nicht auf mehrere Server gesplittet wird, sondern mehrere „Kopien“ dieser DB im Umlauf sind, welche sich untereinander mittels Replikation synchronisieren. Je nach verwendeter Topologie können Datenänderungen nur an einer oder an mehreren Stellen vorgenommen werden. So könnte auf diese Art und Weise ein eigener Server für das Generieren von Auswertungen herangezogen werden und damit die Last für den Server mit dem Produktivsystem reduzieren.

 

 

video2brain: Wie lassen sich externe Datenbanken in den SQL-Server einbinden?

 

Konopasek: Der SQL Server bietet verschiedene Mechanismen, um externe Daten einzubinden und zu verwenden. Hierzu muss man prinzipiell unterscheiden, ob es ein Online- oder eine Offline-Variante sein soll.

 

Eine Onlinevariante stellt die Verwendung von Linked-Servern/Verbindungsservern dar. Hier können externe Datenquellen und Server – natürlich auch Fremdformate – mittels OLE-DB auf dem SQL Server registriert werden. Dies können nicht nur andere SQL Server sondern auch andere DB-Server wie Oracle oder andere Datenformate sein. Dann werden diese Daten direkt über den Ausgangs-SQL Server mittels SQL abgefragt werden. Der SQL Server holt die benötigten Daten für den Benutzer bei der externen Datenquelle ab. Der Vorteil dieser Variante ist, dass die Verbindung nur einmal auf dem Server definiert wird und nicht für jeden Benutzer separat. Mit der grafischen Oberfläche, dem SQL Server Management Studio kann ein Verbindungsserver sehr leicht eingerichtet werden. Im Objekt-Explorer finden und erstellen Sie Verbindungsserver und dem Ordner Serverobjekte.

 

Eine andere Art der Nutzung von externen Daten ist das automatisierte Importieren und Abgleichen von Daten in bestimmten Intervallen. Hierfür bieten die Integration Services (IS) ein umfassendes Werkzeugsortiment an. Mit diesen können komplette Workflows und Szenarien mit Wenn-Dann… abgebildet werden. Ich verwendete die Integration Services zum Beispiel in Szenarien, bei denen ASCII-Dateien von einem FTP-Server abgeholt, importiert, danach archiviert und die importierten Daten in einer Datenbank mit vorhandenen Daten abgeglichen werden. Noch ein Hinweis für jene, die den SQL Server 2000 verwenden: Hier kommen dafür die Data Transformation Services, der Vorgänger der Integration Services, zum Einsatz.

Klemens Konopasek ist seit 15 Jahren in der Erwachsenenbildung zu Datenbankthemen tätig, seit 11 Jahren legt er seinen Schwerpunkt auf den MS SQL Server.

 

Er ist Autor des Video-Trainings "SQL-Server 2005 Programmierung"

Seitenanfang
Bleiben Sie auf dem Laufenden und abonnieren Sie unseren kostenlosen Newsletter!