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 <[email protected]>
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 <[email protected]>
> 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 <
> > [email protected]> 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()
> );
> > >
> >
>