I'm working on a temporal data store in my spare time (currently together with two other developers).
It was started at the University of Konstanz with a storage engine written from scratch. It basically maps a huge tree of trie indexes to a sequentially written log-file. Thus, it's a huge revision index with several versioned indexes beneath a revision root page. Data of new revisions is only ever appended and never overwritten. The new revisions share unchanged data with their previous revisions. The data pages are not simply copied entirely. Instead, page fragments with changed records and a few more are stored and referenced from the parent pages.
We have a lot of tasks to work on in different languages, so I'm sure there's something for everyone. Of course you don't have to be a database system expert. I'd be very happy if we receive some contributions :-)
SirixDB is a temporal, evolutionary database system, which uses an accumulate only approach. 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 called sliding snapshot.
An Evolutionary, Accumulate-Only Database System
Stores small-sized, immutable snapshots of your data and facilitates querying the full history
"Remember that you're lucky, even if you don't think you are, because there's always something that you can be thankful for." - Esther Grace Earl (tswgo.org)
SirixDB uses a huge persistent (in the functional sense) tree of tries, wherein the committed snapshots share unchanged pages and even common records in changed pages. The system only stores page-fragments instead of full pages during a commit to reduce write-amplification. During read operations, the system reads the page-fragments in parallel to reconstruct an in-memory page.
I'm working on a temporal data store in my spare time (currently together with two other developers).
It was started at the University of Konstanz with a storage engine written from scratch. It basically maps a huge tree of trie indexes to a sequentially written log-file. Thus, it's a huge revision index with several versioned indexes beneath a revision root page. Data of new revisions is only ever appended and never overwritten. The new revisions share unchanged data with their previous revisions. The data pages are not simply copied entirely. Instead, page fragments with changed records and a few more are stored and referenced from the parent pages.
We have a lot of tasks to work on in different languages, so I'm sure there's something for everyone. Of course you don't have to be a database system expert. I'd be very happy if we receive some contributions :-)
sirixdb / sirix
SirixDB is a temporal, evolutionary database system, which uses an accumulate only approach. 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 called sliding snapshot.
An Evolutionary, Accumulate-Only Database System
Stores small-sized, immutable snapshots of your data and facilitates querying the full history
Download ZIP | Join us on Slack | Community Forum
Working on your first Pull Request? You can learn how from this free series How to Contribute to an Open Source Project on GitHub and another tutorial: How YOU can contribute to OSS, a beginners guide
SirixDB uses a huge persistent (in the functional sense) tree of tries, wherein the committed snapshots share unchanged pages and even common records in changed pages. The system only stores page-fragments instead of full pages during a commit to reduce write-amplification. During read operations, the system reads the page-fragments in parallel to reconstruct an in-memory page.
SirixDB currently…
Amazing!
Will try your project and contribute as well.
Thanks for sharing here, hope it will help others as well😊
Would be awesome, happy to help you getting into the project :)