Zum Inhalt springen

Architekturprinzipien

Status: Entwurf · Spec-Kandidat: nein (Leitlinie)

Diese Prinzipien sind verbindlich. Architekturentscheidungen, die einem dieser Prinzipien widersprechen, müssen explizit begründet und dokumentiert werden.

#PrinzipKonsequenz
AP-01SQL bleibt das führende Speichermodell.Kein Wechsel auf Document Store / Graph Store als Primärsystem. JSONB ergänzt SQL, ersetzt es nicht.
AP-02Flexibilität wird über Metadaten erreicht.Keine Schema-Migration für neue fachliche Typen oder Attribute (NFR-004).
AP-03Konsistenz wird relational abgesichert.Foreign Keys, Unique Constraints, Check Constraints, Trigger – nicht „nur im Service”.
AP-04Hard Delete ist Ausnahmefall.Default ist Soft Delete + DDM_RELATION_TYPE.delete_policy = restrict.
AP-05Validierung erfolgt mehrstufig.UI/API + Service-Layer + Datenbank, siehe Validierung.
AP-06Such- und Reportingoptimierung erfolgt gezielt über Indizes und Views.Keine Vollscan-basierten Suchen in Produktion; statt globaler GIN-Magie gezielte Expression-Indizes je nachgefragtem Attribut.
AP-07Enterprise-Erweiterungen werden vorbereitet, aber nicht erzwungen.Externer Suchcluster, Event Sourcing sind nicht Pflicht in V1, dürfen aber nicht durch Designentscheidungen verbaut werden.
AP-08Mandantenfähigkeit ist Pflicht-Säule.Alle fachlichen Tabellen tragen tenant_id. In V1 nur Default-Tenant; weitere Tenants können ohne Schemaänderung aktiviert werden.
AP-08aStrikte Trennung System (mdm_sys) vs. Domain (mdm).System-Tabellen ohne Tenant-Scope (AA_TENANT, AA_APP_USER, AA_SERVICE_ACCOUNT); Domain-Tabellen tenant_id NOT NULL. Siehe Schema und Konventionen.
AP-09Externe Events laufen über die Outbox.Webhooks und Queues konsumieren mdm.AA_OUTBOX_EVENT, der vom Service in derselben Transaktion wie Daten und Audit geschrieben wird.
AP-10Beziehungen tragen fachliche Eigenschaften.DDM_ENTITY_RELATION.attributes ist über DDM_RELATION_TYPE_ATTRIBUTE strukturiert validiert — analog zu DDM_ENTITY_TYPE_ATTRIBUTE.
AP-11Service-Code-Path-Queries auf JSONB nur über deklarierte Indizes.Jede Match/Merge-Regel und jede External-ID-Heuristik bringt ihre Index-Anforderung als Migration mit. Pauschale GIN-Catch-alls auf attributes sind kein Performance-Pfad, sondern Sicherheitsnetz für is_external_source_target=true-Typen (OP-17). Filter/Sort über die UI/REST sind auf searchable/sortable-Attribute mit index_status='active' beschränkt.

Verwandte Dokumente