SirixDB es un sistema de base de datos embebible, bitemporal y append-only que funciona también como event store, actualmente en versión 1.0.0-beta. A diferencia de las bases de datos tradicionales, que sobrescriben los datos in situ y dependen de logs write-ahead para recuperación, SirixDB escribe toda la información de forma secuencial en un log append-only: nada se reescribe jamás. Cada revisión se almacena en un trie persistente donde las páginas y nodos no modificados se comparten entre versiones mediante copy-on-write, lo que reduce el coste de almacenamiento a O(registros modificados por revisión), no a O(tamaño total × revisiones).
Una de sus señas de identidad es la versión a nivel de subpágina: en lugar de copiar una página completa cuando cambia un solo byte (como hace COW a nivel de bloque en ZFS) o acumular cadenas de diffs cada vez mayores (como los sistemas delta), SirixDB escribe fragmentos de página que contienen únicamente los registros alterados. Un algoritmo de sliding-snapshot garantiza que cualquier página es reconstruible a partir de, como máximo, N fragmentos (por defecto 3). El resultado es que leer cualquier revisión pasada cuesta lo mismo que leer el estado actual: 0,18 ms para abrir una sesión con 10.000 revisiones.
El sistema es además bitemporal: registra el transaction time (cuándo se confirmó el cambio, gestionado por el sistema) y el valid time (cuándo era cierto el dato en el mundo real, gestionado por el usuario). Esto permite responder preguntas como «¿qué creíamos que era el precio el 16 de enero?» y «¿cuál era realmente el precio el 1 de enero?», manteniendo un rastro de auditoría íntegro incluso tras corregir errores.
SirixDB se distribuye como un único JAR autosuficiente con dependencias shadeadas, lo que permite embeberlo en proceso o ejecutarlo como servidor REST. Incluye diffs semánticos a nivel de nodo (~0,3 ms entre dos revisiones), un camino de ejecución vectorizado para analítica comparable con DuckDB 1.5.2 a 100 millones de registros y un binario nativo GraalVM que ejecuta consultas analíticas entre 7 y 17 veces más rápido que la JVM.
