Configuration

The EmbeddedStorageManager is mostly created with factory methods of EmbeddedStorage, where the most common settings, like database directory or the root instance, can be configured.

EmbeddedStorageManager storageManager = EmbeddedStorage.start(
myRoot, // root object of entity graph
new File("data-dir") // storage data directory
);

Foundations

To achieve a more detailed customization, you can utilize the EmbeddedStorageFoundation factory type. It holds and creates on demand all the parts that form an EmbeddedStorageManager.

EmbeddedStorageManager storageManager = EmbeddedStorageFoundation.New()
.setConfiguration(
StorageConfiguration.Builder()
.setChannelCountProvider(StorageChannelCountProvider.New(4))
.setBackupSetup(StorageBackupSetup.New(new File("backupdir")))
.createConfiguration()
)
.createEmbeddedStorageManager();

External Configuration

The artifact storage.embedded.configuration provides a convenience layer for configuration purposes, as well as facilities to read external configuration. Look here how to get it.

The Configuration type consolidates the most widely used parameters from the storage foundations in one place. It's output is an EmbeddedStorageFoundation from which a EmbeddedStorageManager can be created.

EmbeddedStorageManager storageManager = Configuration.Default()
.setBaseDirectoryInUserHome("data-dir")
.setBackupDirectory("backup-dir")
.setChannelCount(4)
.createEmbeddedStorageFoundation()
.createEmbeddedStorageManager();

To read an external configuration use ConfigurationLoader and ConfigurationParser or the Load*() methods of Configuration. Currently XML and INI files are supported.

java (xml)
xml
java (ini)
ini
Configuration configuration = Configuration.LoadXml(
HelloWorld.class.getResource("/META-INF/microstream/storage.xml")
);

The full example can be found on GitHub.

If you use a different format, e.g. Json, just implement the ConfigurationParser in the likes of XmlConfigurationParser or IniConfigurationParser.