loading...

Announcing the Chronos Project v1.0.0 Open-Source Release

martinhaeusler profile image Martin Häusler ・2 min read

Today I'm pleased to announce that Chronos, my long-term data persistence and versioning project for the JDK, has finally been released in its 1.0.0 version as an open-source project on Github.

What is Chronos?

The Chronos Project started as my PhD project, but eventually turned into a production-ready versioned database during my work at Txture. It offers:

Versioning

Versioning means that every change made to the database will be retained and managed indefinitely. This allows for the ability of time travel through your data and its history, similar to an AS OF Query in SQL. Chronos employs a smart data storage layout to ensure that the data is not needlessly duplicated on your hard drive, but you can still access it as if it were.

Here's a basic example where we fetch yesterday's data with ChronoGraph:

long yesterday = System.currentTimeMills() - TimeUnit.DAYS.toMillis(1);
try(ChronoGraph txGraph = graph.tx().createThreadedTx(yesterday)){
    // txGraph will contain the database state as it was yesterday
    Vertex johnDoe = txGraph.traversal().V().has("name", "John Doe").next();
    // johnDoe will also have the same state as it did yesterday
}

Branching

In the same way as Chronos offers version control, it also allows for branching in your data, just like you've come to expect it from e.g. Git or SVN:

try(ChronoGraph txGraph = graph.tx().createThreadedTx("my-branch")){
    // txGraph now points to branch "my-branch".
    // Everything you do here will only be visible on this branch.
}

... and much more!

There's a whole bunch of features included in Chronos, such as:

  • full ACID transactions
  • secondary indexing
  • full & incremental backups
  • dateback (a rebase-like API)

All in an open-source project. Free for everyone under the aGPL v3.0 license.

Final Words

This project has been very dear to me since its inception, and it will continue to be. I'm proud to release the 1.0.0 version finally as open-source. Visit our Github Repository and give it a star if you think it's interesting :)

Posted on May 31 by:

martinhaeusler profile

Martin Häusler

@martinhaeusler

Primarily a Software Engineer who feels at home on the JVM. OOP enthusiast, testing addict and Software Architect.

Discussion

markdown guide