SirixDB is an embeddable, bitemporal, append-only database system and event store that stores immutable snapshots with full history.
SirixDB is an embeddable, bitemporal, append-only database system and event store that maintains the full revision history of JSON and XML data. It solves the problem of losing historical data during updates by storing immutable snapshots using structural sharing, allowing queries on any past state as efficiently as the current state. Unlike traditional databases that require audit tables or event replay, SirixDB treats every revision as a first-class citizen.
Developers and organizations needing robust audit trails, temporal data analysis, or document versioning capabilities, particularly in regulated industries like finance and healthcare. It's also suitable for applications requiring undo/restore functionality or debugging production state history.
SirixDB offers unique bitemporal capabilities and efficient historical querying without the performance overhead of replaying events. Its append-only, structurally shared storage provides O(changes) storage cost and direct page access to any revision, distinguishing it from both traditional SQL databases with audit logs and other temporal databases.
SirixDB is an an embeddable, bitemporal, append-only database system and event store, storing immutable lightweight snapshots. It keeps the full history of each resource. Every commit stores a space-efficient snapshot through structural sharing. It is log-structured and never overwrites data. SirixDB uses a novel page-level versioning approach.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Direct page access to any revision via structural sharing eliminates event replay, with O(changes) storage cost and bounded read performance using configurable snapshot windows.
Built-in tracking of both transaction time and user-defined valid time enables accurate historical corrections and queries, as shown in the valid-time query functions and automatic CAS indexing.
Multiple page-level versioning options (FULL, INCREMENTAL, DIFFERENTIAL, SLIDING SNAPSHOT) allow tuning storage efficiency versus read performance per resource.
Can be embedded as a single JAR in Java applications with no external dependencies, or deployed as a standalone REST server via Docker, offering flexibility in integration.
Only one write transaction is allowed per resource at a time, limiting scalability for high-throughput or concurrent write scenarios, as acknowledged in the architecture's trade-offs.
Relies on JSONiq/XQuery via Brackit for queries, which has a steeper learning curve and fewer resources compared to SQL, potentially hindering adoption in SQL-centric teams.
Building native binaries requires GraalVM and specific JVM flags (--enable-preview, multiple --add-exports/--add-opens), adding setup complexity beyond standard Java deployments.
Non-Blocking SirixDB HTTP(S)-Server is an open-source alternative to the following products: