On Feb 26, 2014, at 2:13 PM, Dan Berindei <dan.berin...@gmail.com> wrote:

> 
> 
> 
> On Wed, Feb 26, 2014 at 3:12 PM, Mircea Markus <mmar...@redhat.com> wrote:
> 
> On Feb 25, 2014, at 5:08 PM, Sanne Grinovero <sa...@infinispan.org> wrote:
> 
> > There also is the opposite problem to be considered, as Emmanuel
> > suggested on 11/04/2012:
> > you can't forbid the user to store the same object (same type and same
> > id) in two different caches, where each Cache might be using different
> > indexing options.
> >
> > If the "search service" is a global concept, and you run a query which
> > matches object X, we'll return it to the user but he won't be able to
> > figure out from which cache it's being sourced: is that ok?
> 
> Can't the user figure that out based on the way the query is built?
> I mean the problem is similar with the databases: if address is both a table 
> and an column in the USER table, then it's the query (select) that determines 
> where from the address is returned.
> 
> You mean the user should specify the cache name(s) when building the query?

yes

> 
> With a database you have to go a bit out of your way to select from more than 
> one table at a time, normally you have just one primary table that you select 
> from and the others are just to help you filter and transform that table. You 
> also have to add some information about the source table yourself if you need 
> it, otherwise the DB won't tell you what table the results are coming from:
> 
> SELECT "table1" as source, id FROM table1
> UNION ALL
> SELECT "table2" as source, id FROM table2
> 
> Adrian tells our current query API doesn't allow us to do projections with 
> synthetic columns. On the other hand, we need to extend the current API to 
> give us the entry key anyway, so it would be easy to extend it to give us the 
> name of the cache as well.
> 
> 
> >
> > Ultimately this implies a query might return the same object X in
> > multiple positions in the result list of the query; for example it
> > might be the top result according to some criteria but also be the 5th
> > result because of how it was indexed in a different case: maybe
> > someone will find good use for this "capability" but I see it
> > primarily as a source of confusion.
> 
> Curious if this cannot be source of data can/cannot be specified within the 
> query.
> 
> Right, the user should be able to scope a search to a single cache, or maybe 
> to multiple caches, even if there is only one global index.
> 
> But I think the same object can already be inserted twice in the same cache, 
> only with a different key, so returning duplicates from a query is something 
> the user already has to cope with.
> 
> 
> > Finally, if we move the search service as a global component, there
> > might be an impact in how we explain security: an ACL filter applied
> > on one cache - or the index metadata produced by that cache - might
> > not be applied in the same way by an entity being matched through a
> > second cache.
> > Not least a user's permission to access one cache (or not) will affect
> > his results in a rather complex way.
> 
> I'll let Tristan comment more on this, but is this really different from an 
> SQL database where you grant access on individual tables and run a query 
> involving multiple of them?
> 
> The difference would be that in a DB each table will have its own index(es), 
> so they only have to check the permissions once and not for every row. 
> 
> OTOH, if we plan to support key-level permissions, that would require 
> checking the permissions on each search result anyway, so this wouldn't cost 
> us anything.
>  
> 
> >
> > I'm wondering if we need to prevent such situations.
> >
> > Sanne
> >
> > On 25 February 2014 16:24, Mircea Markus <mmar...@redhat.com> wrote:
> >>
> >> On Feb 25, 2014, at 3:46 PM, Adrian Nistor <anis...@gmail.com> wrote:
> >>
> >>> They can do what they please. Either put multiple types in one basket or 
> >>> put them in separate caches (one type per cache). But allowing / 
> >>> recommending is one thing, mandating it is a different story.
> >>>
> >>> There's no reason to forbid _any_ of these scenarios / mandate one over 
> >>> the other! There was previously in this thread some suggestion of 
> >>> mandating the one type per cache usage. -1 for it
> >>
> >> Agreed. I actually don't see how we can enforce people that declare 
> >> Cache<Object,Object> not put whatever they want in it. Also makes total 
> >> sense for smaller caches as it is easy to set up etc.
> >> The debate in this email, the way I understood it, was: are/should people 
> >> using multiple caches for storing data? If yes we should consider querying 
> >> functionality spreading over multiple caches.
> >>
> >>>
> >>>
> >>>
> >>> On Tue, Feb 25, 2014 at 5:08 PM, Mircea Markus <mmar...@redhat.com> wrote:
> >>>
> >>> On Feb 25, 2014, at 9:28 AM, Emmanuel Bernard <emman...@hibernate.org> 
> >>> wrote:
> >>>
> >>>>> On 24 févr. 2014, at 17:39, Mircea Markus <mmar...@redhat.com> wrote:
> >>>>>
> >>>>>
> >>>>>> On Feb 17, 2014, at 10:13 PM, Emmanuel Bernard 
> >>>>>> <emman...@hibernate.org> wrote:
> >>>>>>
> >>>>>> By the way, Mircea, Sanne and I had quite a long discussion about this 
> >>>>>> one and the idea of one cache per entity. It turns out that the right 
> >>>>>> (as in easy) solution does involve a higher level programming model 
> >>>>>> like OGM provides. You can simulate it yourself using the Infinispan 
> >>>>>> APIs but it is just cumbersome.
> >>>>>
> >>>>> Curious to hear the whole story :-)
> >>>>> We cannot mandate all the suers to use OGM though, one of the reasons 
> >>>>> being OGM is not platform independent (hotrod).
> >>>>
> >>>> Then solve all the issues I have raised with a magic wand and come back 
> >>>> to me when you have done it, I'm interested.
> >>>
> >>> People are going to use infinispan with one cache per entity, because it 
> >>> makes sense:
> >>> - different config (repl/dist | persistent/non-persistent) for different 
> >>> data types
> >>> - have map/reduce tasks running only the Person entires not on Dog as 
> >>> well, when you want to select (Person) where age > 18
> >>> I don't see a reason to forbid this, on the contrary. The way I see it 
> >>> the relation between (OGM, ISPN) <=> (Hibernate, JDBC). Indeed OGM would 
> >>> be a better abstraction and should be recommended as such for the Java 
> >>> clients, but ultimately we're a general purpose storage engine that is 
> >>> available to different platforms as well.
> >>>
> >>>
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

Cheers,
-- 
Mircea Markus
Infinispan lead (www.infinispan.org)





_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to