Created an asynchronous, non-blocking RESTful-API for a version storage system, (Open Source)

Hey, I’ve spend a lot of time, building a versioned storage system, capable of effetively and efficiently store revisions, that is snapshots of data with several versioning algorithms, which work on the record-page level. The system is log-structured and never overwrites data, that is it never does in-place modifications. Instead, every change to a record-page done via copy-on-write semantics and the whole system is based on ideas from ZFS. It batches writes to patches and syncs them in a poster-order traversal during a transaction commit. It’s thus very well suited for flash drives (for instance SSDs). The core is written in Java, however I recently built a simple, temporal nonblocking REST-API with Vert.x and Kotlin/Coroutines and it was a lot of fun :slight_smile:

I’d love to get comments, any kind of questions, suggestions and help would be greatly appreciated as it’s an Open Source project of mine (and was for others during my studies at the University of Konstanz 6 years ago).

Since then I spent countless ours to bring forth the idea of a versioned storage system, especially well suited for analytical tasks for time-varying data. For sure a lot of stuff has to be worked on and I have so many ideas for the future.

I’d love to discuss what documentation you need, which next steps are necessary (JSON, Cloud…), API additions or changes… how to improve the Kotlin code and make it more idiomatic as it’s my first Kotlin project…

I’ve updated the README quiet a bit, such that the set up of the asynchronous, RESTful HTTP(S) Server is easier :slight_smile: however I could use some help with the Docker stuff. And I’d really love to get feedback how to improve the Kotlin code and make it as idiomatic as possible :slight_smile: Also read the fantastic book from Svetlana and Dmitry, Kotlin in Action and I have to say Kotlin simplifies all the items from Effective Java (also 3rd edition) tremendously, it’s really great.

Just published an article: