1,847 karma · joined December 27, 2018
I'm working on an evolutionary, accumulate-only database system called SirixDB written in Java (and a module in Kotlin) in my spare time and in my day to day job I'm also working as a software engineer (embedded; besides I'm dancing a lot -- swing dances, mainly Lindy Hop and travel to festivals in Europe often times in my holidays) :-)
Furthermore, I'm working on Brackit (http://brackit.io), a query engine for JSON and XML using a JSONiq like query language. It can be used as ad-hoc in-memory query processor as the query processor of a data store. We envision, that it encapsulates common proven optimizations whereas the individual data stores can add further stages to rewrite the queries for index matching and physical optimizations.
SirixDB (https://sirix.io or https://github.com/sirixdb/sirix) 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 several 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 Git and borrows some ideas and puts these to test on the sub-file level.
In stark contrast to other approaches SirixDB combines copy-on-write semantics with node-level versioning and does not require a write-ahead-log for consistency.
It all started around 2006 as a university / Ph.D. project of Marc Kramis and I worked on the project since 2007 and already did my Bachelor's Thesis, Master's Thesis as well as several HiWi-Jobs on topics regarding 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.
e-mail address: lichtenberger.johannes@gmail.com
And maybe adding memory mapped files in the future.
Or would anyone be interested to port the processing.org stuff to the web? Sadly I'm a backend developer and feel a bit overwhelmed by all the front-end frameworks JavaScript stuff), but I think the visualizations for comparing revisions are really helpful.
More information: https://github.com/JohannesLichtenberger/master-thesis/raw/m...
Thanks and have a great day :)
Oh and maybe another interesting article: https://hackernoon.com/sirix-io-why-copy-on-write-semantics-...
https://stackoverflow.com/questions/51533143/temporal-vs-tim...
:-)
https://hackernoon.com/asynchronous-temporal-rest-with-vert-...
https://sirix.io/documentation.html
The main distinctive features are our main document store index, features inherited by ZFS (checksums in parent pointers, the main index, a trie, compression and hopefully soon encryption of page-fragments, always consistent on-disk, log-structured without the need of a WAL...), versioned user-defined indexes, highly concurrent data structures (every transaction has access to one snapshot and we only allow one read/write transaction, parallelization has to be done by the client code) and record-level versioning (also a novel sliding window algorithm -- whereas a slightly other implementation is patented by the founder Marc Kramis).
I might implement pointer swizzling for the upcoming 1.0.0 release, should speedup Sirix considerably :-)
https://sirix.io/features.html
I think XQuery is great for querying JSON data. That said in the future I'd also implement something based on Spark to distribute queries...
And Sebastian worked under supervision from Dr. Theo Härder :-)
Have a great evening Johannes
posted already yesterday, but maybe it's of some value and not so many people have seen it. Disclaimer: I'm the author :)
Kind regards and best weekend Johannes
I want to release version 1.0.0 soon, but would love some input, as I added a complete native JSON storage about three weeks ago (several layers) :-)
I've just published an article called Asynchronous, Temporal REST with Vert.x, Keykloak and Kotlin Coroutines: https://hackernoon.com/asynchronous-temporal-rest-with-vert-...
And another one about some use cases and internals: https://hackernoon.com/sirix-io-why-copy-on-write-semantics-...
I've also added a bunch of documentation on the website :-)
Have a great weekend :)
Kind regards Johannes
https://scibib.dbvis.de/uploadedFiles/MotionRugsPreprint.pdf
"For the Z-Order Curve we found that it is prone toproduce “Phantom-Splits”, visual artifacts creating the impression of a physical split of the entities when there is none. The Hilbert Curve insteaddisplays the spatial dynamic better than the Point-QuadTree and shows fewer artifacts than the Z-Order."
Thanks :)