19 Datenbanken
Datenbanken bieten leistungsstarke Mittel zur Speicherung, Verwaltung und Abfrage großer Datenmengen, die für Analyse und Forschung genutzt werden können.
Sie bieten mehrere Vorteile gegenüber herkömmlichen Dateiformaten wie CSV oder Excel-Tabellen:
Effizienz: Datenbanken sind darauf optimiert, große Mengen an Daten schnell und effizient zu verwalten und abzurufen.
Skalierbarkeit: Datenbanken können mit dem Wachstum der Datenmenge skaliert werden, ohne die Leistung zu beeinträchtigen.
Sicherheit: Datenbanken bieten verschiedene Sicherheitsmechanismen zum Schutz sensibler Daten.
Mehrbenutzerzugriff: Datenbanken ermöglichen mehreren Benutzern gleichzeitig den Zugriff und die Bearbeitung von Daten, ohne dass es zu Konflikten kommt.
Es gibt verschiedene Arten von Datenbanken, die je nach Anwendungsfall und Datenstruktur verwendet werden:
Datenstruktur | Beschreibung | Beispiele | Typische Datenbanken |
---|---|---|---|
Strukturiert | Festes Schema, klar definierte Felder | - Tabellen |
- MySQL - PostgreSQL - SQLite |
Teilstrukturiert | Flexibles Schema, einige strukturierte Elemente | - JSON - XML - E-Mails |
- MongoDB - Couchbase - Elasticsearch |
Unstrukturiert | Kein vordefiniertes Datenmodell | - Textdokumente - Bilder - Videos |
- MongoDB - Amazon S3 - Apache Cassandra |
Die Wahl der richtigen Datenbank hängt oft von der Struktur der zu verarbeitenden Daten ab. In Data Science Projekten ist es nicht ungewöhnlich, mit allen drei Arten von Datenstrukturen zu arbeiten.
Relationale Datenbanken: Diese verwenden Tabellen zur Speicherung von Daten und sind durch ihre Verwendung von SQL (Structured Query Language) bekannt. Beispiele sind MySQL, PostgreSQL und SQLite.
NoSQL-Datenbanken: Diese sind für unstrukturierte Daten oder große Mengen an Daten ausgelegt, die nicht in das relationale Modell passen. Beispiele sind MongoDB, Cassandra und Redis.
19.1 Relationale Datenbanken
Relationale Datenbanken bilden das Fundament vieler moderner Datenbankanwendungen. Ihre Stärke liegt in der Fähigkeit, Daten in strukturierten Tabellen zu organisieren und effizient zu verwalten.
Ein Datenbankmanagementsystem (DBMS) ist die Software, die die Erstellung, Verwaltung und Nutzung von Datenbanken ermöglicht. Ein relationales DBMS (RDBMS) bietet zusätzliche Funktionen wie:
- Datenintegrität (Gewährleistung der Richtigkeit und Konsistenz von Daten)
- Transaktionsverwaltung (Koordinierung und Überwachung von Datenbankoperationen)
- Sicherheitsmechanismen (Schutz vor unbefugtem Zugriff und Datenverlust)
Zu den bekannten RDBMS gehören MySQL, PostgreSQL und SQLite.
Einsatzgebiete relationaler Datenbanken sind vielfältig:
- Finanzwesen: Verwaltung von Kontodaten, Transaktionen und Finanzberichten
- E-Commerce: Organisation von Produktkatalogen, Bestellungen und Kundeninformationen
- Gesundheitswesen: Verwaltung von Patientendaten, Terminen und medizinischen Aufzeichnungen
Die Struktur, Flexibilität und Zuverlässigkeit relationaler Datenbanken machen sie zu einem unverzichtbaren Werkzeug in der modernen Datenverwaltung und -analyse.
19.1.1 Tabellen
Tabellen stehen im Mittelpunkt jeder relationalen Datenbank. Eine Tabelle ist eine strukturierte Sammlung von Daten, organisiert in Zeilen und Spalten. Jede Tabelle repräsentiert eine Entität, wobei jede Zeile einen einzelnen Datensatz dieser Entität darstellt.
Betrachten wir ein Beispiel einer einfachen Tabelle “Kunden”:
KundenID | Name | Stadt | |
---|---|---|---|
1 | Max Müller | max.mueller@beispiel.de | Berlin |
2 | Anna Schmidt | anna.schmidt@beispiel.de | Hamburg |
3 | Peter Weber | peter.weber@beispiel.de | München |
Jede Spalte in einer Tabelle besitzt einen spezifischen Datentyp, der die Art der zu speichernden Daten definiert. Häufig verwendete Datentypen sind:
- INTEGER: Ganze Zahlen
- VARCHAR: Zeichenketten variabler Länge
- DATE: Datumsangaben
- BOOLEAN: Wahrheitswerte (true/false)
Zwei wichtige Konzepte in relationalen Datenbanken sind:
Primärschlüssel: Eine Spalte oder Spaltenkombination, die jeden Datensatz in einer Tabelle eindeutig identifiziert. Im obigen Beispiel fungiert die Spalte “KundenID” als Primärschlüssel der Tabelle “Kunden”.
Fremdschlüssel: Eine Spalte, die eine Beziehung zwischen zwei Tabellen herstellt. Ein Fremdschlüssel in einer Tabelle verweist auf den Primärschlüssel einer anderen Tabelle.
Um die Verwendung von Fremdschlüsseln zu veranschaulichen, betrachten wir eine zweite Tabelle “Bestellungen”:
BestellID | KundenID | Produkt | Menge | Bestelldatum |
---|---|---|---|---|
1 | 2 | Laptop | 1 | 2024-03-15 |
2 | 1 | Smartphone | 2 | 2024-03-16 |
3 | 3 | Tablet | 1 | 2024-03-17 |
4 | 2 | Kopfhörer | 1 | 2024-03-18 |
In dieser Tabelle fungiert die Spalte “KundenID” als Fremdschlüssel, der auf den Primärschlüssel der Tabelle “Kunden” verweist. Diese Beziehung ermöglicht es, Informationen aus beiden Tabellen zu verknüpfen.
Durch die Verwendung von Tabellen und deren Beziehungen zueinander können komplexe Datenstrukturen abgebildet und effizient verwaltet werden. Dies ist eine der Kernstärken relationaler Datenbanken und ein wesentlicher Grund für ihre weite Verbreitung in der Datenverwaltung.
19.1.2 SQL
SQL (Structured Query Language) ist die Standardsprache für die Verwaltung und Abfrage von Daten in einer relationalen Datenbank. Mit SQL lassen sich vielfältige Operationen durchführen:
- Daten einfügen
- Daten aktualisieren
- Daten löschen
- Daten abfragen
- Datenbankstrukturen wie Tabellen und Indizes erstellen und ändern
Ein einfaches SQL-Abfragebeispiel verdeutlicht die Funktionsweise:
SELECT Name, Email
FROM Kunden
WHERE Stadt = 'Berlin';
Diese Abfrage selektiert die Spalten “Name” und “Email” aus der Tabelle “Kunden”. Dabei werden nur die Datensätze berücksichtigt, bei denen die Stadt “Berlin” ist.
Durch die Verwendung von SQL können komplexe Datenoperationen effizient und präzise durchgeführt werden, was die Arbeit mit relationalen Datenbanken erheblich erleichtert.
19.2 NoSQL Datenbanken
NoSQL steht für “Not only SQL” und bezeichnet eine Klasse von Datenbanksystemen, die sich von traditionellen, relationalen Datenbanken unterscheiden. Diese Systeme wurden entwickelt, um die Skalierbarkeit und Leistung zu verbessern sowie flexibler mit Daten umzugehen.
Hauptmerkmale von NoSQL-Datenbanken
Schemaflexibilität: NoSQL-Datenbanken ermöglichen die Speicherung von Daten ohne vordefiniertes Schema, was eine schnelle Anpassung an sich ändernde Datenanforderungen erlaubt.
Horizontale Skalierbarkeit: Diese Datenbanken sind darauf ausgelegt, große Datenmengen auf vielen Servern zu verteilen. Sie unterstützen eine horizontale Skalierung durch Hinzufügen weiterer Server in ein Netzwerk.
Hohe Verfügbarkeit und Fehlertoleranz: NoSQL-Datenbanken sind so konzipiert, dass sie auch bei Ausfällen einzelner Knoten im Netzwerk weiterhin verfügbar bleiben.
Anstatt Tabellen zu verbinden, speichern NoSQL-Datenbanken unstrukturierte oder halbstrukturierte Daten, oft in Schlüssel-Wert-Paaren oder JSON-Dokumenten. Sie umfassen mehrere verschiedene Modelle zum Zugriff und zur Verwaltung von Daten, die jeweils für spezifische Anwendungsfälle geeignet sind.
19.2.1 NoSQL-Datenmodelle
Die verschiedenen NoSQL-Datenmodelle bieten Flexibilität und Effizienz für unterschiedliche Anwendungsfälle und Datenstrukturen. Die Wahl des geeigneten Modells hängt von den spezifischen Anforderungen des jeweiligen Projekts ab.
Modell | Eigenschaften | Open Source Beispiele |
---|---|---|
Dokumentenorientierter Speicher | Daten und Metadaten werden hierarchisch in JSON-basierten Dokumenten innerhalb der Datenbank gespeichert. | MongoDB, CouchDB |
Schlüssel-Wert-Speicher | Die einfachsten NoSQL-Datenbanken, Daten werden als eine Sammlung von Schlüssel-Wert-Paaren dargestellt. | Redis |
Spaltenorientierter Speicher | Verwandte Daten werden als eine Reihe von verschachtelten Schlüssel/Wert-Paaren innerhalb einer einzigen Spalte gespeichert. | HBase, Cassandra |
Graph-Speicher | Daten werden in einer Graphstruktur als Knoten, Kanten und Dateneigenschaften gespeichert. | Neo4j |
19.2.2 Anwendungsbereiche
NoSQL-Datenbanken finden in verschiedenen Bereichen Anwendung:
- E-Commerce: Verwaltung von Produktkatalogen, Benutzerprofilen und Warenkörben.
- Big Data: Verarbeitung und Analyse großer Datenmengen in Echtzeit.
- Content Management: Speicherung und Verwaltung von Inhalten wie Dokumenten, Bildern und Videos.
- Social Media: Verwaltung von Benutzerprofilen, Beziehungen und Aktivitäten in sozialen Netzwerken.
- IoT (Internet of Things): Speicherung und Analyse großer Mengen an Sensordaten.