- 1 Abschnitt
- 7 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
Datenbankmodelle
In diesem Abschnitt werden wir die verschiedenen Datenbankmodelle kennenlernen, die in der Praxis häufig verwendet werden. Ein gutes Verständnis dieser Modelle hilft dir, die richtige Datenbanklösung für deine Anwendung auszuwählen. Wir werden uns insbesondere mit relationalen Datenbanken und NoSQL-Datenbanken beschäftigen.
Relationale Datenbanken
Relationale Datenbanken sind die am häufigsten verwendeten Datenbanksysteme. Sie organisieren Daten in Tabellen, die aus Zeilen (Datensätzen) und Spalten (Attributen) bestehen. Jede Tabelle stellt eine Entität dar, und Tabellen können über Schlüssel miteinander in Beziehung gesetzt werden.
Merkmale
- Tabellenbasiert: Daten werden in Tabellenform gespeichert.
- SQL: Verwenden von Structured Query Language (SQL) für Datenmanipulation und -abfragen.
- ACID-Eigenschaften: Stellen sicher, dass Transaktionen atomar, konsistent, isoliert und dauerhaft sind.
Schlüsselkonzepte
- Primärschlüssel: Eine Spalte oder eine Kombination von Spalten, die jeden Datensatz eindeutig identifiziert.
- Fremdschlüssel: Eine Spalte, die auf einen Primärschlüssel in einer anderen Tabelle verweist und Beziehungen zwischen Tabellen herstellt.
Beispiele für relationale Datenbankmanagementsysteme (RDBMS)
- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server
Beispiel einer relationalen Datenbankstruktur:
| Benutzer |
|---|
| BenutzerID |
| ———— |
| 1 |
| 2 |
| Aufgaben |
|---|
| AufgabeID |
| ———– |
| 1 |
| 2 |
In diesem Beispiel gibt es zwei Tabellen: Benutzer und Aufgaben. Die Tabelle Aufgaben enthält eine Beziehung zur Tabelle Benutzer über die BenutzerID.
NoSQL-Datenbanken
NoSQL-Datenbanken sind für spezielle Anwendungsfälle optimiert und bieten flexible Datenmodelle. Sie sind besonders geeignet für große, verteilte Datenspeicher und Anwendungen mit hohem Datendurchsatz.
Merkmale
- Flexibles Schema: Keine festen Tabellenschemata, wodurch sie sich gut für unstrukturierte oder sich schnell ändernde Daten eignen.
- Skalierbarkeit: Entwickelt für horizontale Skalierung über viele Server hinweg.
- Hochleistungsfähig: Geeignet für Anwendungen, die eine hohe Leistung und schnelle Datenzugriffe erfordern.
Haupttypen von NoSQL-Datenbanken
Dokumentenorientierte Datenbanken: Speichern Daten als Dokumente, oft im JSON-Format. Beispiel: MongoDB.
Beispiel eines Dokuments in MongoDB:
{
"BenutzerID": 1,
"Name": "Alice",
"Aufgaben": [
{
"AufgabeID": 1,
"Titel": "Einkaufen",
"Beschreibung": "Milch und Brot",
"Erledigt": "Nein"
}
]
} Schlüssel-Wert-Datenbanken:
- Speichern Daten als Schlüssel-Wert-Paare.
- Beispiel: Redis
Beispiel eines Schlüssel-Wert-Paares:
"Benutzer:1" : "{ 'Name': 'Alice', 'Aufgaben': [ { 'AufgabeID': 1, 'Titel': 'Einkaufen', 'Beschreibung': 'Milch und Brot', 'Erledigt': 'Nein' } ] }"
Spaltenorientierte Datenbanken:
- Speichern Daten in Spaltenfamilien statt in Zeilen.
- Beispiel: Apache Cassandra
Beispiel einer spaltenorientierten Datenbankstruktur:
Benutzer {
ID: 1,
Name: "Alice",
Aufgaben: [
{ ID: 1, Titel: "Einkaufen", Beschreibung: "Milch und Brot", Erledigt: "Nein" }
]
} Graph-Datenbanken:
- Speichern Daten als Knoten und Kanten, um komplexe Beziehungen darzustellen.
- Beispiel: Neo4j
Beispiel einer Graph-Datenbankstruktur:
(Alice)-[:HAT_AUFGABE]->(Einkaufen)
(Einkaufen)-[:IST_TEIL_VON]->(Hausarbeit) Vergleich zwischen relationalen und NoSQL-Datenbanken
| Kriterium | Relationale Datenbanken | NoSQL-Datenbanken |
|---|---|---|
| Datenmodell | Tabellenbasiert | Flexibel (Dokumente, Schlüssel-Wert, Spalten, Graph) |
| Schema | Festes Schema | Flexibles Schema |
| Abfragesprache | SQL | Unterschiedlich (z.B. JSON, Schlüssel-Wert) |
| Skalierbarkeit | Vertikale Skalierung (Skalierung nach oben) | Horizontale Skalierung (Skalierung nach außen) |
| Transaktionen | ACID (starke Konsistenz) | Eventual Consistency (schwache Konsistenz) |
| Einsatzgebiete | Traditionelle Geschäftsanwendungen, ERP | Big Data, Echtzeit-Webanwendungen, IoT |
