On this new edition of Sparksee’s how-to series, we would like to highlight the recovery functionality that will keep your database save at all times and it’s specially recommended for first-time users.
Sparksee includes an automatic recovery manager which keeps the database safe for any eventuality. In case of application or system failures, the recovery manager is able to bring the database to a consistent state in the next restart.
By default the recovery manager is disabled but we recommend, specially for new Sparksee users, to enable it before starting to construct your first graph database. The recovery can be set at SparkseeConfig time, which should be your first line of code when creating your database(*):
SparkseeConfig cfg = new SparkseeConfig(); Sparksee sparksee = new Sparksee(cfg);
The recovery has the following variables to set:
- sparksee.io.recovery: Set it to true to enable the recovery.
- sparksee.io.recovery.logfile: Set the name & path of the recovery log file, otherwise it will be stored in the same path as your database. Remember that the extension for this file is .log
- sparksee.io.recovery.checkpointTime: Set the time – in microseconds – when the recovery will copy the committed transactions at the recovery log. By default it’s 60 seconds (60000000).
- sparksee.io.recovery.cachesize: Set the size of your recovery cache. We don’t recommend changing the default option.
Here is an example of a typical configuration for the recovery functionality:
SparkseeConfig cfg = new SparkseeConfig(); cfg.setRecoveryEnabled(true); // Enabling the recovery cfg.setLogFile("recoverylogfile.log"); // it will be stored in the execution directory, same as your database cfg.setRecoveryCheckpointTime(90000000); //we are setting it to 1.5 minutes
And why isn’t the recovery enabled on the first place? The recovery introduces a small penalty in the performance that strongly depends on the checkpoint time, therefore we allow the user with the knowledge about the characteristics of its application and its typical update patterns, to discern which compromise can be made in order to achieve the highest possible performance while keeping the database the most secure. If the user is actively aware of this functionality he will be able to take the maximum of it although the default parameters are used.
Don’t forget to tell us if you are using the recovery and how; your feedback is key to make Sparksee grow!