Show HN: SirixDB 1.0 Beta – Git-Like Versioning, Diffs, Time-Travel Queries

Hacker News
Published
0
0
Show HN: SirixDB 1.0 Beta – Git-Like Versioning, Diffs, Time-Travel Queries
Read the full story at Hacker NewsOriginal

Hi HN! I've posted SirixDB here before, back in 2019 (https://news.ycombinator.com/item?id=19834681) and again in 2023 (https://news.ycombinator.com/item?id=38252963).

The core idea behind SirixDB is, that history is a first-class citizen. Every commit stores a lightweight, queryable revision. You can query any point in time, even individual nodes (for instance JSON values), diff arbitrary revisions, and efficiently track how data evolved without replaying events.

Unlike traditional event stores, historical states do not need to be reconstructed by replaying events nor do we have to think about projections. Revisions are directly queryable.

A simple example:

Jan 1: Record "Price = $100, valid from Jan 1". Stored on Jan 1 (transaction time).

Jan 20: Discover price was actually $95 on Jan 1. Commit correction.

After correction, you can ask across both axes:

- "What did we THINK the price was on Jan 16?" -> $100 (Transaction time)

- "What WAS the price on Jan 1?" -> $95 (Valid time)

I've worked on this in my spare time since 2013, following its academic precursor (Idefix/Treetank) at the University of Konstanz. The architecture relies on an append-only physical log and a persistent copy-on-write page trie.

A high level view of the architecture:

Physical Log (append-only, sequential writes)

  ┌────────────────────────────────────────────────────────────────────────┐
  │ [R1:Root] [R1:P1] [R1:P2] [R2:Root] [R2:P1'] [R3:Root] [R3:P2'] ...    │
  └────────────────────────────────────────────────────────────────────────┘
       t=0      t=1     t=2      t=3      t=4       t=5       t=6    → time
Each revision is indexed, and unchanged pages are shared:

  [Rev 1]          [Rev 2]          [Rev 3]
     │                │                │
     ▼                ▼                ▼
  [Root₁]          [Root₂]          [Root₃]
   │   │            │   │            │   │
   │   └─────────┐  │   └────────┐   │   └─────────┐
   ▼             ▼  ▼            ▼   ▼             ▼
  ┌──────┐       ┌──────┐       ┌──────┐       ┌──────┐
  │  P1  │       │  P2  │       │ P1'  │       │ P2'  │
  └──────┘       └──────┘       └──────┘       └──────┘
   Rev 1         Rev 1+2        Rev 2+3         Rev 3
                 (shared)       (shared)
Beneath the root pages sit node and secondary indexes, using a novel sliding-snapshot algorithm to balance read/write performance. Everything is queryable using JSONiq via the Brackit compiler.

Back in 2019, and even in 2023, SirixDB was very slow due to GC pressure. Unlike most other document stores, SirixDB stores fine-grained nodes, and I came to realize that an on-heap (JVM) representation made up of lots of small objects simply didn't make sense. I measured it with async-profiler — with some help from Andrei Pangin himself — and the result was that the poor throughput was due to the sheer amount of allocations which scaled almost linearly with the number of open transactions.

Working a full-time software engineering job, I lacked the energy for a massive spare-time rewrite. About a year ago, I started experimenting with AI. It turned out to be ideal for automating the tedious, repetitive parts of migrating the storage layer to Java's Foreign Function & Memory API, storing pages completely off-heap.

Looking further ahead, the append-only, immutable-page design maps naturally onto object storage like S3 and distributed logs like Kafka for a cloud version, and initial prototypes already exist. Maybe that becomes a commercial service one day, but for now, I'm just thrilled to see these core design principles finally proven out.There's an interactive demo, documentation, and the code is on GitHub. I'd love feedback and am happy to answer questions!

kind regards

Johannes

[1] https://sirix.io | https://github.com/sirixdb/sirix

[2] https://sirix.io/docs/architecture.html

[3] https://demo.sirix.io

[4] https://sirix.io/docs/

[5] http://brackit.io


Comments URL: https://news.ycombinator.com/item?id=48922631

Points: 7

# Comments: 0

Reader Reactions
Reading the article

💡 AI analysis provides alternative perspectives on current events

Support Alto & Gab

Alto is funded entirely by readers like you. Your donation helps us continue delivering curated news from a right-wing Christian Nationalist perspective, powered by Gab AI.

Gab Shop

Support free speech with official merchandise

View All Products

Install Alto on Your Phone

Add Alto to your home screen for quick access to breaking news — no app store required.

iPhone & iPad

Using Safari Browser

1

Open alto.gab.com in Safari

alto.gab.com
2

Tap the Share button

at the bottom of Safari
3

Tap "More"

More
4

Scroll and tap "Add to Home Screen"

Add to Home Screen

Tap "Add" to confirm

Alto will appear on your home screen like any other app!

Android

Using Chrome Browser

1

Open alto.gab.com in Chrome

alto.gab.com
2

Tap the menu button

three dots in top right
3

Tap "Add to Home screen"

Add to Home screen

Tap "Add" to confirm

Alto will appear on your home screen like any other app!
gab

Speak Freely

Join millions on the original and only true free speech social network.

What Makes Gab Different

We're not just another social network. We're a platform built on principles that matter.

Freedom of Speech & Reach

All First Amendment protected speech is welcome. No algorithmic throttling or shadow banning.

Family-Friendly Platform

We maintain a clean environment. Explicit adult content is strictly prohibited.

Western Nations Only

Third-world IPs are blocked. No scammers, no spam farms. Built for Western civilization.

Funded By Users

Our users are our investors and customers. You're not the product being sold.

Battle Tested

A decade of standing strong. Banned from app stores, banks—and still here.

American Owned & Operated

We reject foreign censorship demands. Built by Americans, for free people.