Diese Seite …

Zuletzt geändert 2 min Lesezeit (258 Wörter)

Datenbanken im Umfeld verteilter Systeme

psql

tickets=# CREATE TABLE tickets (
  id SERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  status TEXT NOT NULL
);

CREATE TABLE comments (
  id SERIAL PRIMARY KEY,
  ticket_id INT NOT NULL REFERENCES tickets(id) ON DELETE CASCADE,
  body TEXT NOT NULL
);
CREATE TABLE
CREATE TABLE

Mongo

test> db.tickets.insertOne({
|   title: "Login schlägt fehl",
|   status: "open",
|   comments: [ { body: "Tritt nur mit SSO auf", author: "anna" } ]
| })
{
  acknowledged: true,
  insertedId: ObjectId('6abf54410639470122c3e003')
}

Vergleichsmatrix

Kriterium Relational (PostgreSQL) Dokument (MongoDB)
Datenmodell Tabellen mit Zeilen und Spalten, normalisiert, feste Datentypen JSON-ähnliche Dokumente (BSON) in Collections, verschachtelte Objekte und Arrays
Schema-Änderungen Festes Schema, Änderungen per ALTER TABLE bzw. Migrationen Schemaflexibel, Dokumente einer Collection können unterschiedlich aufgebaut sein; optionale Validierung per JSON Schema
Konsistenz & Transaktionen Volle ACID-Transaktionen über beliebig viele Tabellen, starke Konsistenz Atomar auf Dokumentebene; Multi-Dokument-Transaktionen möglich (seit 4.0), aber teurer
Beziehungen Fremdschlüssel mit referenzieller Integrität, Verknüpfung per JOIN Einbetten (Embedding) oder Referenzieren; $lookup statt JOIN, keine Fremdschlüssel-Prüfung
Skalierung Primär vertikal; horizontal über Read-Replicas, Partitionierung oder Erweiterungen (z. B. Citus) Horizontal eingebaut über Sharding und Replica Sets
Abfragesprache SQL (standardisiert, deklarativ, sehr mächtig) MongoDB Query API (JSON-basiert) und Aggregation Pipeline
Betrieb & Tooling Sehr ausgereift: psql, pgAdmin, pg_dump, breite ORM-Unterstützung mongosh, MongoDB Compass, mongodump, Atlas als Managed Service

Sources: