今日已更新 223 条资讯 | 累计 21985 条内容
关于我们

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

lichtenberger 2026年07月15日 23:46 1 次阅读 来源:HackerNews

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 st

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 b
本文内容来源于互联网,版权归原作者所有
查看原文