Properties

These are the available properties of the Configuration type. The names are used accordingly in the external configuration files. They can be found as constants in ConfigurationPropertyNames.

Property

Short Description

baseDirectory

The base directory of the storage in the file system. Default is "storage" in the working directory.

deletionDirectory

If configured, the storage will not delete files. Instead of deleting a file it will be moved to this directory.

truncationDirectory

If configured, files that will get truncated are copied into this directory.

backupDirectory

The backup directory.

channelCount

The number of threads and number of directories used by the storage engine. Every thread has exclusive access to its directory. Default is 1.

channelDirectoryPrefix

Name prefix of the subdirectories used by the channel threads. Default is "channel_".

dataFilePrefix

Name prefix of the storage files. Default is "channel_".

dataFileSuffix

Name suffix of the storage files. Default is ".dat".

transactionFilePrefix

Name prefix of the storage transaction file. Default is "transactions_".

transactionFileSuffix

Name suffix of the storage transaction file. Default is ".sft".

typeDictionaryFilename

The name of the dictionary file. Default is "PersistenceTypeDictionary.ptd".

rescuedFileSuffix

Name suffix of the storage rescue files. Default is ".bak".

lockFileName

Name of the lock file. Default is "used.lock".

houseKeepingIntervalMs

Interval in milliseconds for the housekeeping. This is work like garbage collection or cache checking. In combination with houseKeepingNanoTimeBudget the maximum processor time for housekeeping work can be set. Default is 1000 (every second).

housekeepingTimeBudgetNs

Number of nanoseconds used for each housekeeping cycle. Default is 10000000 (10 million nanoseconds = 10 milliseconds = 0.01 seconds).

entityCacheThreshold

Abstract threshold value for the lifetime of entities in the cache. Default is 1000000000.

entityCacheTimeoutMs

Timeout in milliseconds for the entity cache evaluator. If an entity wasn't accessed in this timespan it will be removed from the cache. Default is 86400000 (1 day).

dataFileMinimumSize

Minimum file size for a data file to avoid cleaning it up. Default is 1024^2 = 1 MiB.

dataFileMaximumSize

Maximum file size for a data file to avoid cleaning it up. Default is 1024^2*8 = 8 MiB.

dataFileMinimumUseRatio

The ratio (value in ]0.0;1.0]) of non-gap data contained in a storage file to prevent the file from being dissolved.

Default is 0.75 (75%).

dataFileCleanupHeadFile

A flag defining whether the current head file (the only file actively written to) shall be subjected to file cleanups as well.

Detailed Description

channelCount

Number of threads used by the storage engine. It depicts the numbers of subdirectories as well. Each thread manages one directory in which it writes to and reads from exclusively. The unity of thread, directory and the cached data therefor is called a "Channel".

__________________________________________________
[RAM ]{ Code } | ( Filesystem )
,- "Channel 0": [Data]{Thread} <-I|O-> (Storage Subdirectory 0)
/-- "Channel 1": [Data]{Thread} <-I|O-> (Storage Subdirectory 1)
StorageManager |
\-- "Channel 2": [Data]{Thread} <-I|O-> (Storage Subdirectory 2)
'- "Channel 3": [Data]{Thread} <-I|O-> (Storage Subdirectory 3)
_________________________________________________|

houseKeepingIntervalMs

Number of milliseconds for the house keeping interval. House keeping tasks are, among others:

  • Garbage Collection

  • Cache Check

  • File Cleanup Check

In combination with houseKeepingNanoTimeBudget, it can be specified how many CPU time should be used for house keeping. E.g. interval=1000ms and budget=10000000ns means every second there's 0.01 seconds time for house keeping, so max 1% CPU time used for house keeping. This CPU time window is only used if house keeping work is pending. If nothing has to be done, no time is wasted.

housekeepingTimeBudgetNs

Number of nanoseconds used for each housekeeping cycle. However, no matter how low the number is, one item of work will always be completed. But if there is nothing to clean up, no processor time will be wasted. Default is 10000000 (10 million nanoseconds = 10 milliseconds = 0.01 seconds). However, no matter how small the time is, one item is done at least. This is to avoid no-ops, if a too small time window is configured. This time budget is a "best effort" threshold, meaning when at 1ns left, a huge file has to be cleaned or the references of a huge collection have to be marked for GC, then this budget can be exceeded considerably.

dataFileMinimumSize

Minimum file size in bytes of a storage file to avoid merging with other files during housekeeping. Must be greater than 1, maximum is 2GB.

dataFileMaximumSize

Maximum file size in bytes of a storage file to avoid splitting in more files during housekeeping. Must be greater than 1, maximum is 2GB.

Due to internal implementation details files larger than 2GB are not supported!

dataFileMinimumUseRatio

The ratio (value in ]0.0;1.0]) of non-gap data contained in a storage file to prevent the file from being dissolved. "Gap" data is anything that is not the latest version of an entity's data, inluding older versions of an entity and "comment" bytes (a sequence of bytes beginning with its length as a negative value length header). The closer this value is to 1.0 (100%), the less disk space is occupied by storage files, but the more file dissolving (data transfers to new files) is required and vice versa.

Involved Types

This list shows which property configures which type, used by the foundation types, to create the storage manager.

Property

Used by

baseDirectory

StorageLiveFileProvider

deletionDirectory

StorageLiveFileProvider

truncationDirectory

StorageLiveFileProvider

backupDirectory

StorageBackupSetup

channelCount

StorageChannelCountProvider

channelDirectoryPrefix

StorageFileNameProvider

dataFilePrefix

StorageFileNameProvider

dataFileSuffix

StorageFileNameProvider

transactionFilePrefix

StorageFileNameProvider

transactionFileSuffix

StorageFileNameProvider

typeDictionaryFilename

StorageFileNameProvider

rescuedFileSuffix

StorageFileNameProvider

lockFileName

StorageFileNameProvider

housekeepingIntervalMs

StorageHousekeepingController

housekeepingTimeBudgetNs

StorageHousekeepingController

entityCacheThreshold

StorageEntityCacheEvaluator

entityCacheTimeout

StorageEntityCacheEvaluator

dataFileMinimumSize

StorageDataFileEvaluator

dataFileMaximumSize

StorageDataFileEvaluator

dataFileMinimumUseRatio

StorageDataFileEvaluator

dataFileCleanupHeadFile

StorageDataFileEvaluator