Zum Hauptinhalt springen

Datenbanken Übersicht

Ü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