Hi John and Guozhang,

Thanks for your comments.

And @John, yes, you are right.
The goal of the improved Materialized API is to provide a way to use
im-memory store without providing the name.
So, about this comment:

> On the other hand, I don't see how the latter of these is
more compelling than the former:
.count(Materialized.as(Stores.inMemoryKeyValueStore("count-
store")));
.count(Materialized.as(Stores.keyValueStoreSupplier(StoreTyp
e.IN_MEMORY, "count-store")));

I think I didn't make it clear here.
The improved Materialized API is like this
.count(Materialized.as(Materialized.withStoreType(StoreImplType.IN_MEMORY));
// without name provided.

I've updated the KIP to make it clear.

Therefore, I'll keep the Materialize/Stores change and complete the PR.

Thanks for your comments again!

Luke



On Sat, Jan 29, 2022 at 7:46 AM John Roesler <vvcep...@apache.org> wrote:

> Hi Luke,
>
> Thanks for the KIP!
>
> I'm +1 (binding) on your KIP.
>
> Regarding this last question about chaning Materialized
> and/or Stores, I think it might actually be best to drop
> that part of the proposal.
>
> The primary benefit of your proposal is in the cases when
> the user doesn't want to specify the store type at all and
> just, as a blanket, use in-memory stores across the whole
> topology instead of rocksDB ones. For that, we have the
> config you proposed.
>
> As I read it, the Materialized part of the proposal was
> secondary; to allow users to override the default storage
> engine on a per-operation basis without having to bother
> about providing a full-fledged store supplier. In other
> words, today, if you want an in-memory store on a grouped
> stream, you have to do:
>
> .count(Materialized.as(Stores.inMemoryKeyValueStore("count-
> store")));
>
> What if you didn't care about the name but wanted it to be
> in memory? Well, you're out of luck.
>
> Therefore, I think there's significant value in modifying
> the DSL to allow users to orthogonally specify the storage
> engine and the name of the store, as in your KIP as written.
>
> On the other hand, I don't see how the latter of these is
> more compelling than the former:
> .count(Materialized.as(Stores.inMemoryKeyValueStore("count-
> store")));
> .count(Materialized.as(Stores.keyValueStoreSupplier(StoreTyp
> e.IN_MEMORY, "count-store")));
>
>
> Regardless, I don't want to let perfect be the enemy of
> good. Like I said, I think that the key benefit you're
> really going for is the config, so maybe you want to just
> drop the Materialize/Stores aspect and simplify the
> proposal. Or if you want to keep the latter, I'm fine with
> whatever approach you feel is best (which is why I still
> voted).
>
> This feels like the kind of thing that won't really be
> crystal clear until the PR is under review (and I'd
> encourage you and the reviewer to pay particular attention
> to how the new APIs actually look when used in the tests).
>
> Thanks again! People have been asking for this for a long
> time.
> -John
>
>
> On Fri, 2022-01-28 at 13:46 -0800, Guozhang Wang wrote:
> > Hi Luke,
> >
> > I'm in favor of using the newly proposed `#sessionStore(StoreType..)` and
> > deprecating the existing `#persistenSessionStore` etc.
> >
> > Thanks,
> > Guozhang
> >
> > On Tue, Jan 25, 2022 at 12:17 AM Luke Chen <show...@gmail.com> wrote:
> >
> > > Thanks Matthias!
> > >
> > > I agree we could deprecate the existing ones, and add the one with
> > > storeType parameter.
> > >
> > > That is:
> > > @deprecated
> > > Stores#persistentSessionStore(...)
> > > @deprecated
> > > Stores#inMemorySessionStore(...)
> > > @new added with an additional storeType parameter (IN_MEMORY or
> ROCKS_DB)
> > > Stores#sessionStoreSupplier(StoreType storeType, ...)
> > >
> > > Let's see what others think about it.
> > >
> > > Thank you.
> > > Luke
> > >
> > > On Tue, Jan 25, 2022 at 4:01 PM Matthias J. Sax <mj...@apache.org>
> wrote:
> > >
> > > > Thanks,
> > > >
> > > > There is already `Stores.persistentSessionStore` and
> > > > `Stores.inMemorySessionStore`. From a DSL code POV, I don't see large
> > > > benefits to add a new one, but it also does not hurt.
> > > >
> > > > Do you propose to add the third one only, or to also deprecate the
> > > > existing ones? In general, we should avoid to extend the API surface
> > > > area, so it could be a good simplification is we plan to remove the
> > > > existing ones?
> > > >
> > > > Btw: we could name the new method just `sessionStoreSupplier` for
> > > > simplicity (especially, if we deprecate the existing ones)?
> > > >
> > > > Not sure what others think. I am fine adding it, if we deprecate the
> > > > existing ones.
> > > >
> > > > -Matthias
> > > >
> > > >
> > > > On 1/24/22 5:03 PM, Luke Chen wrote:
> > > > > Hi Matthias,
> > > > >
> > > > > I didn't "save" the change. >.<
> > > > > Anyway, you can refer to this WIP PR to have better understanding
> > > > why/what
> > > > > the new API is:
> > > > >
> > > >
> > >
> https://github.com/apache/kafka/pull/11705/files#diff-c552e58e01169886c5d8b8b149f5c8cd48ea1fc1c3d7b932d055d3df9a00e1b5R464-R477
> > > > >
> > > > > It's not necessary, actually, but it can make the implementation
> > > cleaner.
> > > > > If you think this change is unnecessary and will make the `Stores`
> API
> > > > more
> > > > > complicated, it's fine to me.
> > > > >
> > > > > I'll update the KIP after we have a conclusion for it.
> > > > >
> > > > > Thank you.
> > > > > Luke
> > > > >
> > > > > On Tue, Jan 25, 2022 at 2:37 AM Matthias J. Sax <mj...@apache.org>
> > > > wrote:
> > > > >
> > > > > > I don't see the KIP update? Did you hit "save"?
> > > > > >
> > > > > > Also, the formatting in your email for the new methods is hard to
> > > read.
> > > > > > Not sure atm why we need the API change? Can you elaborate? what
> does
> > > > > >
> > > > > > > I found it'd be better
> > > > > >
> > > > > >
> > > > > > -Matthias
> > > > > >
> > > > > >
> > > > > > On 1/24/22 2:29 AM, Luke Chen wrote:
> > > > > > > Thanks for all your votes.
> > > > > > >
> > > > > > > During the implementation, I found it'd be better to have
> helper
> > > > methods
> > > > > > in
> > > > > > > `Stores`, to be able to get the store supplier by the store
> type:
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > *public static SessionBytesStoreSupplier
> > > > > > > sessionStoreSupplierByStoreType()public static
> > > WindowBytesStoreSupplier
> > > > > > > windowStoreSupplierByStoreType()public static
> > > > KeyValueBytesStoreSupplier
> > > > > > > keyValueStoreSupplierByStoreType()*
> > > > > > >
> > > > > > > I've also updated in the KIP.
> > > > > > > Please let me know if you other thoughts.
> > > > > > >
> > > > > > > Also, welcome to vote for this KIP.
> > > > > > >
> > > > > > > Thank you.
> > > > > > > Luke
> > > > > > >
> > > > > > >
> > > > > > > On Fri, Jan 21, 2022 at 4:39 AM Walker Carlson
> > > > > > > <wcarl...@confluent.io.invalid> wrote:
> > > > > > >
> > > > > > > > +1 non binding
> > > > > > > >
> > > > > > > > On Thu, Jan 20, 2022 at 2:00 PM Matthias J. Sax <
> mj...@apache.org>
> > > > > > wrote:
> > > > > > > >
> > > > > > > > > +1 (binding)
> > > > > > > > >
> > > > > > > > > On 1/20/22 10:52 AM, Guozhang Wang wrote:
> > > > > > > > > > Thanks Luke! I'm +1 on the KIP.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Guozhang
> > > > > > > > > >
> > > > > > > > > > On Wed, Jan 19, 2022 at 5:58 PM Luke Chen <
> show...@gmail.com>
> > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > Hi devs,
> > > > > > > > > > >
> > > > > > > > > > > I'd like to start a vote for the KIP-591: Add Kafka
> Streams
> > > config
> > > > to
> > > > > > > > > set
> > > > > > > > > > > default state store. The goal is to allow users to set
> a default
> > > > > > store
> > > > > > > > > in
> > > > > > > > > > > the config, so it can apply to all the streams.
> > > > > > > > > > >
> > > > > > > > > > > Detailed description can be found here:
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> > >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-591%3A+Add+Kafka+Streams+config+to+set+default+state+store
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Thank you.
> > > > > > > > > > > Luke
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> >
>
>

Reply via email to