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