Guys,

Here is my proposal:

1) MemoryPolicyConfiguration is renamed to *DataRegionConfiguration*.
2) PersistenceConfiguration is merged with MemoryConfiguration and renamed
to ... *DataStorageConfiguration*! It has: common memory settings (e.g.
default data region), persistence settings (e.g. WAL) and a list of
DataRegionConfiguration beans.

What we have in the end:

<property name="dataConfiguration">
    <bean class="o.a.i.DataConfiguration">
        <property name="pageSize" value="8192" />
        <property name="persistentStorePath" value="/my/path" />
        <property name="dataRegions">
            <list>
                <bean class="o.a.i.DataRegionConfiguration">
                    <property name="name" value="VOLATILE" />
                    <property name="maxSize" value="1_000_000_000" />
                </bean>
                <bean class="o.a.i.DataRegionConfiguration">
                    <property name="name" value="PERSISTENT" />
                    <property name="maxSize" value="1_000_000_000" />
                    <property name="persistent" value="true" />
                </bean>
            </list>
        </property>
    </bean>
</property>


Makes sense?

Vladimir.


On Thu, Sep 21, 2017 at 7:04 AM, Dmitriy Setrakyan <dsetrak...@apache.org>
wrote:

> Firstly all, why not call it DataPolicy instead of MemoryPolicy? Secondly,
> why not set data policies directly on IgniteConfiguration. And lastly, how
> about we combine memory and disk properties in one bean with clear naming
> convention?
>
> Here is the example. Note that all properties above must start with with
> "Memory" or "Disk".
>
> *IgniteConfiguration cfg = new IgniteConfiguration();*
>
>
>
>
> >
> >
> >
> >
> > *cfg.setDataPolicies(    new DataPolicyConfiguration()
> > .setName("bla"),        .setMemoryMaxSize(1024), // must be greater than
> 0,
> > since memory always needs to be enabled.        .setDiskMaxSize(0), // if
> > greater than 0, then persistence is enabled.    );*
>
>
>
> I think this approach is much more concise and straight forward. What do
> you think?
>
> D.
>
> On Wed, Sep 20, 2017 at 4:55 AM, Vladimir Ozerov <voze...@gridgain.com>
> wrote:
>
> > I prefer the second. Composition over inheritance - this is how all our
> > configuration is crafted.
> >
> > E.g. we do not have "CacheConfiguration" and "
> > StoreEnabledCacheConfiguration".
> > Instead, we have "CacheConfiguration.setCacheStoreFactory".
> >
> > On Wed, Sep 20, 2017 at 2:46 PM, Alexey Goncharuk <
> > alexey.goncha...@gmail.com> wrote:
> >
> > > Reiterating this based on some feedback from PDS users.
> > >
> > > It might be confusing to configure persistence with "MemoryPolicy", so
> > > another approach is to deprecate the old names and introduce a new name
> > > "DataRegion" because it reflects the actual state when data is stored
> on
> > > disk and partially in memory. I have two options in mind, each of them
> > > looks acceptable to me, so I would like to have some feedback from the
> > > community. Old configuration names will be deprecated (but still be
> taken
> > > if used for backward compatibility). Note, that old names deprecation
> > > handles default configuration compatibility very nicely - current PDS
> > users
> > > will not need to change anything to keep everything working. The two
> > > options I mentioned are below:
> > >
> > >  * we have two separate classes for in-memory and persisted data
> regions,
> > > so the configuration would look like so:
> > >
> > > IgniteConfiguration cfg = new IgniteConfiguration();
> > >
> > > cfg.setDataRegionsConfiguration(new DataRegionsConfiguration()
> > >     .setDataRegions(
> > >         new MemoryDataRegion()
> > >             .setName("volatileCaches")
> > >             .setMaxMemorySize(...),
> > >         new PersistentDataRegion()
> > >             .setName("persistentCaches")
> > >             .setMaxMemorySize(...)
> > >             .setMaxDiskSize()));
> > >
> > > cfg.setPersistentStoreConfiguration(new PersistentStoreConfiguration()
> );
> > >
> > >
> > > * we have one class for data region configuration, but it will have a
> > > sub-bean for persistence configuration:
> > >
> > > IgniteConfiguration cfg = new IgniteConfiguration();
> > >
> > > cfg.setDataRegionsConfiguration(new DataRegionsConfiguration()
> > >     .setDataRegions(
> > >         new DataRegion()
> > >             .setName("volatileCaches")
> > >             .setMaxMemorySize(...),
> > >         new DataRegion()
> > >             .setName("persistentCaches")
> > >             .setMaxMemorySize(...),
> > >             .setPersistenceConfiguration(
> > >                 new DataRegionPersistenceConfiguration()
> > >                     .setMaxDiskSize(...))));
> > >
> > > cfg.setPersistentStoreConfiguration(new PersistentStoreConfiguration()
> );
> > >
> >
>

Reply via email to