﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.7.5/dotnetdoc/api/Apache.Ignite.Core.Configuration.html" />

<META NAME="ROBOTS" CONTENT="NOINDEX">

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Namespace Apache.Ignite.Core.Configuration
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Namespace Apache.Ignite.Core.Configuration
   | Apache Ignite.NET ">
    <meta name="generator" content="docfx 2.24.0.0">
    
    <link rel="shortcut icon" href="../images/favicon.ico">
    <link rel="stylesheet" href="../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../styles/docfx.css">
    <link rel="stylesheet" href="../styles/main.css">
    <meta property="docfx:navrel" content="../toc.html">
    <meta property="docfx:tocrel" content="toc.html">
    
    <meta property="docfx:rel" content="../">
    
  
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
  <body data-spy="scroll" data-target="#affix">
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="../index.html">
                <img id="logo" class="svg" src="../images/logo_ignite_32_32.png" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search" id="breadcrumb">
            <ul class="breadcrumb">
              <li></li>
            </ul>
          </div>
        </div>
      </header>
      <div class="container body-content">
        
        <div id="search-results">
          <div class="search-list"></div>
          <div class="sr-items"></div>
          <ul id="pagination"></ul>
        </div>
      </div>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="Apache.Ignite.Core.Configuration">
  
  <h1 id="Apache_Ignite_Core_Configuration" data-uid="Apache.Ignite.Core.Configuration" class="text-break">Namespace Apache.Ignite.Core.Configuration
  </h1>
  <div class="markdown level0 summary"></div>
  <div class="markdown level0 conceptual"></div>
  <div class="markdown level0 remarks"></div>
    <h3 id="classes">Classes
  </h3>
      <h4><a class="xref" href="Apache.Ignite.Core.Configuration.ClientConnectorConfiguration.html">ClientConnectorConfiguration</a></h4>
      <section><p>Client connector configuration (ODBC, JDBC, Thin Client).</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Configuration.DataRegionConfiguration.html">DataRegionConfiguration</a></h4>
      <section><p>Defines custom data region configuration for Apache Ignite page memory
(see <a class="xref" href="Apache.Ignite.Core.Configuration.DataStorageConfiguration.html">DataStorageConfiguration</a>). 
<p>
For each configured data region Apache Ignite instantiates respective memory regions with different
parameters like maximum size, eviction policy, swapping options, etc.
An Apache Ignite cache can be mapped to a particular region using
<a class="xref" href="Apache.Ignite.Core.Cache.Configuration.CacheConfiguration.html#Apache_Ignite_Core_Cache_Configuration_CacheConfiguration_DataRegionName">DataRegionName</a> method.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Configuration.DataStorageConfiguration.html">DataStorageConfiguration</a></h4>
      <section><p>Data storage configuration for Ignite page memory.
<p>
The page memory is a manageable off-heap based memory architecture that divides all expandable data
regions into pages of fixed size. 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.
<p>
By default, the page memory allocates a single expandable data region. 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.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.html">SqlConnectorConfiguration</a></h4>
      <section><p>SQL connector configuration (for ODBC and JDBC).</p>
</section>
    <h3 id="enums">Enums
  </h3>
      <h4><a class="xref" href="Apache.Ignite.Core.Configuration.CheckpointWriteOrder.html">CheckpointWriteOrder</a></h4>
      <section><p>Defines checkpoint pages order on disk.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Configuration.DataPageEvictionMode.html">DataPageEvictionMode</a></h4>
      <section><p>Memory page eviction mode.
Only data pages, that store key-value entries, are eligible for eviction.
The other types of pages, like index or system pages, are not evictable.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Configuration.WalMode.html">WalMode</a></h4>
      <section><p>Write Ahead Log mode.</p>
</section>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            © 2015 - 2018 The Apache Software Foundation
            
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../styles/docfx.js"></script>
    <script type="text/javascript" src="../styles/main.js"></script>
  </body>
</html>
