org.apache.ignite.configuration

## Class DataStorageConfiguration

- java.lang.Object
- - org.apache.ignite.configuration.DataStorageConfiguration

- All Implemented Interfaces:
    Serializable

      public class DataStorageConfiguration
      extends Object
      implements Serializable

  A durable memory configuration for an Apache Ignite node. The durable memory is a manageable off-heap based memory architecture that divides all expandable data regions into pages of fixed size (see `getPageSize()`). An individual page can store one or many cache key-value entries that allows reusing the memory in the most efficient way and avoid memory fragmentation issues.

  By default, the durable memory allocates a single expandable data region with default settings. All the caches that will be configured in an application will be mapped to this data region by default, thus, all the cache data will reside in that data region. Parameters of default data region can be changed by setting `setDefaultDataRegionConfiguration(DataRegionConfiguration)`. Other data regions (except default) can be configured with `setDataRegionConfigurations(DataRegionConfiguration...)`.

  Data region can be used in memory-only mode, or in persistent mode, when memory is used as a caching layer for disk. Persistence for data region can be turned on with `DataRegionConfiguration.setPersistenceEnabled(boolean)` flag. To learn more about data regions refer to `DataRegionConfiguration` documentation.

  Sample configuration below shows how to make 5 GB data regions the default one for Apache Ignite:

           <property name="dataStorageConfiguration">
               <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
                   <property name="systemCacheInitialSize" value="#{100L * 1024 * 1024}"/>

                   <property name="defaultDataRegionConfiguration">
                       <bean class="org.apache.ignite.configuration.DataRegionConfiguration">
                           <property name="name" value="default_data_region"/>
                           <property name="initialSize" value="#{5L * 1024 * 1024 * 1024}"/>
                       </bean>
                   </property>
               </bean>
           </property>

  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `DFLT_BINARY_METADATA_PATH` Default path (relative to working directory) of binary metadata folder
    `static int` | `DFLT_CHECKPOINT_FREQ`
    `static int` | `DFLT_CHECKPOINT_THREADS` Default number of checkpoint threads.
    `static CheckpointWriteOrder` | `DFLT_CHECKPOINT_WRITE_ORDER` Default checkpoint write order.
    `static String` | `DFLT_DATA_REG_DEFAULT_NAME` This name is assigned to default Dataregion if no user-defined default MemPlc is specified
    `static long` | `DFLT_DATA_REGION_INITIAL_SIZE` Default data region start size (256 MB).
    `static long` | `DFLT_DATA_REGION_MAX_SIZE` Default data region's size is 20% of physical memory available on current machine.
    `static int` | `DFLT_DEFRAGMENTATION_THREAD_POOL_SIZE` Default defragmentation thread pool size.
    `static int` | `DFLT_LOCK_WAIT_TIME` Lock default wait time, 10 sec.
    `static String` | `DFLT_MARSHALLER_PATH` Default path (relative to working directory) of marshaller mappings folder
    `static boolean` | `DFLT_METRICS_ENABLED`
    `static int` | `DFLT_PAGE_SIZE` Default memory page size.
    `static int` | `DFLT_RATE_TIME_INTERVAL_MILLIS` Default length of interval over which rate-based metric is calculated.
    `static int` | `DFLT_SUB_INTERVALS` Default amount of sub intervals to calculate rate-based metric.
    `static int` | `DFLT_TLB_SIZE` Default thread local buffer size.
    `static boolean` | `DFLT_USE_ASYNC_FILE_IO_FACTORY`
    `static boolean` | `DFLT_WAL_ALWAYS_WRITE_FULL_PAGES` Default wal always write full pages.
    `static long` | `DFLT_WAL_ARCHIVE_MAX_SIZE` Default max size of WAL archive files, in bytes.
    `static String` | `DFLT_WAL_ARCHIVE_PATH` Default wal archive directory.
    `static int` | `DFLT_WAL_BUFF_SIZE` Default thread local buffer size.
    `static String` | `DFLT_WAL_CDC_PATH` Default change data capture directory.
    `static boolean` | `DFLT_WAL_COMPACTION_ENABLED` Default wal compaction enabled.
    `static int` | `DFLT_WAL_COMPACTION_LEVEL` Default wal compaction level.
    `static int` | `DFLT_WAL_FLUSH_FREQ` Default Wal flush frequency.
    `static int` | `DFLT_WAL_FSYNC_DELAY` Default wal fsync delay.
    `static int` | `DFLT_WAL_HISTORY_SIZE` Default number of checkpoints to be kept in WAL after checkpoint is finished
    `static WALMode` | `DFLT_WAL_MODE` Default wal mode.
    `static DiskPageCompression` | `DFLT_WAL_PAGE_COMPRESSION` Default compression algorithm for WAL page snapshot records.
    `static String` | `DFLT_WAL_PATH` Default wal directory.
    `static int` | `DFLT_WAL_RECORD_ITERATOR_BUFFER_SIZE` Default wal record iterator buffer size.
    `static int` | `DFLT_WAL_SEGMENT_SIZE` Default WAL file segment size, 64MBytes
    `static int` | `DFLT_WAL_SEGMENTS`
    `static boolean` | `DFLT_WRITE_THROTTLING_ENABLED` Default write throttling enabled.
    `static long` | `HALF_MAX_WAL_ARCHIVE_SIZE` Value used to indicate the use of half of the `getMaxWalArchiveSize()`.
    `static int` | `MAX_PAGE_SIZE` Max memory page size.
    `static int` | `MIN_PAGE_SIZE` Min memory page size.
    `static long` | `UNLIMITED_WAL_ARCHIVE` Value used for making WAL archive size unlimited.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DataStorageConfiguration()` Creates valid durable memory configuration with all default values.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getCdcWalPath()` Gets a path to the CDC directory.
    `long` | `getCheckpointFrequency()` Gets checkpoint frequency.
    `Long` | `getCheckpointReadLockTimeout()` Returns timeout for checkpoint read lock acquisition.
    `int` | `getCheckpointThreads()` Gets a number of threads to use for the checkpoint purposes.
    `CheckpointWriteOrder` | `getCheckpointWriteOrder()` This property defines order of writing pages to disk storage during checkpoint.
    `int` | `getConcurrencyLevel()` Returns the number of concurrent segments in Ignite internal page mapping tables.
    `DataRegionConfiguration[]` | `getDataRegionConfigurations()` Gets an array of all data regions configured.
    `DataRegionConfiguration` | `getDefaultDataRegionConfiguration()`
    `@Nullable WarmUpConfiguration` | `getDefaultWarmUpConfiguration()` Gets default warm-up configuration.
    `int` | `getDefragmentationThreadPoolSize()` Maximum number of partitions which can be defragmented at the same time.
    `EncryptionConfiguration` | `getEncryptionConfiguration()` Gets encryyption configuration.
    `org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory` | `getFileIOFactory()` Factory to provide implementation of FileIO interface which is used for data storage files read/write operations
    `long` | `getLockWaitTime()` Timeout in milliseconds to wait when acquiring persistence store lock file before failing the local node.
    `long` | `getMaxWalArchiveSize()` Gets a max allowed size(in bytes) of WAL archives.
    `long` | `getMetricsRateTimeInterval()` Deprecated. Use `MetricsMxBean.configureHitRateMetric(String, long)` instead.
    `int` | `getMetricsSubIntervalCount()` Deprecated. Use `MetricsMxBean.configureHitRateMetric(String, long)` instead.
    `long` | `getMinWalArchiveSize()` Gets a min allowed size(in bytes) of WAL archives.
    `int` | `getPageSize()` The page memory consists of one or more expandable data regions defined by `DataRegionConfiguration`.
    `String` | `getStoragePath()`
    `long` | `getSystemRegionInitialSize()` Initial size of a data region reserved for system cache.
    `long` | `getSystemRegionMaxSize()` Maximum data region size reserved for system cache.
    `String` | `getWalArchivePath()` Gets a path to the WAL archive directory.
    `long` | `getWalAutoArchiveAfterInactivity()`
    `int` | `getWalBufferSize()` Property defines size(in bytes) of WAL buffer.
    `int` | `getWalCompactionLevel()`
    `long` | `getWalFlushFrequency()` This property define how often WAL will be fsync-ed in `BACKGROUND` mode.
    `long` | `getWalForceArchiveTimeout()`
    `long` | `getWalFsyncDelayNanos()`
    `int` | `getWalHistorySize()` Deprecated. Instead of walHistorySize use maxWalArchiveSize for manage of archive size.
    `WALMode` | `getWalMode()` Property that defines behavior of wal fsync.
    `DiskPageCompression` | `getWalPageCompression()` Gets compression algorithm for WAL page snapshot records.
    `Integer` | `getWalPageCompressionLevel()` Gets `algorithm` specific WAL page compression level.
    `String` | `getWalPath()` Gets a path to the directory where WAL is stored.
    `int` | `getWalRecordIteratorBufferSize()` Property define how many bytes iterator read from disk (for one reading), during go ahead wal.
    `int` | `getWalSegments()` Gets a number of WAL segments to work with.
    `int` | `getWalSegmentSize()` Gets size(in bytes) of a WAL segment.
    `int` | `getWalThreadLocalBufferSize()` Property for size of thread local buffer.
    `boolean` | `isAlwaysWriteFullPages()`
    `boolean` | `isCdcEnabled()` Gets flag indicating whether CDC is enabled.
    `boolean` | `isMetricsEnabled()` Gets flag indicating whether persistence metrics collection is enabled.
    `boolean` | `isWalCompactionEnabled()`
    `boolean` | `isWalHistorySizeParameterUsed()` If WalHistorySize was set by user will use this parameter for compatibility.
    `boolean` | `isWriteThrottlingEnabled()`
    `DataStorageConfiguration` | `setAlwaysWriteFullPages(boolean alwaysWriteFullPages)` Sets flag that enforces writing full page to WAL on every change (instead of delta record).
    `DataStorageConfiguration` | `setCdcEnabled(boolean cdcEnabled)` Sets flag indicating whether CDC enabled.
    `DataStorageConfiguration` | `setCdcWalPath(String cdcWalPath)` Sets a path for the CDC directory.
    `DataStorageConfiguration` | `setCheckpointFrequency(long checkpointFreq)` Sets the checkpoint frequency which is a minimal interval when the dirty pages will be written to the Persistent Store.
    `DataStorageConfiguration` | `setCheckpointReadLockTimeout(long checkpointReadLockTimeout)` Sets timeout for checkpoint read lock acquisition.
    `DataStorageConfiguration` | `setCheckpointThreads(int checkpointThreads)` Sets a number of threads to use for the checkpoint purposes.
    `DataStorageConfiguration` | `setCheckpointWriteOrder(CheckpointWriteOrder checkpointWriteOrder)` This property defines order of writing pages to disk storage during checkpoint.
    `DataStorageConfiguration` | `setConcurrencyLevel(int concLvl)` Sets the number of concurrent segments in Ignite internal page mapping tables.
    `DataStorageConfiguration` | `setDataRegionConfigurations(DataRegionConfiguration... dataRegionConfigurations)` Sets data regions configurations.
    `DataStorageConfiguration` | `setDefaultDataRegionConfiguration(DataRegionConfiguration dfltDataRegConf)` Overrides configuration of default data region which is created automatically.
    `DataStorageConfiguration` | `setDefaultWarmUpConfiguration(@Nullable WarmUpConfiguration dfltWarmUpCfg)` Sets default warm-up configuration.
    `DataStorageConfiguration` | `setDefragmentationThreadPoolSize(int defragmentationThreadPoolSize)` Sets maximum number of partitions which can be defragmented at the same time.
    `DataStorageConfiguration` | `setEncryptionConfiguration(EncryptionConfiguration encCfg)` Sets encryption configuration.
    `DataStorageConfiguration` | `setFileIOFactory(org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory fileIOFactory)` Sets factory to provide implementation of FileIO interface which is used for data storage files read/write operations
    `DataStorageConfiguration` | `setLockWaitTime(long lockWaitTime)` Timeout in milliseconds to wait when acquiring persistence store lock file before failing the local node.
    `DataStorageConfiguration` | `setMaxWalArchiveSize(long walArchiveMaxSize)` Sets a max allowed size(in bytes) of WAL archives.
    `DataStorageConfiguration` | `setMetricsEnabled(boolean metricsEnabled)` Sets flag indicating whether persistence metrics collection is enabled.
    `DataStorageConfiguration` | `setMetricsRateTimeInterval(long metricsRateTimeInterval)` Deprecated. Use `MetricsMxBean.configureHitRateMetric(String, long)` instead.
    `DataStorageConfiguration` | `setMetricsSubIntervalCount(int metricsSubIntervalCnt)` Deprecated. Use `MetricsMxBean.configureHitRateMetric(String, long)` instead.
    `DataStorageConfiguration` | `setMinWalArchiveSize(long walArchiveMinSize)` Sets a min allowed size(in bytes) of WAL archives.
    `DataStorageConfiguration` | `setPageSize(int pageSize)` Changes the page size.
    `DataStorageConfiguration` | `setStoragePath(String persistenceStorePath)` Sets a path to the root directory where the Persistent Store will persist data and indexes.
    `DataStorageConfiguration` | `setSystemRegionInitialSize(long sysRegionInitSize)` Sets initial size of a data region reserved for system cache.
    `DataStorageConfiguration` | `setSystemRegionMaxSize(long sysRegionMaxSize)` Sets maximum data region size reserved for system cache.
    `DataStorageConfiguration` | `setWalArchivePath(String walArchivePath)` Sets a path for the WAL archive directory.
    `DataStorageConfiguration` | `setWalAutoArchiveAfterInactivity(long walAutoArchiveAfterInactivity)` Note: setting this value with `WALMode.FSYNC` may generate file size overhead for WAL segments in case grid is used rarely.
    `DataStorageConfiguration` | `setWalBufferSize(int walBuffSize)` Property defines size(in bytes) of WAL buffer.
    `DataStorageConfiguration` | `setWalCompactionEnabled(boolean walCompactionEnabled)` Sets flag indicating whether WAL compaction is enabled.
    `void` | `setWalCompactionLevel(int walCompactionLevel)`
    `DataStorageConfiguration` | `setWalFlushFrequency(long walFlushFreq)` This property define how often WAL will be fsync-ed in `BACKGROUND` mode.
    `DataStorageConfiguration` | `setWalForceArchiveTimeout(long walForceArchiveTimeout)`
    `DataStorageConfiguration` | `setWalFsyncDelayNanos(long walFsyncDelayNanos)` Sets property that allows to trade latency for throughput in `WALMode.FSYNC` mode.
    `DataStorageConfiguration` | `setWalHistorySize(int walHistSize)` Deprecated. Instead of walHistorySize use maxWalArchiveSize for manage of archive size.
    `DataStorageConfiguration` | `setWalMode(WALMode walMode)` Sets property that defines behavior of wal fsync.
    `DataStorageConfiguration` | `setWalPageCompression(DiskPageCompression walPageCompression)` Sets compression algorithm for WAL page snapshot records.
    `DataStorageConfiguration` | `setWalPageCompressionLevel(Integer walPageCompressionLevel)` Sets `algorithm` specific page compression level.
    `DataStorageConfiguration` | `setWalPath(String walStorePath)` Sets a path to the directory where WAL is stored.
    `DataStorageConfiguration` | `setWalRecordIteratorBufferSize(int walRecordIterBuffSize)` Sets property defining how many bytes iterator read from disk (for one reading), during go ahead wal.
    `DataStorageConfiguration` | `setWalSegments(int walSegments)` Sets a number of WAL segments to work with.
    `DataStorageConfiguration` | `setWalSegmentSize(int walSegmentSize)` Sets size(in bytes) of a WAL segment.
    `DataStorageConfiguration` | `setWalThreadLocalBufferSize(int walTlbSize)` Sets size of thread local buffer.
    `DataStorageConfiguration` | `setWriteThrottlingEnabled(boolean writeThrottlingEnabled)` Sets flag indicating whether write throttling is enabled.
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### UNLIMITED_WAL_ARCHIVE

          public static final long UNLIMITED_WAL_ARCHIVE

      Value used for making WAL archive size unlimited.
      See Also:
        Constant Field Values

    - #### DFLT_DATA_REGION_INITIAL_SIZE

          public static final long DFLT_DATA_REGION_INITIAL_SIZE

      Default data region start size (256 MB).
      See Also:
        Constant Field Values

    - #### DFLT_DATA_REGION_MAX_SIZE

          public static final long DFLT_DATA_REGION_MAX_SIZE

      Default data region's size is 20% of physical memory available on current machine.

    - #### DFLT_PAGE_SIZE

          public static final int DFLT_PAGE_SIZE

      Default memory page size.
      See Also:
        Constant Field Values

    - #### MAX_PAGE_SIZE

          public static final int MAX_PAGE_SIZE

      Max memory page size.
      See Also:
        Constant Field Values

    - #### MIN_PAGE_SIZE

          public static final int MIN_PAGE_SIZE

      Min memory page size.
      See Also:
        Constant Field Values

    - #### DFLT_DATA_REG_DEFAULT_NAME

          public static final String DFLT_DATA_REG_DEFAULT_NAME

      This name is assigned to default Dataregion if no user-defined default MemPlc is specified
      See Also:
        Constant Field Values

    - #### DFLT_CHECKPOINT_FREQ

          public static final int DFLT_CHECKPOINT_FREQ

      See Also:
        Constant Field Values

    - #### DFLT_LOCK_WAIT_TIME

          public static final int DFLT_LOCK_WAIT_TIME

      Lock default wait time, 10 sec.
      See Also:
        Constant Field Values

    - #### DFLT_METRICS_ENABLED

          public static final boolean DFLT_METRICS_ENABLED

      See Also:
        Constant Field Values

    - #### DFLT_SUB_INTERVALS

          public static final int DFLT_SUB_INTERVALS

      Default amount of sub intervals to calculate rate-based metric.
      See Also:
        Constant Field Values

    - #### DFLT_RATE_TIME_INTERVAL_MILLIS

          public static final int DFLT_RATE_TIME_INTERVAL_MILLIS

      Default length of interval over which rate-based metric is calculated.
      See Also:
        Constant Field Values

    - #### DFLT_CHECKPOINT_THREADS

          public static final int DFLT_CHECKPOINT_THREADS

      Default number of checkpoint threads.
      See Also:
        Constant Field Values

    - #### DFLT_CHECKPOINT_WRITE_ORDER

          public static final CheckpointWriteOrder DFLT_CHECKPOINT_WRITE_ORDER

      Default checkpoint write order.

    - #### DFLT_WAL_HISTORY_SIZE

          public static final int DFLT_WAL_HISTORY_SIZE

      Default number of checkpoints to be kept in WAL after checkpoint is finished
      See Also:
        Constant Field Values

    - #### DFLT_WAL_ARCHIVE_MAX_SIZE

          public static final long DFLT_WAL_ARCHIVE_MAX_SIZE

      Default max size of WAL archive files, in bytes.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_SEGMENTS

          public static final int DFLT_WAL_SEGMENTS

      See Also:
        Constant Field Values

    - #### DFLT_WAL_SEGMENT_SIZE

          public static final int DFLT_WAL_SEGMENT_SIZE

      Default WAL file segment size, 64MBytes
      See Also:
        Constant Field Values

    - #### DFLT_WAL_MODE

          public static final WALMode DFLT_WAL_MODE

      Default wal mode.

    - #### DFLT_TLB_SIZE

          public static final int DFLT_TLB_SIZE

      Default thread local buffer size.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_BUFF_SIZE

          public static final int DFLT_WAL_BUFF_SIZE

      Default thread local buffer size.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_FLUSH_FREQ

          public static final int DFLT_WAL_FLUSH_FREQ

      Default Wal flush frequency.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_FSYNC_DELAY

          public static final int DFLT_WAL_FSYNC_DELAY

      Default wal fsync delay.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_RECORD_ITERATOR_BUFFER_SIZE

          public static final int DFLT_WAL_RECORD_ITERATOR_BUFFER_SIZE

      Default wal record iterator buffer size.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_ALWAYS_WRITE_FULL_PAGES

          public static final boolean DFLT_WAL_ALWAYS_WRITE_FULL_PAGES

      Default wal always write full pages.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_PATH

          public static final String DFLT_WAL_PATH

      Default wal directory.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_ARCHIVE_PATH

          public static final String DFLT_WAL_ARCHIVE_PATH

      Default wal archive directory.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_CDC_PATH

          public static final String DFLT_WAL_CDC_PATH

      Default change data capture directory.
      See Also:
        Constant Field Values

    - #### DFLT_BINARY_METADATA_PATH

          public static final String DFLT_BINARY_METADATA_PATH

      Default path (relative to working directory) of binary metadata folder
      See Also:
        Constant Field Values

    - #### DFLT_MARSHALLER_PATH

          public static final String DFLT_MARSHALLER_PATH

      Default path (relative to working directory) of marshaller mappings folder
      See Also:
        Constant Field Values

    - #### DFLT_WRITE_THROTTLING_ENABLED

          public static final boolean DFLT_WRITE_THROTTLING_ENABLED

      Default write throttling enabled.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_COMPACTION_ENABLED

          public static final boolean DFLT_WAL_COMPACTION_ENABLED

      Default wal compaction enabled.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_COMPACTION_LEVEL

          public static final int DFLT_WAL_COMPACTION_LEVEL

      Default wal compaction level.
      See Also:
        Constant Field Values

    - #### DFLT_DEFRAGMENTATION_THREAD_POOL_SIZE

          public static final int DFLT_DEFRAGMENTATION_THREAD_POOL_SIZE

      Default defragmentation thread pool size.
      See Also:
        Constant Field Values

    - #### DFLT_WAL_PAGE_COMPRESSION

          public static final DiskPageCompression DFLT_WAL_PAGE_COMPRESSION

      Default compression algorithm for WAL page snapshot records.

    - #### DFLT_USE_ASYNC_FILE_IO_FACTORY

          public static final boolean DFLT_USE_ASYNC_FILE_IO_FACTORY

      See Also:
        `IgniteSystemProperties.IGNITE_USE_ASYNC_FILE_IO_FACTORY`, Constant Field Values

    - #### HALF_MAX_WAL_ARCHIVE_SIZE

          public static final long HALF_MAX_WAL_ARCHIVE_SIZE

      Value used to indicate the use of half of the `getMaxWalArchiveSize()`.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### DataStorageConfiguration

          public DataStorageConfiguration()

      Creates valid durable memory configuration with all default values.

  - ### Method Detail

    - #### getSystemRegionInitialSize

          public long getSystemRegionInitialSize()

      Initial size of a data region reserved for system cache.
      Returns:
        Size in bytes.

    - #### setSystemRegionInitialSize

          public DataStorageConfiguration setSystemRegionInitialSize(long sysRegionInitSize)

      Sets initial size of a data region reserved for system cache. Default value is `DFLT_SYS_REG_INIT_SIZE`
      Parameters:
        `sysRegionInitSize` - Size in bytes.
      Returns:
        `this` for chaining.

    - #### getSystemRegionMaxSize

          public long getSystemRegionMaxSize()

      Maximum data region size reserved for system cache.
      Returns:
        Size in bytes.

    - #### setSystemRegionMaxSize

          public DataStorageConfiguration setSystemRegionMaxSize(long sysRegionMaxSize)

      Sets maximum data region size reserved for system cache. The total size should not be less than 10 MB due to internal data structures overhead. Default value is `DFLT_SYS_REG_MAX_SIZE`.
      Parameters:
        `sysRegionMaxSize` - Maximum size in bytes for system cache data region.
      Returns:
        `this` for chaining.

    - #### getPageSize

          public int getPageSize()

      The page memory consists of one or more expandable data regions defined by `DataRegionConfiguration`. Every data region is split on pages of fixed size that store actual cache entries.
      Returns:
        Page size in bytes.

    - #### setPageSize

          public DataStorageConfiguration setPageSize(int pageSize)

      Changes the page size.
      Parameters:
        `pageSize` - Page size in bytes. Supported values are: `1024`, `2048`, `4096`, `8192` and `16384`. If value is not set (or zero), `DFLT_PAGE_SIZE` (`4096`) will be used.
      Returns:
        `this` for chaining.
      See Also:
        `MIN_PAGE_SIZE`, `MAX_PAGE_SIZE`

    - #### getDataRegionConfigurations

          public DataRegionConfiguration[] getDataRegionConfigurations()

      Gets an array of all data regions configured. Apache Ignite will instantiate a dedicated data region per region. An Apache Ignite cache can be mapped to a specific region with `CacheConfiguration.setDataRegionName(String)` method.
      Returns:
        Array of configured data regions.

    - #### setDataRegionConfigurations

          public DataStorageConfiguration setDataRegionConfigurations(DataRegionConfiguration... dataRegionConfigurations)

      Sets data regions configurations.
      Parameters:
        `dataRegionConfigurations` - Data regions configurations.
      Returns:
        `this` for chaining.

    - #### getConcurrencyLevel

          public int getConcurrencyLevel()

      Returns the number of concurrent segments in Ignite internal page mapping tables. By default equals to the number of available CPUs.
      Returns:
        Mapping table concurrency level(always greater than 0).

    - #### setConcurrencyLevel

          public DataStorageConfiguration setConcurrencyLevel(int concLvl)

      Sets the number of concurrent segments in Ignite internal page mapping tables. If value is not positive, the number of available CPUs will be used.
      Parameters:
        `concLvl` - Mapping table concurrency level.
      Returns:
        `this` for chaining.

    - #### getDefaultDataRegionConfiguration

          public DataRegionConfiguration getDefaultDataRegionConfiguration()

      Returns:
        Configuration of default data region. All cache groups will reside in this data region by default. For assigning a custom data region to cache group, use `CacheConfiguration.setDataRegionName(String)`.

    - #### setDefaultDataRegionConfiguration

          public DataStorageConfiguration setDefaultDataRegionConfiguration(DataRegionConfiguration dfltDataRegConf)

      Overrides configuration of default data region which is created automatically.
      Parameters:
        `dfltDataRegConf` - Default data region configuration.
      Returns:
        `this` for chaining.

    - #### getStoragePath

          public String getStoragePath()

      Returns:
        A path the root directory where the Persistent Store will persist data and indexes.

    - #### setStoragePath

          public DataStorageConfiguration setStoragePath(String persistenceStorePath)

      Sets a path to the root directory where the Persistent Store will persist data and indexes. By default the Persistent Store's files are located under Ignite work directory.
      Parameters:
        `persistenceStorePath` - Persistence store path.
      Returns:
        `this` for chaining.

    - #### getCheckpointFrequency

          public long getCheckpointFrequency()

      Gets checkpoint frequency.
      Returns:
        Checkpoint frequency in milliseconds.

    - #### setCheckpointFrequency

          public DataStorageConfiguration setCheckpointFrequency(long checkpointFreq)

      Sets the checkpoint frequency which is a minimal interval when the dirty pages will be written to the Persistent Store. If the rate is high, checkpoint will be triggered more frequently. If value is not positive, `DFLT_CHECKPOINT_FREQ` will be used.
      Parameters:
        `checkpointFreq` - Checkpoint frequency in milliseconds.
      Returns:
        `this` for chaining.

    - #### getCheckpointThreads

          public int getCheckpointThreads()

      Gets a number of threads to use for the checkpoint purposes.
      Returns:
        Number of checkpoint threads.

    - #### setCheckpointThreads

          public DataStorageConfiguration setCheckpointThreads(int checkpointThreads)

      Sets a number of threads to use for the checkpoint purposes.
      Parameters:
        `checkpointThreads` - Number of checkpoint threads. Four threads are used by default.
      Returns:
        `this` for chaining.

    - #### getLockWaitTime

          public long getLockWaitTime()

      Timeout in milliseconds to wait when acquiring persistence store lock file before failing the local node.
      Returns:
        Lock wait time in milliseconds.

    - #### setLockWaitTime

          public DataStorageConfiguration setLockWaitTime(long lockWaitTime)

      Timeout in milliseconds to wait when acquiring persistence store lock file before failing the local node.
      Parameters:
        `lockWaitTime` - Lock wait time in milliseconds.
      Returns:
        `this` for chaining.

    - #### getWalHistorySize

          @Deprecated
          public int getWalHistorySize()

      Deprecated. Instead of walHistorySize use maxWalArchiveSize for manage of archive size.
      Gets a total number of checkpoints to keep in the WAL history.
      Returns:
        Number of checkpoints to keep in WAL after a checkpoint is finished.
      See Also:
        `getMaxWalArchiveSize()`

    - #### setWalHistorySize

          @Deprecated
          public DataStorageConfiguration setWalHistorySize(int walHistSize)

      Deprecated. Instead of walHistorySize use maxWalArchiveSize for manage of archive size.
      Sets a total number of checkpoints to keep in the WAL history.
      Parameters:
        `walHistSize` - Number of checkpoints to keep after a checkpoint is finished.
      Returns:
        `this` for chaining.
      See Also:
        `setMaxWalArchiveSize(long)`

    - #### isWalHistorySizeParameterUsed

          public boolean isWalHistorySizeParameterUsed()

      If WalHistorySize was set by user will use this parameter for compatibility.
      Returns:
        `true` if use WalHistorySize for compatibility.

    - #### getMaxWalArchiveSize

          public long getMaxWalArchiveSize()

      Gets a max allowed size(in bytes) of WAL archives.
      Returns:
        max size(in bytes) of WAL archive directory(greater than 0, or `UNLIMITED_WAL_ARCHIVE` if WAL archive size is unlimited).

    - #### setMaxWalArchiveSize

          public DataStorageConfiguration setMaxWalArchiveSize(long walArchiveMaxSize)

      Sets a max allowed size(in bytes) of WAL archives. If value is not positive or `UNLIMITED_WAL_ARCHIVE`, `DFLT_WAL_ARCHIVE_MAX_SIZE` will be used.
      Parameters:
        `walArchiveMaxSize` - max size(in bytes) of WAL archive directory.
      Returns:
        `this` for chaining.

    - #### getWalSegments

          public int getWalSegments()

      Gets a number of WAL segments to work with.
      Returns:
        Number of work WAL segments.

    - #### setWalSegments

          public DataStorageConfiguration setWalSegments(int walSegments)

      Sets a number of WAL segments to work with. For performance reasons, the whole WAL is split into files of fixed length called segments.
      Parameters:
        `walSegments` - Number of WAL segments. Value must be greater than 1.
      Returns:
        `this` for chaining.

    - #### getWalSegmentSize

          public int getWalSegmentSize()

      Gets size(in bytes) of a WAL segment.
      Returns:
        WAL segment size(in bytes).

    - #### setWalSegmentSize

          public DataStorageConfiguration setWalSegmentSize(int walSegmentSize)

      Sets size(in bytes) of a WAL segment. If value is not set (or zero), `DFLT_WAL_SEGMENT_SIZE` will be used.
      Parameters:
        `walSegmentSize` - WAL segment size(in bytes). Value must be between 512Kb and 2Gb.
      Returns:
        `This` for chaining.

    - #### getWalPath

          public String getWalPath()

      Gets a path to the directory where WAL is stored.
      Returns:
        WAL persistence path, absolute or relative to Ignite work directory.

    - #### setWalPath

          public DataStorageConfiguration setWalPath(String walStorePath)

      Sets a path to the directory where WAL is stored. If this path is relative, it will be resolved relatively to Ignite work directory.
      Parameters:
        `walStorePath` - WAL persistence path, absolute or relative to Ignite work directory.
      Returns:
        `this` for chaining.

    - #### getWalArchivePath

          public String getWalArchivePath()

      Gets a path to the WAL archive directory.
      Returns:
        WAL archive directory.

    - #### setWalArchivePath

          public DataStorageConfiguration setWalArchivePath(String walArchivePath)

      Sets a path for the WAL archive directory. Every WAL segment will be fully copied to this directory before it can be reused for WAL purposes.
      Parameters:
        `walArchivePath` - WAL archive directory.
      Returns:
        `this` for chaining.

    - #### getCdcWalPath

          public String getCdcWalPath()

      Gets a path to the CDC directory. If this path is relative, it will be resolved relatively to Ignite work directory.
      Returns:
        CDC directory.

    - #### setCdcWalPath

          public DataStorageConfiguration setCdcWalPath(String cdcWalPath)

      Sets a path for the CDC directory. Hard link to every WAL Archive segment will be created in it for CDC processing purpose.
      Parameters:
        `cdcWalPath` - CDC directory.
      Returns:
        `this` for chaining.

    - #### setCdcEnabled

          public DataStorageConfiguration setCdcEnabled(boolean cdcEnabled)

      Sets flag indicating whether CDC enabled.
      Parameters:
        `cdcEnabled` - CDC enabled flag.
      Returns:
        `this` for chaining.

    - #### isCdcEnabled

          public boolean isCdcEnabled()

      Gets flag indicating whether CDC is enabled. Default value is `false`.
      Returns:
        Metrics enabled flag.

    - #### isMetricsEnabled

          public boolean isMetricsEnabled()

      Gets flag indicating whether persistence metrics collection is enabled. Default value is `DFLT_METRICS_ENABLED`.
      Returns:
        Metrics enabled flag.

    - #### setMetricsEnabled

          public DataStorageConfiguration setMetricsEnabled(boolean metricsEnabled)

      Sets flag indicating whether persistence metrics collection is enabled.
      Parameters:
        `metricsEnabled` - Metrics enabled flag.
      Returns:
        `this` for chaining.

    - #### isWriteThrottlingEnabled

          public boolean isWriteThrottlingEnabled()

      Returns:
        Flag indicating whether write throttling is enabled.

    - #### setWriteThrottlingEnabled

          public DataStorageConfiguration setWriteThrottlingEnabled(boolean writeThrottlingEnabled)

      Sets flag indicating whether write throttling is enabled.
      Parameters:
        `writeThrottlingEnabled` - Write throttling enabled flag.
      Returns:
        `this` for chaining.

    - #### getMetricsRateTimeInterval

          @Deprecated
          public long getMetricsRateTimeInterval()

      Deprecated. Use `MetricsMxBean.configureHitRateMetric(String, long)` instead.
      Gets the length of the time interval for rate-based metrics. This interval defines a window over which hits will be tracked. Default value is `DFLT_RATE_TIME_INTERVAL_MILLIS`.
      Returns:
        Time interval in milliseconds.

    - #### setMetricsRateTimeInterval

          @Deprecated
          public DataStorageConfiguration setMetricsRateTimeInterval(long metricsRateTimeInterval)

      Deprecated. Use `MetricsMxBean.configureHitRateMetric(String, long)` instead.
      Sets the length of the time interval for rate-based metrics. This interval defines a window over which hits will be tracked.
      Parameters:
        `metricsRateTimeInterval` - Time interval in milliseconds.
      Returns:
        `this` for chaining.

    - #### getMetricsSubIntervalCount

          @Deprecated
          public int getMetricsSubIntervalCount()

      Deprecated. Use `MetricsMxBean.configureHitRateMetric(String, long)` instead.
      Gets the number of sub-intervals to split the `getMetricsRateTimeInterval()` into to track the update history. Default value is `DFLT_SUB_INTERVALS`.
      Returns:
        The number of sub-intervals for history tracking.

    - #### setMetricsSubIntervalCount

          @Deprecated
          public DataStorageConfiguration setMetricsSubIntervalCount(int metricsSubIntervalCnt)

      Deprecated. Use `MetricsMxBean.configureHitRateMetric(String, long)` instead.
      Sets the number of sub-intervals to split the `getMetricsRateTimeInterval()` into to track the update history.
      Parameters:
        `metricsSubIntervalCnt` - The number of sub-intervals for history tracking.
      Returns:
        `this` for chaining.

    - #### getWalMode

          public WALMode getWalMode()

      Property that defines behavior of wal fsync. Different type provides different guarantees for consistency. See `WALMode` for details.
      Returns:
        WAL mode.

    - #### setWalMode

          public DataStorageConfiguration setWalMode(WALMode walMode)

      Sets property that defines behavior of wal fsync. Different type provides different guarantees for consistency. See `WALMode` for details.
      Parameters:
        `walMode` - Wal mode.
      Returns:
        `this` for chaining.

    - #### getWalThreadLocalBufferSize

          public int getWalThreadLocalBufferSize()

      Property for size of thread local buffer. Each thread which write to wal have thread local buffer for serialize recode before write in wal.
      Returns:
        Thread local buffer size (in bytes).

    - #### setWalThreadLocalBufferSize

          public DataStorageConfiguration setWalThreadLocalBufferSize(int walTlbSize)

      Sets size of thread local buffer. Each thread which write to wal have thread local buffer for serialize recode before write in wal.
      Parameters:
        `walTlbSize` - Thread local buffer size (in bytes).
      Returns:
        `this` for chaining.

    - #### getWalBufferSize

          public int getWalBufferSize()

      Property defines size(in bytes) of WAL buffer. Each WAL record will be serialized to this buffer before write in WAL file.
      Returns:
        WAL buffer size(in bytes).

    - #### setWalBufferSize

          public DataStorageConfiguration setWalBufferSize(int walBuffSize)

      Property defines size(in bytes) of WAL buffer. If value isn't positive it calculation will be based on `getWalSegmentSize()`.
      Parameters:
        `walBuffSize` - WAL buffer size(in bytes).
      Returns:
        `this` for chaining.

    - #### getWalFlushFrequency

          public long getWalFlushFrequency()

      This property define how often WAL will be fsync-ed in `BACKGROUND` mode. Ignored for all other WAL modes.
      Returns:
        WAL flush frequency, in milliseconds.

    - #### setWalFlushFrequency

          public DataStorageConfiguration setWalFlushFrequency(long walFlushFreq)

      This property define how often WAL will be fsync-ed in `BACKGROUND` mode. Ignored for all other WAL modes.
      Parameters:
        `walFlushFreq` - WAL flush frequency, in milliseconds.
      Returns:
        `this` for chaining.

    - #### getWalFsyncDelayNanos

          public long getWalFsyncDelayNanos()

      Returns:
        Property that allows to trade latency for throughput in `WALMode.FSYNC` mode. It limits minimum time interval between WAL fsyncs. First thread that initiates WAL fsync will wait for this number of nanoseconds, another threads will just wait fsync of first thread (similar to CyclicBarrier). Total throughput should increase under load as total WAL fsync rate will be limited.

    - #### setWalFsyncDelayNanos

          public DataStorageConfiguration setWalFsyncDelayNanos(long walFsyncDelayNanos)

      Sets property that allows to trade latency for throughput in `WALMode.FSYNC` mode. It limits minimum time interval between WAL fsyncs. First thread that initiates WAL fsync will wait for this number of nanoseconds, another threads will just wait fsync of first thread (similar to CyclicBarrier). Total throughput should increase under load as total WAL fsync rate will be limited.
      Parameters:
        `walFsyncDelayNanos` - Wal fsync delay, in nanoseconds.
      Returns:
        `this` for chaining.

    - #### getWalRecordIteratorBufferSize

          public int getWalRecordIteratorBufferSize()

      Property define how many bytes iterator read from disk (for one reading), during go ahead wal.
      Returns:
        Record iterator buffer size.

    - #### setWalRecordIteratorBufferSize

          public DataStorageConfiguration setWalRecordIteratorBufferSize(int walRecordIterBuffSize)

      Sets property defining how many bytes iterator read from disk (for one reading), during go ahead wal.
      Parameters:
        `walRecordIterBuffSize` - Wal record iterator buffer size.
      Returns:
        `this` for chaining.

    - #### isAlwaysWriteFullPages

          public boolean isAlwaysWriteFullPages()

      Returns:
        Flag that enforces writing full page to WAL on every change (instead of delta record). Can be used for debugging purposes: every version of page will be present in WAL. Note that WAL will take several times more space in this mode.

    - #### setAlwaysWriteFullPages

          public DataStorageConfiguration setAlwaysWriteFullPages(boolean alwaysWriteFullPages)

      Sets flag that enforces writing full page to WAL on every change (instead of delta record). Can be used for debugging purposes: every version of page will be present in WAL. Note that WAL will take several times more space in this mode.
      Parameters:
        `alwaysWriteFullPages` - Always write full pages flag.
      Returns:
        `this` for chaining.

    - #### getFileIOFactory

          public org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory getFileIOFactory()

      Factory to provide implementation of FileIO interface which is used for data storage files read/write operations
      Returns:
        File I/O factory

    - #### setFileIOFactory

          public DataStorageConfiguration setFileIOFactory(org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory fileIOFactory)

      Sets factory to provide implementation of FileIO interface which is used for data storage files read/write operations
      Parameters:
        `fileIOFactory` - File I/O factory
      Returns:
        `this` for chaining.

    - #### setWalAutoArchiveAfterInactivity

          public DataStorageConfiguration setWalAutoArchiveAfterInactivity(long walAutoArchiveAfterInactivity)

      Note: setting this value with `WALMode.FSYNC` may generate file size overhead for WAL segments in case grid is used rarely.
      Parameters:
        `walAutoArchiveAfterInactivity` - time in millis to run auto archiving segment (even if incomplete) after last record logging.
        Positive value enables incomplete segment archiving after timeout (inactivity).
        Zero or negative value disables auto archiving.
      Returns:
        current configuration instance for chaining

    - #### getWalAutoArchiveAfterInactivity

          public long getWalAutoArchiveAfterInactivity()

      Returns:
        time in millis to run auto archiving WAL segment (even if incomplete) after last record log

    - #### setWalForceArchiveTimeout

          public DataStorageConfiguration setWalForceArchiveTimeout(long walForceArchiveTimeout)

      Parameters:
        `walForceArchiveTimeout` - time in millis to run auto archiving segment (even if incomplete) after last record logging.
        Positive value enables incomplete segment archiving after timeout (inactivity).
        Zero or negative value disables auto archiving.
      Returns:
        current configuration instance for chaining

    - #### getWalForceArchiveTimeout

          public long getWalForceArchiveTimeout()

      Returns:
        time in millis to run auto archiving WAL segment (even if incomplete) after last record log

    - #### getCheckpointWriteOrder

          public CheckpointWriteOrder getCheckpointWriteOrder()

      This property defines order of writing pages to disk storage during checkpoint.
      Returns:
        Checkpoint write order.

    - #### setCheckpointWriteOrder

          public DataStorageConfiguration setCheckpointWriteOrder(CheckpointWriteOrder checkpointWriteOrder)

      This property defines order of writing pages to disk storage during checkpoint.
      Parameters:
        `checkpointWriteOrder` - Checkpoint write order.
      Returns:
        `this` for chaining.

    - #### isWalCompactionEnabled

          public boolean isWalCompactionEnabled()

      Returns:
        Flag indicating whether WAL compaction is enabled.

    - #### setWalCompactionEnabled

          public DataStorageConfiguration setWalCompactionEnabled(boolean walCompactionEnabled)

      Sets flag indicating whether WAL compaction is enabled.
      Parameters:
        `walCompactionEnabled` - Wal compaction enabled flag.
      Returns:
        `this` for chaining.

    - #### getWalCompactionLevel

          public int getWalCompactionLevel()

      Returns:
        ZIP level to WAL compaction.

    - #### setWalCompactionLevel

          public void setWalCompactionLevel(int walCompactionLevel)

      Parameters:
        `walCompactionLevel` - New ZIP level to WAL compaction.

    - #### getCheckpointReadLockTimeout

          public Long getCheckpointReadLockTimeout()

      Returns timeout for checkpoint read lock acquisition.
      Returns:
        Returns timeout for checkpoint read lock acquisition in milliseconds.
      See Also:
        `setCheckpointReadLockTimeout(long)`

    - #### setCheckpointReadLockTimeout

          public DataStorageConfiguration setCheckpointReadLockTimeout(long checkpointReadLockTimeout)

      Sets timeout for checkpoint read lock acquisition.

      When any thread cannot acquire checkpoint read lock in this time, then critical failure handler is being called.

      Parameters:
        `checkpointReadLockTimeout` - Timeout for checkpoint read lock acquisition in milliseconds.
      Returns:
        `this` for chaining.

    - #### getWalPageCompression

          public DiskPageCompression getWalPageCompression()

      Gets compression algorithm for WAL page snapshot records.
      Returns:
        Page compression algorithm.

    - #### setWalPageCompression

          public DataStorageConfiguration setWalPageCompression(DiskPageCompression walPageCompression)

      Sets compression algorithm for WAL page snapshot records.
      Parameters:
        `walPageCompression` - Page compression algorithm.
      Returns:
        `this` for chaining.

    - #### getWalPageCompressionLevel

          public Integer getWalPageCompressionLevel()

      Gets `algorithm` specific WAL page compression level.
      Returns:
        WAL page snapshots compression level or `null` for default.

    - #### setWalPageCompressionLevel

          public DataStorageConfiguration setWalPageCompressionLevel(Integer walPageCompressionLevel)

      Sets `algorithm` specific page compression level.
      Parameters:
        `walPageCompressionLevel` - Disk page compression level or `null` to use default. `Zstd`: from `-131072` to `22` (default `3`). `LZ4`: from `0` to `17` (default `0`).
      Returns:
        `this` for chaining.

    - #### getEncryptionConfiguration

          public EncryptionConfiguration getEncryptionConfiguration()

      Gets encryyption configuration.
      Returns:
        Encryption configuration.

    - #### setEncryptionConfiguration

          public DataStorageConfiguration setEncryptionConfiguration(EncryptionConfiguration encCfg)

      Sets encryption configuration.
      Parameters:
        `encCfg` - Encryption configuration.
      Returns:
        `this` for chaining.

    - #### setDefaultWarmUpConfiguration

          public DataStorageConfiguration setDefaultWarmUpConfiguration(@Nullable
                                                                        @Nullable WarmUpConfiguration dfltWarmUpCfg)

      Sets default warm-up configuration.
      Parameters:
        `dfltWarmUpCfg` - Default warm-up configuration. To assign a special warm-up configuration for a data region, use `DataRegionConfiguration.setWarmUpConfiguration(org.apache.ignite.configuration.WarmUpConfiguration)`.
      Returns:
        `this` for chaining.

    - #### getDefaultWarmUpConfiguration

          @Nullable
          public @Nullable WarmUpConfiguration getDefaultWarmUpConfiguration()

      Gets default warm-up configuration.
      Returns:
        Default warm-up configuration.

    - #### setDefragmentationThreadPoolSize

          public DataStorageConfiguration setDefragmentationThreadPoolSize(int defragmentationThreadPoolSize)

      Sets maximum number of partitions which can be defragmented at the same time.
      Parameters:
        `defragmentationThreadPoolSize` - Maximum number of partitions which can be defragmented at the same time. Default is `DFLT_DEFRAGMENTATION_THREAD_POOL_SIZE`.
      Returns:
        `this` for chaining.

    - #### getDefragmentationThreadPoolSize

          public int getDefragmentationThreadPoolSize()

      Maximum number of partitions which can be defragmented at the same time.
      Returns:
        Thread pool size for defragmentation.

    - #### getMinWalArchiveSize

          public long getMinWalArchiveSize()

      Gets a min allowed size(in bytes) of WAL archives.
      Returns:
        min size(in bytes) of WAL archive directory(greater than 0, or `HALF_MAX_WAL_ARCHIVE_SIZE`).

    - #### setMinWalArchiveSize

          public DataStorageConfiguration setMinWalArchiveSize(long walArchiveMinSize)

      Sets a min allowed size(in bytes) of WAL archives. If value is not positive, `HALF_MAX_WAL_ARCHIVE_SIZE` will be used.
      Parameters:
        `walArchiveMinSize` - min size(in bytes) of WAL archive directory.
      Returns:
        `this` for chaining.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

2022 Copyright © Apache Software Foundation
| Follow @ApacheIgnite
Ignite Database and Caching Platform | : ver. 2.12.0
Release Date | : January 10 2022