Using Channels

Channel Usage

Channels are the IO threads used by the MicroStream storage engine. A single channel represents the unity of a thread, a storage directory and cached data. Increasing the number of channels means to run more IO threads.

The channel count is an important configuration value that impacts to IO performance.

Channel Configuration

For the channel configuration the following configuration properties are available:

  • Channel count

    The number of channels that MicroStream will use. Must be 2n2^n

  • Channel directory prefix

    The channel directory will be prefix+channelNumber e.g. "ch_0" if prefix is "ch_"

  • Data file prefix default is "channel_"

  • Data file suffix deflaut id ".dat"

Channel file size configuration is done by the the Storage Data File Evaluator.

They can be set By storage.embedded.configuration API:

Java
Xml
ini
Java
embeddedStorageManager storageManager = Configuration.Default()
.setChannelCount(4)
.setChannelDirectoryPrefix("channel_")
.setDataFilePrefix("channel_")
.setDataFileSuffix(".bin")
.createEmbeddedStorageFoundation()
.createEmbeddedStorageManager();
Xml
<properties>
<property name="channelCount" value="4" />
<property name="channelDirectoryPrefix" value="channel_" />
<property name="dataFilePrefix value="channel_" />
<property name="dataFileSuffix" value=".dat" />
</properties>
ini
channelCount = 4
channelDirectoryPrefix = prefix
dataFilePrefix = channel_
dataFileSuffix = .dat

See also: Configuration

Or by setting a StorageFileProvider using theEmbeddedStorageFoundationfactory

EmbeddedStorageManager storage = EmbeddedStorage.Foundation(
Storage.ConfigurationBuilder()
.setChannelCountProvider(Storage.ChannelCountProvider(4))
.setStorageFileProvider(StorageFileProvider.Builder()
.setBaseDirectory("storage")
.setChannelDirectoryPrefix("prefix")
.setStorageFilePrefix("channel-")
.setStorageFileSuffix(".bin")
.createFileProvider()).createConfiguration()
).start();