If we compare native and 3rd party persistence (cache store):
 - Updating and reading data from DBMS is slower in most scenarios.
 - Non-clustered DBMS is a single point of failure, it is hard to scale.
 - Ignite SQL does not extend to External (3rd party persitsence) Cache
Store (and queries ignore DBMS changes).


Which is why I am wondering if Native persistence is applicable in this
case decribed by Vyacheslav.

пт, 24 нояб. 2017 г. в 12:23, Evgeniy Ignatiev <yevgeniy.ignat...@gmail.com
>:

> Sorry linked the wrong page, the latter url is not the example.
>
>
> On 11/24/2017 1:12 PM, Evgeniy Ignatiev wrote:
> > By the way I remembered that there is an annotation CacheLocalStore
> > for marking exactly the CacheStore that is not distributed -
> >
> http://apache-ignite-developers.2346864.n4.nabble.com/CacheLocalStore-td734.html
> > - here is short explanation and this -
> >
> https://github.com/gridgain/gridgain-advanced-examples/blob/master/src/main/java/org/gridgain/examples/localstore/LocalRecoverableStoreExample.java
> > - is example implementation.
> >
> >
> > On 11/23/2017 4:42 PM, Dmitry Pavlov wrote:
> >> Hi Evgeniy,
> >>
> >> Technically it is, of course, possible, but still
> >> - it is not simple at all
> >> - IgniteCacheOffheapManager & IgniteWriteAheadLogManager are internal
> >> APIs,
> >> and community can change any APIs here in any time.
> >>
> >> Vyacheslav,
> >>
> >> Why Ignite Native Persistence is not suitable for this case?
> >>
> >> Sincerely,
> >> Dmitriy Pavlov
> >>
> >> чт, 23 нояб. 2017 г. в 11:01, Evgeniy Ignatiev
> >> <yevgeniy.ignat...@gmail.com
> >>> :
> >>> As far as I remember, last webinar I heard on Ignite Native Persistence
> >>> - it actually exposes some interfaces like IgniteWriteAheadLogManager,
> >>> PageStore, PageStoreManager, etc., with the file-based implementation
> >>> provided by Ignite being only one possible approach, and users can
> >>> create their own Native Persistence variations. At least that what has
> >>> been said by Denis Magda at that time.
> >>>
> >>> May be creating own implementation of Ignite Native Persistence rather
> >>> than CacheStore based persistence is an option here?
> >>>
> >>> On 11/23/2017 2:23 AM, Valentin Kulichenko wrote:
> >>>> Vyacheslav,
> >>>>
> >>>> There is no way to do this and I'm not sure why you want to do this.
> >>> Ignite
> >>>> persistence was developed to solve exactly the problems you're
> >>> describing.
> >>>> Just use it :)
> >>>>
> >>>> -Val
> >>>>
> >>>> On Wed, Nov 22, 2017 at 12:36 AM, Vyacheslav Daradur <
> >>> daradu...@gmail.com>
> >>>> wrote:
> >>>>
> >>>>> Valentin, Evgeniy thanks for your help!
> >>>>>
> >>>>> Valentin, unfortunately, you are right.
> >>>>>
> >>>>> I've tested that behavior in the following scenario:
> >>>>> 1. Started N nodes and filled it with data
> >>>>> 2. Shutdown one node
> >>>>> 3. Called rebalance directly and waited to finish
> >>>>> 4. Stopped all other (N-1) nodes
> >>>>> 5. Started N-1 nodes and validated data
> >>>>>
> >>>>> Validation didn't pass - data consistency was broken. As you say it
> >>>>> works only on stable topology.
> >>>>> As far as I understand Ignite doesn't manage to rebalance in
> >>>>> underlying storage, it became clear from tests and your description
> >>>>> that CacheStore design assumes that the underlying storage is shared
> >>>>> by all the
> >>>>> nodes in the topology.
> >>>>>
> >>>>> I understand that PDS is the best option in case of distributing
> >>>>> persistence.
> >>>>> However, could you point me the best way to override default
> >>>>> rebalance
> >>>>> behavior?
> >>>>> Maybe it's possible to extend it by a custom plugin?
> >>>>>
> >>>>> On Wed, Nov 22, 2017 at 1:35 AM, Valentin Kulichenko
> >>>>> <valentin.kuliche...@gmail.com> wrote:
> >>>>>> Vyacheslav,
> >>>>>>
> >>>>>> If you want the persistence storage to be *distributed*, then using
> >>>>> Ignite
> >>>>>> persistence would be the easiest thing to do anyway, even if you
> >>>>>> don't
> >>>>> need
> >>>>>> all its features.
> >>>>>>
> >>>>>> CacheStore indeed can be updated from different nodes with different
> >>>>> nodes,
> >>>>>> but the problem is in coordination. If instances of the store are
> >>>>>> not
> >>>>> aware
> >>>>>> of each other, it's really hard to handle all rebalancing cases.
> >>>>>> Such
> >>>>>> solution will work only on stable topology.
> >>>>>>
> >>>>>> Having said that, if you can have one instance of RocksDB (or any
> >>>>>> other
> >>>>> DB
> >>>>>> for that matter) that is accessed via network by all nodes, then
> >>>>>> it's
> >>>>> also
> >>>>>> an option. But in this case storage is not distributed.
> >>>>>>
> >>>>>> -Val
> >>>>>>
> >>>>>> On Tue, Nov 21, 2017 at 4:37 AM, Vyacheslav Daradur <
> >>> daradu...@gmail.com
> >>>>>> wrote:
> >>>>>>
> >>>>>>> Valentin,
> >>>>>>>
> >>>>>>>>> Why don't you use Ignite persistence [1]?
> >>>>>>> I have a use case for one of the projects that need the RAM on disk
> >>>>>>> replication only. All PDS features aren't needed.
> >>>>>>> During the first assessment, persist to RocksDB works faster.
> >>>>>>>
> >>>>>>>>> CacheStore design assumes that the underlying storage is
> >>>>>>>>> shared by
> >>>>> all
> >>>>>>> the nodes in topology.
> >>>>>>> This is the very important note.
> >>>>>>> I'm a bit confused because I've thought that each node in cluster
> >>>>>>> persists partitions for which the node is either primary or backup
> >>>>>>> like in PDS.
> >>>>>>>
> >>>>>>> My RocksDB implementation supports working with one DB instance
> >>>>>>> which
> >>>>>>> shared by all the nodes in the topology, but it would make no
> >>>>>>> sense of
> >>>>>>> using embedded fast storage.
> >>>>>>>
> >>>>>>> Is there any link to a detailed description of CacheStorage
> >>>>>>> design or
> >>>>>>> any other advice?
> >>>>>>> Thanks in advance.
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Fri, Nov 17, 2017 at 9:07 PM, Valentin Kulichenko
> >>>>>>> <valentin.kuliche...@gmail.com> wrote:
> >>>>>>>> Vyacheslav,
> >>>>>>>>
> >>>>>>>> CacheStore design assumes that the underlying storage is shared by
> >>> all
> >>>>>>> the
> >>>>>>>> nodes in topology. Even if you delay rebalancing on node stop
> >>>>>>>> (which
> >>>>> is
> >>>>>>>> possible via CacheConfiguration#rebalanceDelay), I doubt it will
> >>>>> solve
> >>>>>>> all
> >>>>>>>> your consistency issues.
> >>>>>>>>
> >>>>>>>> Why don't you use Ignite persistence [1]?
> >>>>>>>>
> >>>>>>>> [1]
> >>>>>>>> https://apacheignite.readme.io/docs/distributed-persistent-store
> >>>>>>>>
> >>>>>>>> -Val
> >>>>>>>>
> >>>>>>>> On Fri, Nov 17, 2017 at 4:24 AM, Vyacheslav Daradur <
> >>>>> daradu...@gmail.com
> >>>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> Hi Andrey! Thank you for answering.
> >>>>>>>>>
> >>>>>>>>>>> Key to partition mapping shouldn't depends on topology, and
> >>>>> shouldn't
> >>>>>>>>> changed unstable topology.
> >>>>>>>>> Key to partition mapping doesn't depend on topology in my test
> >>>>>>>>> affinity function. It only depends on partitions number.
> >>>>>>>>> But partition to node mapping depends on topology and at cluster
> >>>>> stop,
> >>>>>>>>> when one node left topology, some partitions may be moved to
> >>>>>>>>> other
> >>>>>>>>> nodes.
> >>>>>>>>>
> >>>>>>>>>>> Does all nodes share same RockDB database or each node has
> >>>>>>>>>>> its own
> >>>>>>> copy?
> >>>>>>>>> Each Ignite node has own RocksDB instance.
> >>>>>>>>>
> >>>>>>>>>>> Would you please share configuration?
> >>>>>>>>> It's pretty simple:
> >>>>>>>>>           IgniteConfiguration cfg = new IgniteConfiguration();
> >>>>>>>>>           cfg.setIgniteInstanceName(instanceName);
> >>>>>>>>>
> >>>>>>>>>           CacheConfiguration<Integer, String> cacheCfg = new
> >>>>>>>>> CacheConfiguration<>();
> >>>>>>>>>           cacheCfg.setName(TEST_CACHE_NAME);
> >>>>>>>>> cacheCfg.setCacheMode(CacheMode.PARTITIONED);
> >>>>>>>>>           cacheCfg.setWriteSynchronizationMode(
> >>>>>>>>> CacheWriteSynchronizationMode.PRIMARY_SYNC);
> >>>>>>>>>           cacheCfg.setBackups(1);
> >>>>>>>>>           cacheCfg.setAffinity(new
> >>>>>>>>> TestAffinityFunction(partitionsNumber, backupsNumber));
> >>>>>>>>>           cacheCfg.setWriteThrough(true);
> >>>>>>>>>           cacheCfg.setReadThrough(true);
> >>>>>>>>> cacheCfg.setRebalanceMode(CacheRebalanceMode.SYNC);
> >>>>>>>>>           cacheCfg.setCacheStoreFactory(new
> >>>>>>>>> RocksDBCacheStoreFactory<>("/test/path/to/persistence",
> >>>>>>>>> TEST_CACHE_NAME, cfg));
> >>>>>>>>>
> >>>>>>>>>           cfg.setCacheConfiguration(cacheCfg);
> >>>>>>>>>
> >>>>>>>>> Could you give me advice on places which I need to pay attention?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Wed, Nov 15, 2017 at 3:02 PM, Andrey Mashenkov
> >>>>>>>>> <andrey.mashen...@gmail.com> wrote:
> >>>>>>>>>> Hi Vyacheslav,
> >>>>>>>>>>
> >>>>>>>>>> Key to partition mapping shouldn't depends on topology, and
> >>>>> shouldn't
> >>>>>>>>>> changed unstable topology.
> >>>>>>>>>> Looks like you've missed smth.
> >>>>>>>>>>
> >>>>>>>>>> Would you please share configuration?
> >>>>>>>>>> Does all nodes share same RockDB database or each node has
> >>>>>>>>>> its own
> >>>>>>> copy?
> >>>>>>>>>>
> >>>>>>>>>> On Wed, Nov 15, 2017 at 12:22 AM, Vyacheslav Daradur <
> >>>>>>>>> daradu...@gmail.com>
> >>>>>>>>>> wrote:
> >>>>>>>>>>
> >>>>>>>>>>> Hi, Igniters!
> >>>>>>>>>>>
> >>>>>>>>>>> I’m using partitioned Ignite cache with RocksDB as 3rd party
> >>>>>>> persistence
> >>>>>>>>>>> store.
> >>>>>>>>>>> I've got an issue: if cache rebalancing is switched on, then
> >>>>>>>>>>> it’s
> >>>>>>>>>>> possible to lose some data.
> >>>>>>>>>>>
> >>>>>>>>>>> Basic scenario:
> >>>>>>>>>>> 1) Start Ignite cluster and fill a cache with RocksDB
> >>>>>>>>>>> persistence;
> >>>>>>>>>>> 2) Stop all nodes
> >>>>>>>>>>> 3) Start Ignite cluster and validate data
> >>>>>>>>>>>
> >>>>>>>>>>> This works fine while rebalancing is switched off.
> >>>>>>>>>>>
> >>>>>>>>>>> If rebalancing switched on: when I call Ignition#stopAll, some
> >>>>> nodes
> >>>>>>>>>>> go down sequentially and while one node having gone down
> >>>>>>>>>>> another
> >>>>>>> start
> >>>>>>>>>>> rebalancing. When nodes started affinity function works with a
> >>>>> full
> >>>>>>>>>>> set of nodes and may define a wrong partition for a key because
> >>>>> the
> >>>>>>>>>>> previous state was changed at rebalancing.
> >>>>>>>>>>>
> >>>>>>>>>>> Maybe I'm doing something wrong. How can I avoid rebalancing
> >>>>>>>>>>> while
> >>>>>>>>>>> stopping all nodes in the cluster?
> >>>>>>>>>>>
> >>>>>>>>>>> Could you give me any advice, please?
> >>>>>>>>>>>
> >>>>>>>>>>> --
> >>>>>>>>>>> Best Regards, Vyacheslav D.
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> --
> >>>>>>>>>> Best regards,
> >>>>>>>>>> Andrey V. Mashenkov
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Best Regards, Vyacheslav D.
> >>>>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Best Regards, Vyacheslav D.
> >>>>>>>
> >>>>>
> >>>>> --
> >>>>> Best Regards, Vyacheslav D.
> >>>>>
> >>>
> >
>
>

Reply via email to