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>