[JBoss JIRA] (ISPN-5393) Support mixed indexed and non-indexed fields in DSL based queries
by Adrian Nistor (JIRA)
Adrian Nistor created ISPN-5393:
-----------------------------------
Summary: Support mixed indexed and non-indexed fields in DSL based queries
Key: ISPN-5393
URL: https://issues.jboss.org/browse/ISPN-5393
Project: Infinispan
Issue Type: Enhancement
Affects Versions: 7.0.0.Final
Reporter: Adrian Nistor
Assignee: Adrian Nistor
If a query uses both indexed and non-indexed fields we should be able to execute it in two phases. A fist less selective query on the index and then post process it by reapplying the whole filter again to results of the first phase.
This should be more efficient than completely ignoring the indexed fields and executing the non-indexed query on the whole data set.
A possible idea to derive the query to be executed in first phase is to apply the Boole-Shannon expansion theorem ([http://en.wikipedia.org/wiki/Boole%27s_expansion_theorem]).
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
10 years, 11 months
[JBoss JIRA] (ISPN-5357) Hot Rod protocol 3.0
by Galder Zamarreño (JIRA)
[ https://issues.jboss.org/browse/ISPN-5357?page=com.atlassian.jira.plugin.... ]
Galder Zamarreño commented on ISPN-5357:
----------------------------------------
Some interesting ideas in CBOR encoding too: http://tools.ietf.org/html/rfc7049
> Hot Rod protocol 3.0
> --------------------
>
> Key: ISPN-5357
> URL: https://issues.jboss.org/browse/ISPN-5357
> Project: Infinispan
> Issue Type: Enhancement
> Reporter: Galder Zamarreño
>
> A binary protocol rethink is needed to take better advantage of CPUs and buffering. This is based on the ideas of Martin Thompson's Simple Binary Encoding [blog post|http://mechanical-sympathy.blogspot.cz/2014/05/simple-binary-encoding.html]
> In essence, we need to move Hot Rod protocol towards having mostly fixed size fields, hence getting rid of `vInt` and `vLong` formats which although safe some bytes, they hinder long stream reading patterns.
> An optional part here would be whether to consider using SBE directly, but this JIRA should be mostly oriented at making sure we have a protocol that can be read fast and efficiently.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
10 years, 11 months
[JBoss JIRA] (ISPN-5222) Perform Remote Filtering/Conversion in a single step
by Adrian Nistor (JIRA)
[ https://issues.jboss.org/browse/ISPN-5222?page=com.atlassian.jira.plugin.... ]
Adrian Nistor commented on ISPN-5222:
-------------------------------------
[~galder.zamarreno] I'm curious how are you planning to solve this.
> Perform Remote Filtering/Conversion in a single step
> ----------------------------------------------------
>
> Key: ISPN-5222
> URL: https://issues.jboss.org/browse/ISPN-5222
> Project: Infinispan
> Issue Type: Feature Request
> Components: Listeners
> Affects Versions: 7.1.0.Final
> Reporter: Stylianos Koussouris
> Assignee: Galder Zamarreño
> Fix For: 7.2.0.Final
>
>
> I want to have filter and convert take place in one step ie. do filtering and conversion applied to REMOTE LISTENERS in one step
> a) I define CacheEventConverterFactory which implements CacheEventConverterFactory, Serializable
> b) I register on the server org.infinispan.notifications.cachelistener.filter.CacheEventConverterFactory the cache event converter
> which returns (CacheEventConverter<K, V, C>) new SharesDynamicFilterConverter(params);
> c) I then define CacheEventFilterFactory which implements CacheEventFilterFactory, Serializable {
> and returns(CacheEventFilter<K, V>) new SharesDynamicFilterConverter(params);
> d) The CustomeDynamicFilterConverter extends AbstractCacheEventFilterConverter<String, Share, ShareProgress> implements Serializable {
> and has the implementation of
> public Share filterAndConvert(String key, Share oldValue, Metadata oldMetadata, Share newValue, Metadata newMetadata, EventType eventType) {
> e) finally I define a listener binding it to the filter and converter
> @ClientListener(filterFactoryName = "custom-dynamic-filter",
> converterFactoryName = "custom-dynamic-converter",
> includeCurrentState = true)
> and register it along with params for the filter on the client side
> cache.addClientListener(listener, new Object[]{"NYX", 50f}, null);
> The result of this is that certainly both accept and convert methods are run and both call the same filterAndConvert method on SharesDynamicFilterConverter
> However, this is not desirable as I don't want 2 steps which will effectively do the same thing but a single step. TBH I am not happy with the solution but what I did (in absence of better understanding of how to combine the steps -NOTE there is no single Factory for both Converter and Filter and even if it did we would probably have to implement accept & convert inside so the end result would have been the same)
> So what I did was to change the last step
> ie.
> e) finally I define a listener binding ONLY the converter
> @ClientListener(converterFactoryName = "murex-dynamic-converter", includeCurrentState = true)
> and register it along with params ONLY for the converter on the client side
> cache.addClientListener(listener, null, new Object[]{"NYX", 50f});
> This works as it actually does the filter during the convert step BUT is there another way and am I missing something? If not this would be a feature request
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
10 years, 11 months