Seamless Ignite queries on Hibernate L2 cache

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Seamless Ignite queries on Hibernate L2 cache

Alexey Goncharuk
Igniters,

I was playing with Hibernate L2 cache and came across this limitation: even
though user entities are formally stored in Ignite cache, they are stored
in form of Hibernate CacheKey and CacheEntry, which makes it impossible to
use Ignite query mechanism over cached data.

On the other hand, all the required information to enable such queries is
either present in CacheEntry itself (such as field values and type name) or
can be obtained via Hibernate persister metadata. Since SessionFactory may
not be available on server nodes, we would need to store persister metadata
in a system cache first to make it available for indexing.

The idea still needs quite a bit of research, because currently we require
the structure of all the indexed types by the moment of cache creation,
however, given the ability to create caches on the fly, I think it is still
possible to implement and it will provide a great benefit and ease of use
for Hibernate users.

I summarized my thoughts in this ticket:
https://issues.apache.org/jira/browse/IGNITE-952

Thoughts/comments?

--AG
Reply | Threaded
Open this post in threaded view
|

Re: Seamless Ignite queries on Hibernate L2 cache

yzhdanov
Here are several points:

1. L2 cache may not contain all entries and query result may be
inconsistent (to say the least) with DB.
2. Join queries over L2 cache are very questionable - data consistency,
colocation are very hard to guarantee.
3. Maybe it is better to use query cache?
4. Or completely switch to key-value API with Hibernate store
implementation?

Thanks!


--Yakov

2015-05-29 3:38 GMT+03:00 Alexey Goncharuk <[hidden email]>:

> Igniters,
>
> I was playing with Hibernate L2 cache and came across this limitation: even
> though user entities are formally stored in Ignite cache, they are stored
> in form of Hibernate CacheKey and CacheEntry, which makes it impossible to
> use Ignite query mechanism over cached data.
>
> On the other hand, all the required information to enable such queries is
> either present in CacheEntry itself (such as field values and type name) or
> can be obtained via Hibernate persister metadata. Since SessionFactory may
> not be available on server nodes, we would need to store persister metadata
> in a system cache first to make it available for indexing.
>
> The idea still needs quite a bit of research, because currently we require
> the structure of all the indexed types by the moment of cache creation,
> however, given the ability to create caches on the fly, I think it is still
> possible to implement and it will provide a great benefit and ease of use
> for Hibernate users.
>
> I summarized my thoughts in this ticket:
> https://issues.apache.org/jira/browse/IGNITE-952
>
> Thoughts/comments?
>
> --AG
>