In Woche 4 haben Sie mit TrackZilla das Muster Database per Service kennengelernt: Jeder Microservice besitzt seine eigene Datenbank, und es gibt keine Fremdschlüssel über Service-Grenzen hinweg. Offen geblieben ist die Frage: Welche Datenbank passt zu welchem Service?
In dieser Aufgabe vergleichen Sie beide Systeme praktisch:
Sie modellieren denselben Domänenausschnitt in beiden Systemen, vergleichen das Verhalten und treffen danach einen begründeten Entscheid. Die Datenhaltung gehört zum Stoff der schriftlichen Prüfung 1 in Woche 9; Woche 8 ist für die Vorbereitung reserviert.
psql, MongoDB-Shell mongoshpostgres,
Zugriff mit psql)mongo, Zugriff
mit mongosh)mariadb)# Relationale Datenbank (PostgreSQL)
docker run --name pg-tickets -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=tickets -p 5432:5432 -d postgres:16
docker exec -it pg-tickets psql -U postgres -d tickets
# Dokument-Datenbank (MongoDB)
docker run --name mongo-tickets -p 27017:27017 -d mongo:7
docker exec -it mongo-tickets mongoshDomäne: ein Ticket-Service mit Tickets und Kommentaren.
Relational (PostgreSQL):
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
);Dokumentorientiert (MongoDB):
db.tickets.insertOne({
title: "Login schlägt fehl",
status: "open",
comments: [ { body: "Tritt nur mit SSO auf", author: "anna" } ]
})db.tickets.find({ "comments.author": "anna" }).users-Service
besitzt eine eigene Datenbank. Versuchen Sie, in Ihrer Ticket-Datenbank
einen Fremdschlüssel auf dessen users-Tabelle zu setzen,
und erklären Sie, warum das im verteilten System nicht
funktioniert.| Kriterium | Relational (PostgreSQL) | Dokument (MongoDB) |
|---|---|---|
| Datenmodell | ||
| Schema-Änderungen | ||
| Konsistenz & Transaktionen | ||
| Beziehungen | ||
| Skalierung | ||
| Abfragesprache | ||
| Betrieb & Tooling |
Wählen Sie für den Ticket-Service ein System und begründen Sie Ihre Wahl in 3 bis 5 Sätzen anhand der Matrix. Nennen Sie mindestens zwei Gründe und einen Nachteil Ihrer Wahl.