I also had a hard time reading this. It sounds like the tl;dr is that your
are proposing storing each redis collection in a single region entry,
rather than a a partition region? I guess the question is whether users
will have a few very large collections that need to be partitioned, or lots
and lots of really tiny collections. I'm not quite sure what the more
common use case is.

-Dan

On Tue, Feb 14, 2017 at 3:22 PM, Swapnil Bawaskar <sbawas...@pivotal.io>
wrote:

> The Redis adapter was designed so that we can scale all the Redis data
> structures horizontally. If you bring the data structures to region entry
> level, there is no reason for anyone to use our implementation over Redis.
>
> On Tue, Feb 14, 2017 at 3:15 PM Jason Huynh <jhu...@pivotal.io> wrote:
>
>> 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