EP-001B-PERSISTENCE-MODEL
EP-001B – MariaDB-Persistenzmodell#
Zweck#
Dieses Dokument materialisiert das kanonische Domain Model aus MVP-001-domain-model.md als relationales Persistence Model für MariaDB.
Das Persistence Model ist nicht das Domain Model. Tabellen, Fremdschlüssel und Indizes dienen der dauerhaften Speicherung und dürfen die fachlichen Begriffe nicht neu definieren.
Verbindliche Grundsätze#
- MariaDB ist der führende produktive Arbeitszustand.
- SQLite darf als zusätzliche lokale Persistenz für klar abgegrenzte technische
Zustände verwendet werden. Sie ist kein Ersatz für den führenden MariaDB-Arbeitszustand und keine zweite fachliche Wahrheit.
- Für eine SQLite-Datei ist Write-Ahead Logging (WAL) zulässig, damit ein
abgeschlossener lokaler Schreibvorgang entweder vollständig nachvollziehbar ist oder beim letzten vollständigen Zustand bleibt.
- SQLite/WAL ersetzt weder Backup noch Revision, Audit, Outbox oder eine
kontrollierte Migration in MariaDB.
- Fachliche IDs sind stabile UUIDs und werden nicht aus Dateipfaden, Namen oder Auto-Increment-Werten abgeleitet.
- Revisionstabellen sind append-only.
- UI-Sprache und Artefaktsprache bleiben getrennt.
- Unterstützte MVP-Sprachen sind
de,enunduk. - Audit-Ereignisse und Outbox-Ereignisse werden in derselben Transaktion wie die fachliche Änderung geschrieben.
- Markdown, HTML und ZIP sind Materialisierungen aus dem gespeicherten Zustand.
- Physische Löschung ist nicht Bestandteil von EP-001B.
Schemastruktur#
Für das GlossarbegriffEin MVP ist eine kleinste überprüfbare Materialisierung mit bewusst begrenztem Umfang.Glossareintrag vollständig lesen wird ein gemeinsames Datenbankschema verwendet. Die Tabellen bleiben nach Building-Block-Verantwortung geordnet.
Identity & Access#
usersrolespermissionsrole_permissionsuser_roles
Artifact Management#
artifactsartifact_revisionsartifact_localizationsartifact_localization_revisions
Relationship Management#
relationship_typesrelationshipsrelationship_revisions
Dimensions#
dimension_definitionsdimension_valuesdimension_assignments
Terminology and Translation#
terminology_contextstranslation_jobs
Review, Audit and Roundtrip#
review_decisionsaudit_eventsroundtrip_jobsroundtrip_job_itemsroundtrip_packagesvalidation_resultsoutbox_events
Identitätsstrategie#
Fachliche IDs werden als CHAR(36) gespeichert und enthalten UUIDs in kanonischer Schreibweise.
Die erste Implementierung darf UUIDv7 oder UUIDv4 verwenden. Die Wahl wird im Application Layer zentral gekapselt. Datenbankfunktionen erzeugen keine fachlichen IDs selbst.
Jede fachliche Tabelle besitzt zusätzlich:
created_atcreated_by- optional
updated_at - optional
updated_by - einen fachlichen
status
Zeitstempel werden in UTC gespeichert.
Revisionierungsstrategie#
artifacts, artifact_localizations und relationships halten die stabile Identität und Referenzen auf die aktuelle Revision.
Die eigentlichen Inhalte liegen ausschließlich in Revisionstabellen:
artifacts.current_revision_id
→ artifact_revisions.id
artifact_localizations.current_revision_id
→ artifact_localization_revisions.id
relationships.current_revision_id
→ relationship_revisions.id
Eine Revision wird nie aktualisiert. Korrekturen erzeugen eine neue Revision.
Mehrsprachigkeit#
Die Tabelle artifact_localizations besitzt eine Eindeutigkeitsregel auf:
artifact_id + language_code
language_code ist im MVP auf de, en, uk beschränkt.
Die konkrete Sprachfassung liegt in artifact_localization_revisions. Dort werden außerdem gespeichert:
- Übersetzungsstatus
- Quellsprache
- Quell-Lokalisierungsrevision
- Terminologie-Kontext
- Review- und Freigabestatus
Ein Fallback darf nur in der Anwendung erfolgen und verändert nicht den gespeicherten Sprachcode.
Dimensionen#
Dimensionen werden kontrolliert und nicht als unvalidierte JSON-Key-Value-Sammlung gespeichert.
dimension_assignments kann genau eines der folgenden Zielobjekte referenzieren:
- GlossarbegriffEin Artefakt ist jede eindeutig identifizierbare fachliche, technische, organisatorische oder reale Einheit, die in der Engineering-Landschaft modelliert wird. Alles Modellierbare wird als Artefakt geführt. Dazu gehören unter anderem Systeme, Beziehungen, Features, Dokumente, ADRs, Tests, UI-Buttons, Menüs, Farben, Icons, Konfigurationen, Diagramme, Runtime-Ressourcen, fachliche Objekte und reale Objekte wie ein Blumentopf, sofern sie modelliert werden. Knowledge ist keine Sonderklasse. UI- und Applikationsartefakte werden fachlich nach demselben Grundmodell behandelt.Glossareintrag vollständig lesen
- ArtifactRevision
- ArtifactLocalization
- ArtifactLocalizationRevision
- GlossarbegriffEine Beziehung beschreibt eine nachvollziehbare Verbindung zwischen Bedeutungen, Artefakten und ihrem Kontext.Glossareintrag vollständig lesen
- RelationshipRevision
Ein Check Constraint stellt sicher, dass genau ein Ziel gesetzt ist.
Audit#
audit_events ist append-only und enthält mindestens:
- Akteur
- Aktion
- Zieltyp und Ziel-ID
- vorherige und neue Revision
- Request-ID
- Roundtrip-ID
- Ergebnis
- Änderungsgrund
- Zeitpunkt
Audit-Nutzdaten werden als begrenztes JSON gespeichert. Secrets oder vollständige sensible Inhalte dürfen nicht aufgenommen werden.
Outbox#
outbox_events stellt sicher, dass Hintergrundverarbeitung, Reporting, Translation und Roundtrip keine fachlichen Änderungen verlieren.
Ein Outbox-Ereignis wird in derselben Transaktion wie die fachliche Änderung geschrieben. Ein Worker verarbeitet und markiert es anschließend.
Minimale Zustände:
pending → processing → processed
└→ failed
Transaktionsgrenzen#
Artefaktänderung#
Eine Artefaktänderung schreibt atomar:
- neue ArtifactRevision oder LocalizationRevision,
- Aktualisierung der aktuellen Revisionsreferenz,
- AuditEvent,
- OutboxEvent.
Übersetzungsauftrag#
Das manuelle Anstoßen einer Übersetzung schreibt atomar:
- TranslationJob mit Status
requested, - AuditEvent,
- OutboxEvent
translation.requested.
Roundtrip-Vorbereitung#
Ein Roundtrip-Export schreibt atomar:
- RoundtripJob,
- RoundtripJobItems mit Ausgangsrevisionen,
- AuditEvent,
- OutboxEvent
roundtrip.prepare-requested.
Ownership und Tabellenzugriff#
| Tabellenbereich | Schreibender GlossarbegriffEin Building Block ist ein abgegrenzter Baustein mit stabiler Verantwortung zur Realisierung von Capabilities.Glossareintrag vollständig lesen | Andere Blocks |
|---|---|---|
| users, roles, permissions | BB-EP-002 Identity & Access | nur über Ports/Services |
| artifacts, artifact_revisions | BB-EP-003 Artifact Management | keine direkten Writes |
| relationships, relationship_revisions | BB-EP-004 Relationship Management | keine direkten Writes |
| artifact_localizations, localization_revisions | BB-EP-005 Localization | keine direkten Writes |
| terminology_contexts | BB-EP-006 Terminology | lesbar über Port |
| translation_jobs | BB-EP-007 Translation | keine direkten Writes |
| audit_events, review_decisions | BB-EP-008 Audit & Traceability | schreiben über Audit-Port |
| roundtrip_* | BB-EP-009 Roundtrip Orchestration | keine direkten Writes |
| outbox_events | BB-EP-010 Persistence Infrastructure | Erzeugung über Transaktionsport |
Gemeinsame Datenbank bedeutet nicht gemeinsame Tabellenverantwortung.
Migrationsregeln#
- Migrationen sind vorwärtsgerichtet und versioniert.
- Jede Migration besitzt eine eindeutige Nummer und Beschreibung.
- Migrationen werden in Test vor Produktion ausgeführt.
- Destruktive Änderungen benötigen explizite Datenmigration und Rollback-/Recovery-Plan.
- Produktionsdaten werden nicht durch Seed-Daten überschrieben.
- Test- und Produktionsdatenbanken sind strikt getrennt.
Zusätzliche lokale SQLite-Persistenz#
SQLite ist eine dateibasierte relationale Datenbank, die ohne separaten Datenbankserver durch einen Prozess verwendet werden kann. In dieser Solution ist sie ausschließlich für einen bewusst abgegrenzten lokalen technischen Zustand zulässig. Ihre konkrete Zuordnung erfolgt durch den verantwortlichen Building Block; sie darf keine konkurrierende Quelle für Artefakte, Revisionen, Relationships oder fachliche Entscheidungen bilden.
WAL schreibt Änderungen zunächst in ein vorausgeschriebenes Log und übernimmt sie kontrolliert in die Hauptdatenbank. Der Modus unterstützt einen wiederaufnehmbaren lokalen Zustand, ersetzt aber keine Recovery- oder Backup-Strategie. Konkrete Dateipfade, Größen, Hosts, Secrets und Runtime-Konfigurationen gehören nicht in diesen Vertrag.
Traceability#
- Historische Begriffe:
ART-DEF-0026SQLite undART-DEF-0027
Write-Ahead Logging (WAL) aus SolutionArchitecture.
- Erläuterung:
enterprise-architecture:25-knowledge/40-learning-questions/[[NUG-0001-WARUM-SQLITE-MIT-WAL|NUG-0001-WARUM-SQLITE-MIT-WAL]].md. - Historische Entscheidung
ADR-0040bleibt Provenienz; die heutige
solutionweite Einordnung steht in diesem Abschnitt.
Traceability#
Dieses Persistence Model materialisiert insbesondere:
CAP-002Semantischen Artefaktbestand verwaltenCAP-004Artefakte und Abhängigkeiten verbindenCAP-014Identity, User und Access ContextCAP-015Persistenz und HistorisierungCAP-016Security, Integrität und VertraulichkeitCAP-023Workflow und Collaboration RuntimeCAP-024Validation, Compliance und GlossarbegriffTechnical documentation artifact.Glossareintrag vollständig lesenCAP-026Background Processing und Scheduling
und die Solution Building Blocks BB-EP-002 bis BB-EP-010.
Akzeptanzkriterien EP-001B#
EP-001B ist erfüllt, wenn:
- das Schema alle Objekte des Domain Models speichern kann,
de,en,ukals Sprachvarianten abbildbar sind,- Revisionen nicht überschrieben werden,
- Beziehungen eigenständig revisioniert werden,
- Dimensionsdefinitionen und -zuordnungen validierbar sind,
- Translation Jobs konkrete Quellrevisionen referenzieren,
- Audit und Outbox transaktional angebunden sind,
- Test- und Produktionsschema identisch migrierbar sind,
- keine Tabelle die Modulgrenzen der Building Blocks aufhebt.
UAM-Persistenzgrenze#
MariaDB materialisiert den führenden produktiven Arbeitszustand, ist aber nicht die Quelle universeller Artifact- oder Identity-Semantik. Das physische Schema muss stabile fachliche Identifier, unveränderliche Revisionen, Relationship-Identität und GlossarbegriffProvenienz hält Quelle, Entstehungs- oder Ableitungskontext sowie gegebenenfalls Revision und Prüfung fest. Sie erklärt, warum etwas als Beleg erhalten bleibt, ohne daraus automatisch eine aktuell führende Aussage zu machen.Glossareintrag vollständig lesen gemäß ArtifactMVP-001 – Einheitliche Artifact-Model-RealisierungSolutionweiter Realisierungsvertrag für Artefaktidentität, Revision, Lokalisierung, Beziehungen und kontrollierte Materialisierungen.Vollständig lesen erhalten.