Ah, the trick you're missing is that the "incr" REST API doesn't (directly) use a cache. Instead it uses an Atomic Sequence: https://ignite.apache.org/docs/latest/data-structures/atomic-types
On Wed, 14 Feb 2024 at 17:38, Louis C <[email protected]> wrote: > Hello, > > Thanks for your answers Igor and Stephen. > Igor, to answer your question to the second point I used the same term as > used in the Rest API, but indeed it more or less what you said (even if > in this API we do not have to retrieve explicitely the base value). > Best regards, > Louis > ------------------------------ > *De :* Stephen Darlington <[email protected]> > *Envoyé :* mardi 13 février 2024 11:22 > *À :* [email protected] <[email protected]> > *Objet :* Re: Question about REST/C++ client > > The easy answer to the "50 gets in parallel" is to use GetAll. > > On Tue, 13 Feb 2024 at 09:54, Igor Sapego <[email protected]> wrote: > > 1. There is no such API. Seems like a weird error in documentation. We > will fix it. If you want to make 50 gets in parallel, I think it's better > to run 50 clients with the current API. You can use the same client too, > but it may be slower, depending on how many nodes you have in a cluster. > 2. What do you mean by increments? Do you mean getting value, modifying it > and putting it back? > 3. Atomics are faster in most cases (ReplaceIfEquals). Yes, there is a > real overhead for transactions, though how big it is depends on the > transaction isolation level. > > Best Regards, > Igor > > > On Thu, Feb 8, 2024 at 5:05 PM Louis C <[email protected]> wrote: > > > Hello, > > I am trying to use/test Apache Ignite for a particular use case. For > background reference, my use case of Ignite is to do 100Ks (to begin with) > of "Gets" and of "increments" of values that will be stored in probably > multiple caches in Apache Ignite. > I read the Ignite documentation, but I couldn't figure out things in the > C++ API side. > > > 1. I have read in the documentation > > <https://ignite.apache.org/docs/latest/key-value-api/basic-cache-operations> > > <https://ignite.apache.org/docs/latest/key-value-api/basic-cache-operations>that > there is a "GetAsync" method in C++ client. But I could not find it in the > code. Is it a deprecated API ? If so, let's imagine I want to do multiple > calls in parallel (let's say 50 for instance), how can I achieve this ? Can > I just call multiple "Get"s in parallel in my threads without any problem ? > Must I create a client for each thread ? There does not seem to be anything > related to thread safety of these methods in the doc... > 2. Does doing 100K "increments" of values in a cache seem achievable > on an Ignite cluster of a single node (let's say the CPU is a last gen i7 > with 8 physical cores)? The problem that I have is that I have very good > performances (+100K "gets") using the batch methods of the Rest API, but no > batch method exist for "increments", and the overhead of each http call > cripples the performance to a few 1000s/s. What would be the "best" way of > achieving this (preferably in C++ or Rest API, but I am open to Java too )? > 3. Related but a bit different : if I want to add a value to an > existing one in the store (doing an "increment"), would it be (in general) > faster to do it using the "transaction" mode or to use the > "ReplaceIfEquals" methods (in general I do not update the same values in > the same time) ? Is there a real overhead for transactions ? > > > Thanks in advance > > Louis > >
