Ivan,

I was involved in a couple of such use cases personally, so, that's not my
imagination ;) Even more, as far as I remember, the primary reason why we
improved our affinityRuns ensuring no partition is purged from a node until
a task is completed is because many users were running local SQL from
compute tasks and needed a guarantee that SQL will always return a correct
result set.

-
Denis


On Fri, Nov 1, 2019 at 10:01 AM Ivan Pavlukhin <vololo...@gmail.com> wrote:

> Denis,
>
> Would be nice to see real use-cases of affinity call + local SQL
> combination. Generally, new engine will be able to infer collocation
> resulting in the same collocated execution automatically.
>
> пт, 1 нояб. 2019 г. в 19:11, Denis Magda <dma...@apache.org>:
> >
> > Hi Igor,
> >
> > Local queries feature is broadly used together with affinity-based
> compute
> > tasks:
> >
> https://apacheignite.readme.io/docs/collocate-compute-and-data#section-affinity-call-and-run-methods
> >
> > The use case is as follows. The user knows that all required data needed
> > for computation is collocated, and SQL is used as an advanced API for
> data
> > retrieval from the computation code. The affinity task ensures that
> > partitions won't be discarded from the node(s) if the topology changes
> > during the task execution and, thus, it's safe to run SQL locally
> skipping
> > distributed phases.
> >
> > The combination of affinity compute tasks with local SQL is a real and
> > valuable use case, and this is what we need to support with Calcite. Do
> you
> > see any challenges?
> >
> > -
> > Denis
> >
> >
> > On Fri, Nov 1, 2019 at 8:46 AM Roman Kondakov <kondako...@mail.ru.invalid
> >
> > wrote:
> >
> > > Hi Igor!
> > >
> > > IMO we need to maintain the backward compatibility between old and new
> > > query engines as much as possible. And therefore we shouldn't change
> the
> > > behavior of local queries.
> > >
> > > So, for local queries Calcite's planner shouldn't consider the
> > > distribution trait at all.
> > >
> > >
> > > --
> > > Kind Regards
> > > Roman Kondakov
> > >
> > > On 01.11.2019 17:07, Seliverstov Igor wrote:
> > > > Hi Igniters,
> > > >
> > > > Working on new generation of Ignite SQL I faced a question: «Do we
> need
> > > local queries at all and, if so, what semantic they should have?».
> > > >
> > > > Current planing flow consists of next steps:
> > > >
> > > > 1) Parsing SQL to AST
> > > > 2) Validating AST (against Schema)
> > > > 3) Optimizing (Building execution graph)
> > > > 4) Splitting (into query fragments which executes on target nodes)
> > > > 5) Mapping (query fragments to nodes/partitions)
> > > >
> > > > At last step we check that all Fragment sources (a table or result)
> have
> > > the same distribution (in other words all sources have to be
> co-located)
> > > >
> > > > Planner and Splitter guarantee that all caches in a Fragment are
> > > co-located, an Exchange is produced otherwise. But if we force local
> > > execution we cannot produce Exchanges, that means we may face two
> > > non-co-located caches inside a single query fragment (result of local
> query
> > > planning is a single query fragment). So, we cannot pass the check.
> > > >
> > > > Should we throw an exception or omit the check for local query
> planning
> > > or prohibit local queries at all?
> > > >
> > > > Your thoughts?
> > > >
> > > > Regards,
> > > > Igor
> > >
>
>
>
> --
> Best regards,
> Ivan Pavlukhin
>

Reply via email to