Links

Configuration

This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
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
Paths.get("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.
NioFileSystem fileSystem = NioFileSystem.New();
EmbeddedStorageManager storageManager = EmbeddedStorageFoundation.New()
.setConfiguration(
StorageConfiguration.Builder()
.setStorageFileProvider(
Storage.FileProviderBuilder(fileSystem)
.setDirectory(fileSystem.ensureDirectoryPath("storageDir"))
.createFileProvider()
)
.setChannelCountProvider(StorageChannelCountProvider.New(4))
.setBackupSetup(StorageBackupSetup.New(
fileSystem.ensureDirectoryPath("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.
pom.xml
<repositories>
<repository>
<id>microstream-releases</id>
<url>https://repo.microstream.one/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>one.microstream</groupId>
<artifactId>storage.embedded.configuration</artifactId>
<version>04.01.00-MS-GA</version>
</dependency>
</dependencies>
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")
);
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<property name="baseDirectory" value ="data" />
<property name="channelCount" value ="4" />
</properties>
Configuration configuration = Configuration.LoadIni(
HelloWorld.class.getResource("/META-INF/microstream/storage.ini")
);
baseDirectory = data
channelCount = 4
If you just use Configuration.Load() the default configuration file is used, which is either a file in the classpath root named microstream-storage.properties, or the path configured via the system property microstream.storage.configuration.path.
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.