Architektur und Entwicklung#
Anfrageweg#
Die HTTP-Schicht liest den signierten Umschlag und prüft Größe, Signatur, Zeitstempel, Nonce und Key-Rechte. Anschließend validieren Schema-/Query-Komponenten Namen und Werte gegen das gespeicherte Schema. Der ausgewählte Provider führt die Datenbankoperation aus. Die Antwort wird für die ursprüngliche Nonce signiert.
HTTP → Authentifizierung → Berechtigung → Validierung
→ Live-Ausführung oder Write-behind-Journal → Provider
→ signierte Antwort
Die Komponenten sind in src/Ldb.Api organisiert; Tests liegen in tests/Ldb.Tests. Die Quellen nennen die dokumentierte Revision.
Datenmodell und Provider#
Namespaces besitzen Tabellen und einen gespeicherten deklarativen Schema-Stand. Physische Objekte sind durch {namespace}__{table} getrennt. PostgreSQL, MySQL/MariaDB und MongoDB setzen denselben portablen Vertrag um, haben aber unterschiedliche Transaktions- und Typgrenzen. Diese Unterschiede müssen sichtbar bleiben; siehe Schema und HTTP-API.
Zustand#
Die dauerhaften Nutzdaten und Schema-Metadaten liegen in der Datenbank. Nonce- und Idempotenz-Caches sind instanzlokal im Speicher. Bei aktivem Write-behind kommen Warteschlange, Journal und Dead Letters hinzu. Mehrere Instanzen teilen diese nicht automatisch.
Nebenläufigkeit und Pufferung#
Schema-Sync sperrt den Namespace. Mit aktiver Schreibpufferung werden Namespace-Anfragen serialisiert, damit keine Änderung zwischen dem Leeren und einer Schemaänderung überholt. Hintergrund-Flushes verwenden zusätzlich ihre Flush-Sperre. Ein angehaltenes notwendiges Flush blockiert unmittelbare Writes, Schemaänderungen und konsistente Reads.
MongoDB-Insert-Anfragen werden nicht zu einem gemeinsamen Batch vermischt, weil Teilfehler Wiederholungen bereits angewendeter Daten verursachen könnten. Die Crash-Zustellung bleibt mindestens einmal; Anwendungsdesign muss doppelte Ausführung berücksichtigen.
Änderungen entwickeln#
HTTP-Vertrag, OpenAPI, Client, Bundle-Helper und Dokumentation zusammen prüfen. Für neue Fehlerpfade, Reihenfolge, Journal-Wiederherstellung und Provider-Verhalten aussagekräftige Tests ergänzen. Ohne Docker übersprungene Integrationstests nicht als bestanden melden. Build und Tests erklärt den Ablauf; Sicherheit die Vertrauensgrenzen.