Zum Hauptinhalt springen

Datenbanken

Überblick

Eine Datenbank ist eine organisierte Sammlung von strukturierten Daten, gemanaged von einem Database Management System (DBMS). Die zwei bekanntesten Arten sind relationale (SQL) und nicht-relationale (NoSQL) Datenbanken.

Relationale Datenbanken (SQL)

Daten werden in Tabellen gespeichert mit Zeilen und Spalten. Jeder Datensatz ist einzigartig identifizierbar mit einem Primärschlüssel und Tabellen werden über Fremdschlüssel miteinander verbunden.

  • Daten können mit SQL (Structured Query Language) abgefragt werden
  • Das Schema ist im Voraus definiert und wird von der Datenbank strikt durchgesetzt
  • Am besten geeignet für strukturiere Daten mit klaren Beziehungen

Bekannte Beispiele: PostgreSQL, MySQL, SQLite, Microsoft SQL Server, Oracle DB

Kernkonzepte

Normalisierung: Tabellen organisieren um Datenredundanz zu reduzieren:

  • 1NF: Atomare Werte, keine sich wiederholenden Gruppen
  • 2NF: Keine partiellen Abhängigkeiten von zusammengesetzten Schlüsseln
  • 3NF: Keine transitiven Abhängigkeiten

ACID Properties: Eine Garantie für zuverlässige Transaktionen:

  • Atomicity: Eine Transaktion wird entweder komplett durchgeführt oder bricht ab
  • Consistency: Daten bewegen sich immer nur von einem validen Zustand zu einem anderen
  • Isolation: Gleichzeitige Transaktionen beeinträchtigen sich nicht gegenseitig
  • Durability: Schon durchgeführte Änderungen bleiben auch nach einem Crash erhalten

Nicht-relationale Datenbanken (NoSQL)

Designed für flexible, skalierbare Speicherung von unstrukturierten oder nur semi-strukturierten Daten. Kein fixes Schema wird benötigt.

TypBeschreibungBeispiele
DokumentSpeichert JSON ähnliche DokumenteMongoDB, CouchDB
Key-ValueEinfache Schlüssel → WertpaareRedis, DynamoDB
Column-FamilyOptimiert für spaltenorientierte read/write VorgängeApache Cassandra
GraphNodes und edges für relationship-heavy DatenNeo4j

Relational vs. NoSQL

RelationalNoSQL
SchemaFest, vordefiniertFlexibel / schemalos
AbfragespracheSQLVariiert (z.B. MongoDB Query Language)
SkalierungVertikal (hochskalieren)Horizontal (ausskalieren)
KonsistenzStark (ACID)Oft eventuelle Konsistenz
Am besten fürStrukturierte Daten, komplexe JoinsGroße Skalierung, flexible oder hierarchische Daten