Hello Varun,

This is an excellent idea because Redis already supports byte arrays as
both keys and values. A more generic approach makes total sense. So worth a
JIRA / PR.

About the compatiblity concerns, RedisIO is tagged as @Experimental which
means we can still evolve its API. Currently we are trying to be gentle and
mark future removals or breaking changes as @Deprecated and replacing them
after two releases.

Probably an approach to make the migration path easier on users will be:

1. Create the new generic transforms and expose them.

RedisIO.readGeneric ->
    ReadGeneric extends PTransform<PBegin,  PCollection<KV<K,V>>>

RedisIO.writeGeneric ->
    WriteGeneric extends PTransform<PCollection<KV<K, V>>, Pdone>

2. Refactor the old Read/Write to use the ReadGeneric/WriteGeneric
implementation and expose the old transforms read()/write() also as
readStrings()/writeStrings() too.

3. Mark then read()/write() with a deprecation warning so users are aware
of the change of types.

4. Two releases after, make readGeneric()/writeGeneric() into the new
read()/write().

5. We can let readStrings/writeStrings as a convenience method, or
deprecate it and remove it afterwards too.

WDYT?

On Sun, May 19, 2019 at 9:41 AM Varun Dhussa <varundhu...@google.com> wrote:

> Hi all,
>
> The current RedisIO implementation has a limitation that it can only
> support a PCollection with KV<String, String>. This imposes limitations
> while using single key operations (such as INCR/DECR), or operations on
> complex data structures (such as ZINCRBY).
> I had recently submitted a patch to support INCRBY and DECRBY operations ()
> https://github.com/apache/beam/pull/8570, for which I had to add a string
> to long parse call.
>
> I feel that this should be redesigned to support all of Redis' operations.
> I am thinking of providing a type with a format function (similar to other
> data-stores). However, I am not able to think of a way to make it
> compatible with existing interface. Do you think that this is a major
> concern? Would you recommend a different approach for this? I can start
> working on it once I get your input.
>
> Thanks and regards
>
> Varun Dhussa |  Solutions Architect, Google Cloud |
> varundhu...@google.com <prakhargau...@google.com> |
>

Reply via email to