Hi, Lucas, Thank you for your suggestions. I will update the KIP and code together.
Sincerely, Hanyu On Tue, Oct 3, 2023 at 8:16 PM Hanyu (Peter) Zheng <pzh...@confluent.io> wrote: > If we use WithDescendingKeys() to generate a RangeQuery to do the > reveseQuery, how do we achieve the methods like withRange, withUpperBound, > and withLowerBound only in this method? > > On Tue, Oct 3, 2023 at 8:01 PM Hanyu (Peter) Zheng <pzh...@confluent.io> > wrote: > >> I believe there's no need to introduce a method like >> WithDescendingKeys(). Instead, we can simply add a reverse flag to >> RangeQuery. Each method within RangeQuery would then accept an additional >> parameter. If the reverse is set to true, it would indicate the results >> should be reversed. >> >> Initially, I introduced a reverse variable. When set to false, the >> RangeQuery class behaves normally. However, when reverse is set to true, >> the RangeQuery essentially takes on the functionality of ReverseRangeQuery. >> Further details can be found in the "Rejected Alternatives" section. >> >> In my perspective, RangeQuery is a class responsible for creating a >> series of RangeQuery objects. It offers methods such as withRange, >> withUpperBound, and withLowerBound, allowing us to generate objects >> representing different queries. I'm unsure how adding a >> withDescendingOrder() method would be compatible with the other methods, >> especially considering that, based on KIP 969, WithDescendingKeys() doesn't >> appear to take any input variables. And if withDescendingOrder() doesn't >> accept any input, how does it return a RangeQuery? >> >> On Tue, Oct 3, 2023 at 4:37 PM Hanyu (Peter) Zheng <pzh...@confluent.io> >> wrote: >> >>> Hi, Colt, >>> The underlying structure of inMemoryKeyValueStore is treeMap. >>> Sincerely, >>> Hanyu >>> >>> On Tue, Oct 3, 2023 at 4:34 PM Hanyu (Peter) Zheng <pzh...@confluent.io> >>> wrote: >>> >>>> Hi Bill, >>>> 1. I will update the KIP in accordance with the PR and synchronize >>>> their future updates. >>>> 2. I will use that name. >>>> 3. you mean add something about ordering at the motivation section? >>>> >>>> Sincerely, >>>> Hanyu >>>> >>>> >>>> On Tue, Oct 3, 2023 at 4:29 PM Hanyu (Peter) Zheng <pzh...@confluent.io> >>>> wrote: >>>> >>>>> Hi, Walker, >>>>> >>>>> 1. I will update the KIP in accordance with the PR and synchronize >>>>> their future updates. >>>>> 2. I will use that name. >>>>> 3. I'll provide additional details in that section. >>>>> 4. I intend to utilize rangeQuery to achieve what we're referring to >>>>> as reverseQuery. In essence, reverseQuery is merely a term. To clear up >>>>> any >>>>> ambiguity, I'll make necessary adjustments to the KIP. >>>>> >>>>> Sincerely, >>>>> Hanyu >>>>> >>>>> >>>>> >>>>> On Tue, Oct 3, 2023 at 4:09 PM Hanyu (Peter) Zheng < >>>>> pzh...@confluent.io> wrote: >>>>> >>>>>> Ok, I will change it back to following the code, and update them >>>>>> together. >>>>>> >>>>>> On Tue, Oct 3, 2023 at 2:27 PM Walker Carlson >>>>>> <wcarl...@confluent.io.invalid> wrote: >>>>>> >>>>>>> Hello Hanyu, >>>>>>> >>>>>>> Looking over your kip things mostly make sense but I have a couple of >>>>>>> comments. >>>>>>> >>>>>>> >>>>>>> 1. You have "withDescandingOrder()". I think you mean >>>>>>> "descending" :) >>>>>>> Also there are still a few places in the do where its called >>>>>>> "setReverse" >>>>>>> 2. Also I like "WithDescendingKeys()" better >>>>>>> 3. I'm not sure of what ordering guarantees we are offering. >>>>>>> Perhaps we >>>>>>> can add a section to the motivation clearly spelling out the >>>>>>> current >>>>>>> ordering and the new offering? >>>>>>> 4. When you say "use unbounded reverseQuery to achieve >>>>>>> reverseAll" do >>>>>>> you mean "use unbounded RangeQuery to achieve reverseAll"? as far >>>>>>> as I can >>>>>>> tell we don't have a reverseQuery as a named object? >>>>>>> >>>>>>> >>>>>>> Looking good so far >>>>>>> >>>>>>> best, >>>>>>> Walker >>>>>>> >>>>>>> On Tue, Oct 3, 2023 at 2:13 PM Colt McNealy <c...@littlehorse.io> >>>>>>> wrote: >>>>>>> >>>>>>> > Hello Hanyu, >>>>>>> > >>>>>>> > Thank you for the KIP. I agree with Matthias' proposal to keep the >>>>>>> naming >>>>>>> > convention consistent with KIP-969. I favor the >>>>>>> `.withDescendingKeys()` >>>>>>> > name. >>>>>>> > >>>>>>> > I am curious about one thing. RocksDB guarantees that records >>>>>>> returned >>>>>>> > during a range scan are lexicographically ordered by the bytes of >>>>>>> the keys >>>>>>> > (either ascending or descending order, as specified in the query). >>>>>>> This >>>>>>> > means that results within a single partition are indeed ordered.** >>>>>>> My >>>>>>> > reading of KIP-805 suggests to me that you don't need to specify >>>>>>> the >>>>>>> > partition number you are querying in IQv2, which means that you >>>>>>> can have a >>>>>>> > valid reversed RangeQuery over a store with "multiple partitions" >>>>>>> in it. >>>>>>> > >>>>>>> > Currently, IQv1 does not guarantee order of keys in this scenario. >>>>>>> Does >>>>>>> > IQv2 support ordering across partitions? Such an implementation >>>>>>> would >>>>>>> > require opening a rocksdb range scan** on multiple rocksdb >>>>>>> instances (one >>>>>>> > per partition), and polling the first key of each. Whether or not >>>>>>> this is >>>>>>> > ordered, could we please add that to the documentation? >>>>>>> > >>>>>>> > **(How is this implemented/guaranteed in an >>>>>>> `inMemoryKeyValueStore`? I >>>>>>> > don't know about that implementation). >>>>>>> > >>>>>>> > Colt McNealy >>>>>>> > >>>>>>> > *Founder, LittleHorse.dev* >>>>>>> > >>>>>>> > >>>>>>> > On Tue, Oct 3, 2023 at 1:35 PM Hanyu (Peter) Zheng >>>>>>> > <pzh...@confluent.io.invalid> wrote: >>>>>>> > >>>>>>> > > ok, I will update it. Thank you Matthias >>>>>>> > > >>>>>>> > > Sincerely, >>>>>>> > > Hanyu >>>>>>> > > >>>>>>> > > On Tue, Oct 3, 2023 at 11:23 AM Matthias J. Sax < >>>>>>> mj...@apache.org> >>>>>>> > wrote: >>>>>>> > > >>>>>>> > > > Thanks for the KIP Hanyu! >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > I took a quick look and it think the proposal makes sense >>>>>>> overall. >>>>>>> > > > >>>>>>> > > > A few comments about how to structure the KIP. >>>>>>> > > > >>>>>>> > > > As you propose to not add `ReverseRangQuery` class, the code >>>>>>> example >>>>>>> > > > should go into "Rejected Alternatives" section, not in the >>>>>>> "Proposed >>>>>>> > > > Changes" section. >>>>>>> > > > >>>>>>> > > > For the `RangeQuery` code example, please omit all existing >>>>>>> methods >>>>>>> > etc, >>>>>>> > > > and only include what will be added/changed. This make it >>>>>>> simpler to >>>>>>> > > > read the KIP. >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > nit: typo >>>>>>> > > > >>>>>>> > > > > the fault value is false >>>>>>> > > > >>>>>>> > > > Should be "the default value is false". >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > Not sure if `setReverse()` is the best name. Maybe >>>>>>> > `withDescandingOrder` >>>>>>> > > > (or similar, I guess `withReverseOrder` would also work) might >>>>>>> be >>>>>>> > > > better? Would be good to align to KIP-969 proposal that >>>>>>> suggest do use >>>>>>> > > > `withDescendingKeys` methods for "reverse key-range"; if we go >>>>>>> with >>>>>>> > > > `withReverseOrder` we should change KIP-969 accordingly. >>>>>>> > > > >>>>>>> > > > Curious to hear what others think about naming this >>>>>>> consistently across >>>>>>> > > > both KIPs. >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > -Matthias >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > On 10/3/23 9:17 AM, Hanyu (Peter) Zheng wrote: >>>>>>> > > > > >>>>>>> > > > >>>>>>> > > >>>>>>> > >>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-985%3A+Add+reverseRange+and+reverseAll+query+over+kv-store+in+IQv2 >>>>>>> > > > > >>>>>>> > > > >>>>>>> > > >>>>>>> > > >>>>>>> > > -- >>>>>>> > > >>>>>>> > > [image: Confluent] <https://www.confluent.io> >>>>>>> > > Hanyu (Peter) Zheng he/him/his >>>>>>> > > Software Engineer Intern >>>>>>> > > +1 (213) 431-7193 <+1+(213)+431-7193> >>>>>>> > > Follow us: [image: Blog] >>>>>>> > > < >>>>>>> > > >>>>>>> > >>>>>>> https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog >>>>>>> > > >[image: >>>>>>> > > Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] >>>>>>> > > <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] >>>>>>> > > <https://slackpass.io/confluentcommunity>[image: YouTube] >>>>>>> > > <https://youtube.com/confluent> >>>>>>> > > >>>>>>> > > [image: Try Confluent Cloud for Free] >>>>>>> > > < >>>>>>> > > >>>>>>> > >>>>>>> https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic >>>>>>> > > > >>>>>>> > > >>>>>>> > >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> [image: Confluent] <https://www.confluent.io> >>>>>> Hanyu (Peter) Zheng he/him/his >>>>>> Software Engineer Intern >>>>>> +1 (213) 431-7193 <+1+(213)+431-7193> >>>>>> Follow us: [image: Blog] >>>>>> <https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog>[image: >>>>>> Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] >>>>>> <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] >>>>>> <https://slackpass.io/confluentcommunity>[image: YouTube] >>>>>> <https://youtube.com/confluent> >>>>>> >>>>>> [image: Try Confluent Cloud for Free] >>>>>> <https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic> >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> [image: Confluent] <https://www.confluent.io> >>>>> Hanyu (Peter) Zheng he/him/his >>>>> Software Engineer Intern >>>>> +1 (213) 431-7193 <+1+(213)+431-7193> >>>>> Follow us: [image: Blog] >>>>> <https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog>[image: >>>>> Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] >>>>> <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] >>>>> <https://slackpass.io/confluentcommunity>[image: YouTube] >>>>> <https://youtube.com/confluent> >>>>> >>>>> [image: Try Confluent Cloud for Free] >>>>> <https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic> >>>>> >>>> >>>> >>>> -- >>>> >>>> [image: Confluent] <https://www.confluent.io> >>>> Hanyu (Peter) Zheng he/him/his >>>> Software Engineer Intern >>>> +1 (213) 431-7193 <+1+(213)+431-7193> >>>> Follow us: [image: Blog] >>>> <https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog>[image: >>>> Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] >>>> <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] >>>> <https://slackpass.io/confluentcommunity>[image: YouTube] >>>> <https://youtube.com/confluent> >>>> >>>> [image: Try Confluent Cloud for Free] >>>> <https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic> >>>> >>> >>> >>> -- >>> >>> [image: Confluent] <https://www.confluent.io> >>> Hanyu (Peter) Zheng he/him/his >>> Software Engineer Intern >>> +1 (213) 431-7193 <+1+(213)+431-7193> >>> Follow us: [image: Blog] >>> <https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog>[image: >>> Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] >>> <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] >>> <https://slackpass.io/confluentcommunity>[image: YouTube] >>> <https://youtube.com/confluent> >>> >>> [image: Try Confluent Cloud for Free] >>> <https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic> >>> >> >> >> -- >> >> [image: Confluent] <https://www.confluent.io> >> Hanyu (Peter) Zheng he/him/his >> Software Engineer Intern >> +1 (213) 431-7193 <+1+(213)+431-7193> >> Follow us: [image: Blog] >> <https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog>[image: >> Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] >> <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] >> <https://slackpass.io/confluentcommunity>[image: YouTube] >> <https://youtube.com/confluent> >> >> [image: Try Confluent Cloud for Free] >> <https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic> >> > > > -- > > [image: Confluent] <https://www.confluent.io> > Hanyu (Peter) Zheng he/him/his > Software Engineer Intern > +1 (213) 431-7193 <+1+(213)+431-7193> > Follow us: [image: Blog] > <https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog>[image: > Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] > <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] > <https://slackpass.io/confluentcommunity>[image: YouTube] > <https://youtube.com/confluent> > > [image: Try Confluent Cloud for Free] > <https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic> > -- [image: Confluent] <https://www.confluent.io> Hanyu (Peter) Zheng he/him/his Software Engineer Intern +1 (213) 431-7193 <+1+(213)+431-7193> Follow us: [image: Blog] <https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog>[image: Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] <https://slackpass.io/confluentcommunity>[image: YouTube] <https://youtube.com/confluent> [image: Try Confluent Cloud for Free] <https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic>