Tags

Tags give the ability to mark specific points in history as being important
  • v1.5.0

    Release: ORM++ v1.5.0
    v1.5.0 — Read-Model beim Append, Nachprojektion, Schluesselgeber
    
    Anlass war ein Fehlerbild in der DNS-Editor-Beta: Speichern ueber einen
    fremden Regionsknoten ging verloren — mal mit Fehler, mal stillschweigend.
    Vier Aggregate standen im Event-Log, aber nie im Read-Model.
    
    Append schreibt die Read-Model-Zeile jetzt in DERSELBEN Transaktion. Der
    Zustand liegt nach Apply ohnehin im Speicher, es kostet einen Upsert — und
    WaitFor auf die eigene Position kehrt sofort zurueck, statt bis zu fuenf
    Sekunden auf einen Projektions-Worker zu warten, der die Lease womoeglich
    auf einem anderen Knoten haelt. Der Upsert ist nur vorwaerts
    (aggregate_seq), damit ein Worker, der zu seiner Lesezeit faltet, keinen
    neueren Stand ueberschreibt. Dazu holt der Worker beim ersten Durchlauf je
    Model nach, was im Hot-Log steht und im Read-Model fehlt oder
    zurueckliegt.
    
    Zweiter Befund derselben Runde: YugabyteDB bis 2024.2 kennt keine
    Advisory-Sperren und bricht mit pg_advisory_xact_lock die laufende
    Transaktion ab. Seit v1.4.1 waere dort JEDER Append gescheitert. Der
    Dialekt prueft das einmal beim Verbinden und bleibt ohne Sperre beim
    Wettlauf mit Erkennung — jetzt auch fuer SQLSTATE 40001, mit dem YB unter
    Snapshot-Isolation denselben Wettlauf meldet.
    
    Neu in der API: DB.Keys() gibt den bei Open gesetzten Schluesselgeber
    heraus. Artefakte ausserhalb der Datenbank brauchen denselben Schluessel —
    eine Sicherung, die die Felder beim Schreiben entschluesselt, muss sie
    wieder verschluesseln koennen, und zwar ohne einen zweiten Schluesselweg.
    
    Geprueft auf SQLite, PostgreSQL und YugabyteDB 2025.2 sowie seriell gegen
    YugabyteDB 2024.2.9.1 mit drei Regions-Placements.
  • v1.4.1

    Release: ORM++ v1.4.1
    v1.4.1 — Geo-Sequenz kollisionsfrei vergeben
    
    Behebt einen Bruch der Verhaltensgleichheit: Parallele Appends auf
    PostgreSQL/YugabyteDB kollidierten auf dem Unique-Index (geo, seq), und
    der Fehler schlug bis zum Aufrufer durch. Auf SQLite verdeckte der
    Single-Writer den Fall vollständig — App-Code lief dort und scheiterte
    dort, wo er produktiv läuft.
  • v1.4.0

    Release: ORM++ v1.4.0
    v1.4.0: encrypted,lookup (Blind-Index) + orm.EncryptFields
  • v1.3.1

    Release: ORM++ v1.3.1
    v1.3.1: leerer Ciphertext-Blob dekodiert wie NULL
  • v1.3.0

    Release: ORM++ v1.3.0
    tenants.Import — aus dem Export wird ein Backup
  • v1.2.0

    Release: ORM++ v1.2.0
    v1.2.0: physische Geo-Residenz — Placement in der DDL, Partitions-Abgleich je Migrate, MoveTenant/SetGeo fuer geoScoped und ES-Aggregate
  • v1.1.1

    Release: ORM++ v1.1.1
    v1.1.1 — ReplaceModel für TenantFree-Modelle
  • v1.1.0

    v1.1.0: Perf-Runden 1+2, Doku-Site, Fix für JSON-Spalten aus ALTER ADD COLUMN
  • v1.0.0

    Release: ORM++ v1.0.0
    ORM++ v1.0.0 — model-first Persistenz für Go: CRUD + Event Sourcing (CloudEvents, Snapshots, Archivierung), Expand/Contract-Migrationen mit Dual-Write, Multi-Tenancy (DSGVO-Export/-Purge), Feld-Verschlüsselung, Geo-Partitionierung und Observability — verhaltensgleich auf SQLite, PostgreSQL und YugabyteDB. Lizenz: Apache 2.0 (© Techeve).