By "locally executed callable" I meant something like this:

new JdbcCallable(...).call();

So it's not a network call and it's not even going through IgniteCompute.
It's just the logic is incapsulated in the callable to support remote
execution of the same logic.

But anyway, +1 to removing nodeId property. It doesn't make much sense with
the new implementation of JDBC.

-Val

On Mon, Dec 19, 2016 at 10:15 AM, Alexander Paschenko <
alexander.a.pasche...@gmail.com> wrote:

> When node is local, no network interaction occurs on query send. Would be
> shame otherwise :)
>
> — Alex
> 19 дек. 2016 г. 8:36 PM пользователь "Denis Magda" <dma...@apache.org>
> написал:
>
> > Dmitriy,
> >
> > According to Val and Alex P. explanations this happens when a specific
> > node id is set. I got confused by the code flow initially.
> >
> > —
> > Denis
> >
> > > On Dec 19, 2016, at 9:13 AM, Dmitriy Setrakyan <dsetrak...@apache.org>
> > wrote:
> > >
> > > Thanks, Alex.
> > >
> > > Can you clarify if the putAll(...) call is made directly, or from
> locally
> > > executed callable? According to Denis, "even single (non batched)
> updates
> > > or queries are sent as callables", which should be fixed in my view.
> > >
> > > D.
> > >
> > > On Mon, Dec 19, 2016 at 3:32 AM, Alexander Paschenko <
> > > alexander.a.pasche...@gmail.com> wrote:
> > >
> > >> Dima, Val,
> > >>
> > >> Introduction of updates has not changed public API at all (only
> > >> configuration, in some cases), so they work in this respect exactly
> > >> like SELECTs - by default they run on client node started by the
> > >> driver itself, but can be sent via the same callables mechanism to any
> > >> remote node by its id.
> > >>
> > >> So Dima, you're right, currently it's possible to send query to any
> > >> given node. And, at the same time, currently by default everything
> > >> works exactly like you want it to - that is, any MERGE, batched or
> > >> not, boils down to putAll, and by default this call happens locally.
> > >>
> > >> - Alex
> > >>
> > >> 2016-12-17 18:47 GMT+03:00 Dmitriy Setrakyan <dsetrak...@apache.org>:
> > >>> On Fri, Dec 16, 2016 at 9:53 PM, Valentin Kulichenko <
> > >>> valentin.kuliche...@gmail.com> wrote:
> > >>>
> > >>>> I'm not sure about updates, but can tell about how selects are
> > >> implemented
> > >>>> there. Basically, there is an option to execute the query on a
> > >> particular
> > >>>> node specified by ignite.jdbc.nodeId property. Not sure why we need
> > this
> > >>>> though, probably it's just leftover from the legacy version of the
> > >> driver
> > >>>> based on thin client.
> > >>>>
> > >>>> If the property is set, the callable is sent to a remote node. But
> if
> > >> it is
> > >>>> not, the same callable is created, but it is invoked directly on the
> > >>>> embedded client which is the behavior that you expect. And it's the
> > >> default
> > >>>> one.
> > >>>>
> > >>>>
> > >>> Ouch. If this is the reason, I would drop the nodeId property. I
> don't
> > >>> think it makes sense and it significantly slows down the
> > implementation.
> > >>>
> > >>>
> > >>>> -Val
> > >>>>
> > >>>> On Fri, Dec 16, 2016 at 7:51 PM, Denis Magda <dma...@apache.org>
> > wrote:
> > >>>>
> > >>>>> Frankly speaking, even single (non batched) updates or queries are
> > >> sent
> > >>>> as
> > >>>>> callables. This is what I see in the code.
> > >>>>> No idea what was the reason behind this design.
> > >>>>>
> > >>>>> Andrey G., Alex P. could you shed a light on this?
> > >>>>>
> > >>>>> —
> > >>>>> Denis
> > >>>>>
> > >>>>>> On Dec 16, 2016, at 3:08 PM, Dmitriy Setrakyan <
> > >> dsetrak...@apache.org>
> > >>>>> wrote:
> > >>>>>>
> > >>>>>> To my understanding, we are implementing JDBC batches by sending a
> > >>>>> callable
> > >>>>>> to another node. If we already have a client node on the JDBC
> driver
> > >>>>> side,
> > >>>>>> why not just issue a putAll(...) call from the client?
> > >>>>>>
> > >>>>>> D.
> > >>>>>>
> > >>>>>> On Fri, Dec 16, 2016 at 3:02 PM, Denis Magda <dma...@apache.org>
> > >>>> wrote:
> > >>>>>>
> > >>>>>>> Dmitriy,
> > >>>>>>>
> > >>>>>>> JDBC drivers spawns an Ignite client node and uses it for cluster
> > >>>>>>> connectivity and queries execution. Queries issued over the JDBC
> > >> are
> > >>>>> turned
> > >>>>>>> into SqlFieldsQueries and sent to the cluster in this form.
> > >>>>>>>
> > >>>>>>> ODBC driver works in a bit different way. It connects to the
> > >> cluster
> > >>>> via
> > >>>>>>> ODBC processor that needs to be running on one of the nodes:
> > >>>>>>> https://apacheignite.readme.io/docs/odbc-driver#cluster-
> > >> configuration
> > >>>> <
> > >>>>>>> https://apacheignite.readme.io/docs/odbc-driver#cluster-
> > >> configuration
> > >>>>>
> > >>>>>>>
> > >>>>>>> —
> > >>>>>>> Denis
> > >>>>>>>
> > >>>>>>>> On Dec 16, 2016, at 2:41 PM, Dmitriy Setrakyan <
> > >>>> dsetrak...@apache.org>
> > >>>>>>> wrote:
> > >>>>>>>>
> > >>>>>>>> Igniters,
> > >>>>>>>>
> > >>>>>>>> Can someone explain to me how Ignite executes SQL from JDBC and
> > >> ODBC
> > >>>>>>>> drivers? Do we start an Ignite client node on the driver side?
> Or
> > >> do
> > >>>> we
> > >>>>>>> use
> > >>>>>>>> some other protocol to send commands to one of the Ignite nodes?
> > >>>>>>>>
> > >>>>>>>> Thanks,
> > >>>>>>>> D.
> > >>>>>>>
> > >>>>>>>
> > >>>>>
> > >>>>>
> > >>>>
> > >>
> >
> >
>

Reply via email to