Datenbanken

Informationen sind ein lebenswichtiger Bestandteil Ihres Unternehmens. Neben der strukturierten Erfassung ihrer Daten und Geschäftsabläufe sollen diese auch wiedergefunden und ausgewertet werden.

Datenbankprogramierung Köln

Relationale Datenbanken1 wie der Microsoft SQL Server und Microsoft Access bieten Ihnen genau diese Möglichkeiten. Für Spezialfälle können Ihre Informationen auch in NoSQL Datenbanken, wie MongoDB oder Cosmos DB gespeichert werden.

Als Microsoft Partner haben wir über 20 Jahre Erfahrung in der Programmierung und Umsetzung von Datenbankprojekten und helfen ihnen gerne bei dem Aufbau Ihrer Unternehmensdatenbanken.

Microsoft SQL-Server als Datenbank

Der Microsoft SQL-Server2 gehört mit MySQL3, der Oracle4 Datenbank und IBM’s DB25 zum Urgestein relationaler Datenbanken und basiert auf einer Kooperation zwischen Sybase und Microsoft aus dem Jahre 1989. Seit der Version 7 Ende der 1990er wird der SQL Server komplett von Microsoft weiterentwickelt.

Bis zur aktuellen Version SQL Server 2019 wurde das Datenbanksystem um viele Komponenten und Funktionen moderner Datenbanken erweitert. Dazu gehören zum Beispiel die Analysis Services für OLAP6 und Data Mining7, die Reporting Services für die Ausgabe von Berichten als PDF, Word- oder Excel-Dokument und die Replication Services für eine Datenbankreplikation zwischen mehreren Datenbankinstanzen einschließlich Datensatz-Konfliktlösungen. Eine weniger bekannte Komponente ist der Service Broker, der sehr leistungsfähige asynchrone Anwendungen erlaubt. Eine Beschreibung des Service Brokers finden Sie unter Asynchrone T-SQL Prozeduren und Trigger.

Neben den Erweiterungen durch Dienste haben sich die Bestandteile des Microsoft SQL Servers ebenfalls weiterentwickelt. Tabellen können über mehrere Partitionen verteilt werden, geographische und geometrische Datentypen werden verarbeitet, In-Memory Tabellen sorgen für sehr hohe Geschwindigkeiten und temporale Tabellen erlauben die Abfrage eines Datenbestandes zu einem bestimmten Zeitpunkt. Mit der Always Encrypted-Funktion werden Daten verschlüsselt verarbeitet, so dass diese nur noch vom Client einsehbar sind.

Als Programmierer entwickeln und implementieren wir Microsoft SQL Server Datenbanksysteme, angefangen von der kleinsten Express Edition über den klassische In-house SQL Server bis zur Microsoft Azure Softwarelösung in der Cloud. Unsere Spezialgebiete sind hoch-optimierte T-SQL Lösungen, .NET CLR Anwendungen und der Betrieb und die Sicherheit von SQL Server Umgebungen.

Architektur von Datenbanken

Den Kern des SQL Servers bilden ein oder mehrere Datenbanken. Deren zentraler Bestandteil sind Tabellen, die Daten in der Form von spaltenbasierten Datensätzen aufnehmen. Jede Spalte hat einen eindeutigen Datentyp. Die Tabellen einer Datenbank sind typischerweise durch Beziehungen auf Feldebene miteinander verbunden. So verweisen z.B. mehrere Rechnungspositionen auf einen Rechnungsdatensatz. Diese Relationen werden mit Schlüsselspalten realisiert, die die Datensätze eindeutig identifizieren. Eine Funktion der Beziehungen ist z.B. die Lösch- oder Änderungsweitergabe, so dass im optimalen Fall die Datenbank immer in einem konsistenten Zustand ist. Eine hohe Performance erreicht der Microsoft SQL Server durch den Einsatz von Indices auf definierte Spalten.

Programmierung von Datenbanken aus Köln

Neben dem Aufbau der Datenbank ist die Durchführung von Datenbankoperationen in einer Mehrbenutzerumgebung von zentraler Bedeutung. Hierfür werden Sperren8 nach dem ACID9 Prinzip verwendet. Diese sorgen dafür, dass auch bei einer großen Benutzeranzahl alle Datensätze zentral an einem Ort konsistent gespeichert, geändert und abgefragt werden können.

Programmierung des SQL Servers

Wie schon im Namen des Servers angegeben ist SQL10 die Programmiersprache für die Entwicklung von Anwendungen mit dem SQL Server. Hier hat Microsoft mit Transact-SQL11 (T-SQL) den SQL Standard um etliche Befehle erweitert. Dazu gehören z.B. Variablendeklarationen, Flusskontrolle von Programmen über IF und WHILE, sowie eine TRY…CATCH Fehlerbehandlung, XML, Systemfunktionen und vieles mehr.

Über das Microsoft SQL Server Management Studio oder die Kommandozeile lassen sich T-SQL Programme ausführen. T-SQL Abfragen können als Sichten, T-SQL Programme als ausführbare Prozeduren bzw. Funktionen in der Datenbank gespeichert werden. Trigger erlauben die Verzahnung von Datenänderungen mit T-SQL Programmierungen. Damit lassen sich schnell maßgeschneiderte, leistungsfähige und performante Datenbankentwicklungen implementieren.

.NET Programmierung mit der SQL CLR

.NET und C# Programmierung für MS SQL Server Datenbanken mit der SQL CLR aus Köln

SQL basiert auf dem Paradigma von Mengenoperationen. Dadurch können Abfragen und Änderungen von großen Datensatzmengen sehr elegant formuliert und performant ausgeführt werden. Im Umkehrschluss kommt T-SQL an seine Grenze, wenn es um die Berechnung komplexer Zusammenhänge geht, die viele unterschiedliche Datensätze benötigen und statt über eine Mengenoperation nur sequentiell gelöst werden können.

Für diese Aufgaben erlaubt der Microsoft SQL Server die Ausführung von Funktionen aus .NET Bibliotheken. Diese können mit C# programmiert werden und erlauben eine imperative und Objekt-orientierte Softwareentwicklung, mit der solche Berechnungen deutlich einfacher und schneller als T-SQL erledigt. Darüber hinaus stehen so alle Bibliotheken des .Net Frameworks zur Verfügung. Als Entwickler haben wir ausgiebige Kenntnisse in der Datenbankentwicklung mit .NET und C#. Näheres zur Datenbankentwicklung mit .NET für den SQL Server finden Sie unter .NET Stored Procedures.

Erweiterte Programmierung mit R und Python

Datenanalyse und Verwaltung mit R für Datenbankanwendungen aus Köln

Seit dem MS SQL Server 2016 können R-Skripte und seit dem SQL Server 2017 auch Python-Skripte auf dem SQL Server ausgeführt werden. „R“12 ist eine auf Funktionen basierte Programmiersprache für statistische Analysen und Berechnungen, die aus dem akademischen Umfeld stammt. Ihr Charme beruht auf einer großen Menge an Paketen, die bereits Lösungen für unzählige Aufgaben mitbringen. Näheres finden Sie auch auf unserer Internetseite Datenanalyse mit R.

Python ist eine interpretierte Programmiersprache aus den 1990zigern, deren Hauptziel die Einfachheit und Lesbarkeit des Quellcodes ist. Python beinhaltet prozedurale, Objekt-orientierte und funktionale Paradigmen und bringt eine umfassende Standard-Bibliothek mit. Durch ihre lange Geschichte im Linux-Umfeld gibt es fast zu jedem Problem auch bereits eine Lösung oder eine Library. Python hat im Umfeld des maschinellen Lernens eine Renaissance durch Bibliotheken wie Scikit-Learn, Numpy, Pandas und TensorFlow erlebt.

Im Rahmen der Machine Learning Services13 werden beide Programmiersprachen zur Datenaufbereitung und Datenanalyse für maschinelles Lernen verwendet.

Microsoft Access

Entwicklung von Datenbanken mit Microsoft Access aus Köln

Mit Access14 liefert Microsoft seit den 1990igern eine Infrastruktur für kleine Datenbanklösungen. Bei Microsoft Access handelt es sich um ein RAD15 Tool für dateibasierte relationale Datenbank. Als schnelles Entwicklungstool eignet es sich besonders für Prototypen und agile Softwareentwicklung.

Der Datenbankzugriff erfolgt über die Microsoft Jet Engine. Die Jet Engine unterstützt einen Mehrbenutzerzugriff, hat einen eingebauten Abfrageprozessor, eine Integritätsprüfung und Sicherheitsfunktionen, wie z.B. Benutzerberechtigungen. Damit unterstützt sie alle wesentlichen Backend-Funktionen, die auch der Microsoft SQL Server bietet.

Im Vergleich zum SQL Server liegen die Beschränkungen von Microsoft Access Datenbanken in einer geringeren Benutzeranzahl, einer beschränkten Datenbankgröße und einer niedrigeren Performance.

Datenbanken mit Microsoft Access

Microsoft Access Anwendungen können in einer einzelnen Datenbank-Datei gespeichert und weitergegeben werden. Die Datenbank-Datei beinhaltet neben Tabellen und Abfragen auch alle Formulare und Berichte für die Eingabe und Ausgabe von Daten.

Diese Architektur kommt in Arbeitsgruppen mit mehreren Benutzern an ihre Grenzen, da hier Datenbank-Backend und das Frontend mit Benutzeroberfläche und Programmierung getrennt vorliegen sollten. In der Backend-Datei werden alle Datensätze, Tabellen und ihrer Beziehungen zueinander gespeichert. Das Backend darf nur einmal existieren und wird zentral in der Freigabe auf einem Dateiserver gespeichert. Die Funktion des Backends entspricht damit denen eines SQL Servers.

Programmierung mit Microsoft Access

Microsoft Access Anwendungen benötigen für die Ausführung immer eine Microsoft Access Instanz aus dem Microsoft Office Paket oder eine MS Access Runtime. Diese beinhalten neben der Jet Engine auch alle Funktionen zur Ausführung von VBA16-Programmierungen und zur Anzeige von Formularen und Berichten. Im Gegensatz zu einer Frontend-Anwendung wird der Programmcode nur interpretiert und liegt nicht als ausführbares Programm vor.

Microsoft Access bringt leistungsfähige Designer für Formulare und Berichte mit. Als Programmiersprache dient Visual Basic for Applications (VBA). Visual Basic erlaubt die einfache Erweiterung von Formularen, Modulen und Klassen mit COM und ActiveX-Komponenten. COM-Komponenten können mit C++ oder auch .NET entwickelt werden und werden nativ auf dem entsprechenden Betriebssystem ausgeführt. Daher verfügen Sie über eine hohe Performance und alle Darstellungsmöglichkeiten. Wir verwenden z.B. unsere ActiveX-Gantt Komponente zur Anzeige von Balken- und Gantt-Diagrammen in MS Access.

Das Frontend kann mehrfach installiert und zum Beispiel auf allen Client-Rechnern gespeichert werden. Die Verbindung zur Backend-Datenbankdatei findet über Tabellenverknüpfungen statt. Dies hat den Charme, dass neben einer Access Datenbank auch andere Datenbanksysteme, wie z.B. der SQL Server, als Backend dienen können.

Microsoft Access bringt bereits viele Funktionen zur Datenbearbeitung, wie eine tabellarische Dateneingabe, eine Suche und eine eingebaute Filterung von Daten mit. Darüber hinaus ist Microsoft Access eng mit anderen Office-Anwendungen verzahnt. Dadurch können Anwendungen und Prototypen schnell und kostengünstig erstellt werden.

Wir verfügen über eine jahrzehntelange Erfahrung und Kenntnisse als Entwickler für maßgeschneiderte Microsoft Access Lösungen.

Cloud und NoSQL Datenbanken

Cloud-basierte Datenbanken sind für hochverfügbare und stark skalierbare individuelle Softwarelösungen sinnvoll. Immer wenn es darum geht, eine große Anzahl von Clients permanent ohne Unterbrechung anzubinden, können Cloud-Softwarelösungen ihre Stärken ausspielen. Dazu gehören zum Beispiel stark frequentierte Webseiten und Web-Dienste oder auch Backend-Systeme für IoT17-Architekturen mit Tausenden von Endgeräten.

Implementation von Azure Cloud Datenbanken und individuellen Unternehmensanwendungen aus Köln

Microsoft liefert mit Azure eine große Bandbreite an Datenbanksystemen. Angefangen mit dem Azure Table Storage über SQL Server Instanzen bis zur Cosmos DB gibt es für jede Anforderung eine passende Lösung. So liefert der Azure Table Storage eine günstige NoSQL Lösung, in der zum Beispiel IoT-Geräte ihre Daten hinterlegen können. Die Aufarbeitung und Analyse der Daten kann dann im nächsten Schritt über einen SQL Server erfolgen. Dieser kann entweder als Azure Instanz angemietet oder auch On-Premise betrieben werden. So ergeben sich je nach Anforderung verteilte Architekturen und Softwarelösungen.

Projekte

Anwendungsbeispiele mit Datenbanken finden Sie in unseren folgenden Projekten:


1. Eine Einführung in relationale Datenbanken finden Sie unter https://de.wikibooks.org/wiki/Einführung_in_SQL:_Relationale_Datenbanken.

2. Siehe auch https://de.wikipedia.org/wiki/Microsoft_SQL_Server.

3. Bei MySQL handelt es sich um eine Open Source SQL Datenbank mit Ursprüngen in 1994, die vorwiegend für Webanwendungen in einem LAMP-Stack (Linux-Betriebssystem, Apache-Webserver. MySQL Datenbank & PHP als Programmiersprache) verwendet wird. PHP kann MySQL über die MySQLi Erweiterung einfach ansprechen. Siehe auch https://de.wikipedia.org/wiki/MySQL
Eine alternative Open Source Datenbank ist PostgreSQL, deren Entwicklung in 1980er Jahren begann und die seit 1997 von der Open Source Community weiterentwickelt wird. PostgreSQL bietet eine sehr gute JSON Unterstützung. Weitere Informationen zu PostgreSQL finden Sie unter https://de.wikipedia.org/wiki/PostgreSQL.

4. Oracle veröffentlichte 1997 das erste Oracle v2 Datenbanksystem. Seit Oracle 8.1 kann die Datenbank Java mit der Java Virtual Machine (JVM) ausführen. Siehe auch https://en.wikipedia.org/wiki/Oracle_Database.

5. Siehe auch https://en.wikipedia.org/wiki/IBM_Db2_Family.

6. Online Analytical Processing (OLAP) liefert relationale Daten als multidimensionale Abfragen und kann so Daten aus verschiedenen Perspektiven analysieren. Dadurch lassen sich Fragen aus dem Bereich Business Intelligence (BI) eines Unternehmens beantworten. Die Auswertung kann dann in PowerPivot für Excel oder dem Power BI Desktop Frontend angepasst werden. Weiteres siehe auch https://en.wikipedia.org/wiki/Online_analytical_processing.

7. Data Mining bezeichnet eine Datenauswertung, deren Ziel es ist neue Muster und Zusammenhänge in Datenbeständen zu finden. Neben Datenbanksystemen werden hier statistische Analysen und natürlich Machine Learning (ML, maschinelles Lernen) als neuester Trend verwendet, siehe auch https://en.wikipedia.org/wiki/Data_mining.

8. Sperren verhindern gleichzeitige Änderung von Datensätzen durch mehrere Benutzer und die Rückgabe inkonsistenter Daten. Hierfür werden z.B. gemeinsame, exklusive, beabsichtigte und andere Sperren auf der Ebene von Datenbanken, Tabellen, Speicher-Seiten und Zeilen verwendet. Siehe auch https://docs.microsoft.com/de-de/sql/relational-databases/sql-server-transaction-locking-and-row-versioning-guide?view=sql-server-ver15.

9.Das Atomistic Consistency Isolation Durability (ACID) Prinzip gilt für jede Transaktion des SQL Servers und gewährleistet die Datenintegrität von gespeicherten Daten und Abfragen.

10. Structured Query Language. Im Unterscheid zu imperativen Sprachen werden Operationen auf Datenmengen ausgeführt. Dadurch sind Abfragen und Änderungen von großen Datenmengen sehr schnell möglich. Eine Einführung in SQL finden Sie unter https://de.wikibooks.org/wiki/Einführung_in_SQL:_Druckversion:_Grundlagen.

11. Details siehe https://docs.microsoft.com/en-us/sql/t-sql/language-reference.

12. Siehe auch https://en.wikipedia.org/wiki/R_(programming_language).

13. Siehe https://docs.microsoft.com/en-us/sql/machine-learning/sql-server-machine-learning-services.

14. Siehe https://en.wikipedia.org/wiki/Microsoft_Access.

15. Rapid Application Development (RAD), siehe auch https://en.wikipedia.org/wiki/Rapid_application_development.

16. Visual Basic for Applications (VBA). Ein Visual Basic Dialekt, der auf Visual Basic 6 basiert und um die Objektmodelle der entsprechenden Anwendungen wie Microsoft Word, Microsoft Excel und Microsoft Access erweitert wurde. VBA Programmierungen werden im entsprechenden Office-Dokument mitgespeichert und von der Office Anwendung interpretiert und ausgeführt. VBA kann wie Visual Basic um COM und ActiveX-Komponenten erweitert werden. Wir programmieren schon seit vielen Jahren mit VBA und sind Spezialisten für COM, Visual Basic 6 und Microsoft Access.

17. Internet of Things (IoT), Kleine Rechnereinheiten mit autonomem Datenaustausch über ein Netzwerk, siehe auch https://en.wikipedia.org/wiki/Internet_of_things.