Of course it does, Dmitriy! However as I suggested below, the feature should be 
optional. The current behavior (not requiring user classes on the server, etc.) 
would remain the default one.

Also, please realize that not everyone stores their data as POJOs or uses 
Ignite as a JDBC source -- the use cases that appear to have been the main 
focus of Ignite community lately.

Payloads with dynamic structures require more advanced mechanisms for indexing, 
for example, to avoid the overhead of duplicating the indexable fields as top 
level fields of the BinaryObjects. In cases where the cache sizes are in tens 
of millions of entries, the ability to generate index values on the fly rather 
than store them, would go a long way in terms of reducing memory utilization.

In Ignite community finds this feature generally useful, I'd be more than happy 
to contribute its implementation.

Regards
Andrey

________________________________
From: Dmitriy Setrakyan <dsetrak...@apache.org>
Sent: Monday, October 16, 2017 6:14 PM
To: dev@ignite.apache.org
Subject: Re: Indexing fields of non-POJO cache values

On Mon, Oct 16, 2017 at 12:35 PM, Andrey Kornev <andrewkor...@hotmail.com>
wrote:

> [Crossposting to the dev list]
>
> Alexey,
>
> Yes, something like that, where the "reference"/"alias" is expressed as a
> piece of Java code (as part of QueryEntity definition, perhaps) that is
> invoked by Ignite at the cache entry indexing time.
>
> My point is that rather than limiting indexable fields only to predefined
> POJO attributes (or BinaryObject fields) Ignite could adopt a more general
> approach by allowing users designate an arbitrary piece of code (a
> lambda/closure) to be used as an index value extractor. In such case, the
> current functionality (extracting index values from POJO attributes)
> becomes just a special case that's supported by Ignite out of the box.
>

Andrey, this would require deserialization on the server side. It would
also require that user classes are present on the server side. Both of this
scenarios Ignite tries to avoid.

Makes sense?

Reply via email to