If we put them in separate regions, we'll have the overhead of looking up
in two regions added to each and every operation, and the overhead of
creating all these regions.

If we really wanted to we could have some threshold at which we spill
collections over into their own regions, and have something like the best
of both worlds. It's more complex, though, and I don't know how many people
actually use truly huge collections.

On Tue, Feb 14, 2017 at 4:21 PM, Hitesh Khamesra <
hitesh...@yahoo.com.invalid> wrote:

> Jason/Dan: Sorry to hear about that. But both of you have asked the right
> question.
> it depends on your use-case(item 2,3,4,5) . For example "hashes" can be
> use to define key-value pair or java bean. In this case  probably it is
> better to keep that hash at region-entry level.  But if you want to know
> top 10 tweets which are trending then probably you want use
> partition-region for "sorted-set".
>
>
>       From: Jason Huynh <jhu...@pivotal.io>
>  To: dev@geode.apache.org; "u...@geode.apache.org" <u...@geode.apache.org>;
> Hitesh Khamesra <hitesh...@yahoo.com>
>  Sent: Tuesday, February 14, 2017 3:15 PM
>  Subject: Re: GeodeRedisAdapter improvments/feedback
>
> Hi Hitesh,
>
> Not sure about everyone else, but I had a hard time reading this,  however
> I think I figured out what you were describing... the only part I still am
> unsure about is  Feedback/vote: both behaviour is desirable.  Do you mean
> you want feedback and voting on whether both behaviors are desired?  As in
> old implementation and new implementation?
>
> 2,3,4)  The new implementation would mean all the data for a specific data
> structure is contained in a single bucket.  So the individual data
> structures are not quite scalable.  How would you allow scaling of a single
> data structure?
>
> On Tue, Feb 14, 2017 at 3:05 PM Real Wes <thereal...@outlook.com> wrote:
>
> > In what format do you want the feedback Hitesh?  For now I’ll just
> comment:
> >
> > 1. Redis Type String
> > No comments except that a future Geode value-add would be to extend the
> > Jedis client so that the K/V’s are not compressed. In this way OQL and CQ
> > will work.  The tradeoff of this is that the data cannot be read by a
> > native redis client but for Geode users it’s great. Call the new client
> > Geodis.
> >
> > 2. List/ Hash/ Set/ SortedSet
> > Creating a separate region for each creates a constraint that the keys
> are
> > limited to the characters for region names, which are A-z/0-9/ - and _.
> > Everything else is out. Redis users might start asking questions why
> their
> > list named ++^^/## throws an error. Your suggestion to make it a key
> rather
> > than a region solves this. Furthermore, creating a new region every time
> a
> > new Redis collection is created is going to be slow. I’m not sure why a
> > region was created but I’m sure it made sense to the developer at the
> time.
> >
> > 7. Default Config
> > Can’t we configure a gfsh option to default to the region types we want?
> > Customer A will want PARTITION but Customer B will want
> > PARTITION_REDUNDANT_EXPIRATION_PERSISTENT.  I wonder if we can consider
> a
> > geode> create region —redisType=PARTITION_REDUNDANT_EXPIRATION_
> PERSISTENT
> > that makes _all_ Redis regions of that type?
> >
> >
> >
> > On Feb 14, 2017, at 5:36 PM, Hitesh Khamesra <hitesh...@yahoo.com
> <mailto:
> > hitesh...@yahoo.com>> wrote:
> >
> > Current GeodeRedisAdapter implementation is based on
> > https://cwiki.apache.org/confluence/display/GEODE/
> Geode+Redis+Adapter+Proposal
> > .
> > We are looking for some feedback on Redis commands and their mapping to
> > geode region.
> >
> > 1. Redis Type String
> >  a. Usage Set k1 v1
> >  b. Current implementation creates "STRING_REGION" geode-partition-region
> > upfront
> >  c. This k1/v1 are geode-region key/value
> >  d. Any feedback?
> >
> > 2. List Type
> >  a. usage "rpush mylist A"
> >  b. Current implementation maps each list to geode-partition-region(i.e.
> > mylist is geode-partition-region); with the ability to get item from
> > head/tail
> >  c. Feedback/vote
> >      -- List type operation at region-entry level;
> >      -- region-key = "mylist"
> >      -- region-value = Arraylist (will support all redis list ops)
> >  d. Feedback/vote: both behavior is desirable
> >
> >
> > 3. Hashes
> >  a. this represents field-value or java bean object
> >  b. usage "hmset user1000 username antirez birthyear 1977 verified 1"
> >  c. Current implementation maps each hashes to
> > geode-partition-region(i.e. user1000 is geode-partition-region)
> >  d. Feedback/vote
> >    -- Should we map hashes to region-entry
> >    -- region-key = user1000
> >    -- region-value = map
> >    -- This will provide java bean sort to behaviour with 10s of
> > field-value
> >    -- Personally I would prefer this..
> >  e. Feedback/vote: both behaviour is desirable
> >
> > 4. Sets
> >  a. This represents unique keys in set
> >  b. usage "sadd myset 1 2 3"
> >  c. Current implementation maps each sadd to geode-partition-region(i.e.
> > myset is geode-partition-region)
> >  d. Feedback/vote
> >    -- Should we map set to region-entry
> >    -- region-key = myset
> >    -- region-value = Hashset
> >  e. Feedback/vote: both behaviour is desirable
> >
> > 5. SortedSets
> >  a. This represents unique keys in set with score (usecase Query top-10)
> >  b. usage "zadd hackers 1940 "Alan Kay""
> >  c. Current implementation maps each zadd to geode-partition-region(i.e.
> > hackers is geode-partition-region)
> >  d. Feedback/vote
> >    -- Should we map set to region-entry
> >    -- region-key = hackers
> >    -- region-value = Sorted Hashset
> >  e. Feedback/vote: both behaviour is desirable
> >
> > 6. HyperLogLogs
> >  a. A HyperLogLog is a probabilistic data structure used in order to
> > count unique things (technically this is referred to estimating the
> > cardinality of a set).
> >  b. usage "pfadd hll a b c d"
> >  c. Current implementation creates "HLL_REGION" geode-partition-region
> > upfront
> >  d. hll becomes region-key and value is HLL object
> >  e. any feedback?
> >
> > 7. Default config for geode-region (vote)
> >    a. partition region
> >    b. 1 redundant copy
> >    c. Persistence
> >    d. Eviction
> >    e. Expiration
> >    f. ?
> >
> > 8. It seems; redis knows type(list, hashes, string ,set ..) of each key.
> > Thus for each operation we need to make sure type of key. In current
> > implementation we have different region for each redis type. Thus we have
> > another region(metaTypeRegion) which keeps type for each key. This makes
> > any operation in geode slow as it needs to verify that type. For
> instance,
> > creating new key need to make sure its already there or not. Whether we
> > should allow type change or not.
> >  a. Feedback/vote
> >      -- type change of key
> >      -- Can we allow two key with same name but two differnt type (as it
> > will endup in two different geode-region)
> >        String type "key1" in string region
> >        HLL type "key1" in HLL region
> >  b. any other feedback
> >
> > 9. Transactions:
> >  a. we will not support transaction in redisAdapter as geode transaction
> > are limited to single node.
> >  b. feedback?
> >
> > 10. Redis COMMAND (https://redis.io/commands/command)
> >  a. should we implement this "COMMAND" ?
> >
> > 11. Any other redis command we should consider?
> >
> >
> > Thanks.
> > Hitesh
> >
> >
> >
>
>
>

Reply via email to