
Show HN: Sirix.io – versions XML/JSON efficiently and allows time-travel queries - lichtenberger
https://sirix.io
======
lichtenberger
Hi,

I had already posted yesterday, but maybe it's of some value for some of you,
I still hope at least :-)

Sirix.io is all about efficient versioning of your data. That is on the one
hand it reduces the storage cost of storing a new revision during each
transaction-commit while balancing read- and write-performance through a novel
sliding snapshot algorithm and dynamic page compression. On the other hand
Sirix supports easy query capabilities for instance to open a specific
revision by a timestamp or revisions by a given timespan, to navigate to
future or past versions of nodes in the tree-structure and so on. It basically
never overwrites data and is heavily inspired by ZFS and borrows some ideas
and puts these to test on the sub-file level.

It all started around 2006 as a university / Ph.D. project of Marc Kramis and
I already spend my Bachelor's Thesis, Master's Thesis as well as several HiWi-
Jobs on the project and I'm still more eager than ever to put forth the idea
of a versioned, analytics plattform to perform analytical tasks based on
current as well as the history of the data.

I've been working a lot on Sirix.io the last couple of months and spent most
evenings after my day to day software engineering Job. I had already posted
around christmas, but now I've added a native JSON storage layer besides XML,
that is the storage itself, XQuery extensions for JSON for joint XML- and
JSON-querying, a RESTful-API also for JSON, added a website, a forum and first
documentation... :-) and last night I release version 0.9.0.

So, any feedback, comments, suggestions, just everything is more than welcome.
I'll happily (try to? ;)) answer any questions you might have. Happy easter
everyone :-)

kind regards Johannes

[https://sirix.io](https://sirix.io)

[https://github.com/sirixdb/sirix](https://github.com/sirixdb/sirix)

~~~
lichtenberger
Oh and I forgot... it for sure supports Diffing capabilities (even an import
algorithm for XML-documents currently that tries to find the minimum edit
operations to transform a tree into another version of the tree). Once several
revisions are stored in Sirix unique IDs are used for comparison and
optionally stored hashes can be used by the diffing-algorithms to skip the
traversal of subtrees (if the hash-values match). That said, for XML I'm
outputting an XQuery Update Script and for JSON-data I have no serialization
format as of now. So it's up for discussion basically :-)

------
lichtenberger
What might also be interesting are some of the basic features:

[https://sirix.io/features.html](https://sirix.io/features.html)

And a bit about the concepts/architecture (basically we wrote our storage
engine from scratch based on a kind of hash array based tries and concepts
from ZFS and our very own novel sliding snapshot versioning algorithm):

[https://sirix.io/concepts.html](https://sirix.io/concepts.html)

Happy easter to all of you :-)

Best regards Johannes

