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>

Reply via email to