I like it.

Alexey G, can you please chime in?

D.

On Fri, Sep 22, 2017 at 11:33 AM, Vladimir Ozerov <voze...@gridgain.com>
wrote:

> 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