Hi,

Just to keep this thread up to date with development progress, we will be 
adding row-aware support to SAI in the next few weeks. This is currently going 
through the final stages of review and testing. 

This feature also adds on-disk versioning to SAI. This allows SAI to support 
multiple on-disk formats during upgrades. 

I am mentioning this now because the CEP mentions “Partition Based Iteration” 
as an initial feature. We will change that to “Row Based Iteration” when the 
feature is merged.

MikeA

> On 15 Sep 2021, at 19:42, Caleb Rackliffe <calebrackli...@gmail.com> wrote:
> 
> Hey there,
> 
> In the spirit of trying to get as many possible objections to a successful
> vote out of the way, I've added a "Challenges" section to the CEP:
> 
> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-7%3A+Storage+Attached+Index#CEP7:StorageAttachedIndex-Challenges
>  
> <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-7%3A+Storage+Attached+Index#CEP7:StorageAttachedIndex-Challenges>
> 
> Most of you will be familiar with these, but I think we need to be as
> open/candid as possible about the potential risk they pose to SAI's broader
> usability. I've described them from the point of view that they are not
> intractable, but if anyone thinks they are, let's hash that disagreement
> out.
> 
> Thanks!
> 
> On Thu, Sep 9, 2021 at 11:13 AM Patrick McFadin <pmcfa...@gmail.com 
> <mailto:pmcfa...@gmail.com>> wrote:
> 
>> +1 on introducing this in an incremental manner and after reading through
>> CASSANDRA-16092 that seems like a perfect place to start. I see that work
>> on that Jira has stopped until direction for CEP-7 has been voted in.
>> 
>> I say start the vote and let's get this really valuable developer feature
>> underway.
>> 
>> Patrick
>> 
>> On Tue, Sep 7, 2021 at 10:40 AM Caleb Rackliffe <calebrackli...@gmail.com>
>> wrote:
>> 
>>> So this thread stalled almost a year ago. (Wow, time flies when you're
>>> trying to release 4.0.) My synthesis of the conversation to this point is
>>> that while there are some open questions about testing
>>> methodology/"definition of done" and our choice of particular on-disk
>> data
>>> structures, neither of these should be a serious obstacle to moving
>> forward
>>> w/ a vote. Having said that, is there anything left around the CEP that
>> we
>>> feel should prevent it from moving to a vote?
>>> 
>>> In terms of how we would proceed from the point a vote passes, it seems
>>> like there have been enough concerns around the proposed/necessary
>> breaking
>>> changes to the 2i API, that we will start development by introducing
>>> components as incrementally as possible into a long-running feature
>> branch
>>> off trunk. (This work would likely start w/ *CASSANDRA-16092*
>>> <https://issues.apache.org/jira/browse/CASSANDRA-16092>, which we could
>>> resolve as a sub-task of the SAI epic without interfering with other
>> trunk
>>> development likely destined for a 4.x minor, etc.)
>>> 
>>> On Thu, Sep 24, 2020 at 2:47 AM Jasonstack Zhao Yang <
>>> jasonstack.z...@gmail.com> wrote:
>>> 
>>>>>> Question is: is this planned as a next step?
>>>>>> If yes, how are we going to mark SAI as experimental until it gets
>>>>>> row offsets? Also, it is likely that index format is going to change
>>>> when
>>>>>> row offsets are added, so my concern is that we may have to support
>>> two
>>>>>> versions of a format for a smooth migration.
>>>> 
>>>> The goal is to support row-level index when merging SAI, I will update
>>> the
>>>> CEP about it.
>>>> 
>>>>>> I think switching to row
>>>>>> offsets also has a huge impact on interaction with SPRC and has some
>>>>>> potential for optimisations.
>>>> 
>>>> Can you share more details on the optimizations?
>>>> 
>>>> 
>>>> 
>>>> On Thu, 24 Sep 2020 at 15:20, Oleksandr Petrov <
>>> oleksandr.pet...@gmail.com
>>>>> 
>>>> wrote:
>>>> 
>>>>>> But for improving overall index read performance, I think improving
>>>> base
>>>>> table read perf  (because SAI/SASI executes LOTS of
>>>>> SinglePartitionReadCommand after searching on-disk index) is more
>>>> effective
>>>>> than switching from Trie to Prefix BTree.
>>>>> 
>>>>> I haven't suggested switching to Prefix B-Tree or any other
>> structure,
>>>> the
>>>>> question was about rationale and motivation of picking one over the
>>>> other,
>>>>> which I am curious about for personal reasons/interests that lie
>>> outside
>>>> of
>>>>> Cassandra. Having this listed in CEP could have been helpful for
>> future
>>>>> guidance. It's ok if this question is outside of the CEP scope.
>>>>> 
>>>>> I also agree that there are many areas that require improvement
>> around
>>>> the
>>>>> read/write path and 2i, many of which (even outside of base table
>>> format
>>>> or
>>>>> read perf) can yield positive performance results.
>>>>> 
>>>>>> FWIW, I personally look forward to receiving that contribution when
>>> the
>>>>> time is right.
>>>>> 
>>>>> I am very excited for this contribution, too, and it looks like very
>>>> solid
>>>>> work.
>>>>> 
>>>>> I have one more question, about "Upon resolving partition keys, rows
>>> are
>>>>> loaded using Cassandra’s internal partition read command across
>>> SSTables
>>>>> and are post filtered". One of the criticisms of SASI and reasons for
>>>>> marking it as experimental was CASSANDRA-11990. I think switching to
>>> row
>>>>> offsets also has a huge impact on interaction with SPRC and has some
>>>>> potential for optimisations. Question is: is this planned as a next
>>> step?
>>>>> If yes, how are we going to mark SAI as experimental until it gets
>>>>> row offsets? Also, it is likely that index format is going to change
>>> when
>>>>> row offsets are added, so my concern is that we may have to support
>> two
>>>>> versions of a format for a smooth migration.
>>>>> 
>>>>> 
>>>>> 
>>>>> On Thu, Sep 24, 2020 at 6:53 AM Jasonstack Zhao Yang <
>>>>> jasonstack.z...@gmail.com> wrote:
>>>>> 
>>>>>>>> I think CEP should be more upfront with "eventually replace
>>>>>>>> it" bit, since it raises the question about what the people who
>>> are
>>>>>> using
>>>>>>>> other index implementations can expect.
>>>>>> 
>>>>>> Will update the CEP to emphasize: SAI will replace other indexes.
>>>>>> 
>>>>>>>> Unfortunately, I do not have an
>>>>>>>> implementation sitting around for a direct comparison, but I can
>>>>> imagine
>>>>>>>> situations when B-Trees may perform better because of simpler
>>>>>> construction.
>>>>>>>> Maybe we should even consider prototyping a prefix B-Tree to
>> have
>>> a
>>>>> more
>>>>>>>> fair comparison.
>>>>>> 
>>>>>> As long as prefix BTree supports range/prefix aggregation (which is
>>>> used
>>>>> to
>>>>>> speed up
>>>>>> range/prefix query when matching entire subtree), we can plug it in
>>> and
>>>>>> compare. It won't
>>>>>> affect the CEP design which focuses on sharing data across indexes
>>> and
>>>>>> posting aggregation.
>>>>>> 
>>>>>> But for improving overall index read performance, I think improving
>>>> base
>>>>>> table read perf
>>>>>> (because SAI/SASI executes LOTS of SinglePartitionReadCommand
>> after
>>>>>> searching on-disk index)
>>>>>> is more effective than switching from Trie to Prefix BTree.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Thu, 24 Sep 2020 at 05:33, Benedict Elliott Smith <
>>>>> bened...@apache.org>
>>>>>> wrote:
>>>>>> 
>>>>>>> FWIW, I personally look forward to receiving that contribution
>> when
>>>> the
>>>>>>> time is right.
>>>>>>> 
>>>>>>> On 23/09/2020, 18:45, "Josh McKenzie" <jmcken...@apache.org>
>>> wrote:
>>>>>>> 
>>>>>>>    talking about that would involve some bits of information
>>>> DataStax
>>>>>>> might
>>>>>>>    not be ready to share?
>>>>>>> 
>>>>>>>    At the risk of derailing, I've been poking and prodding this
>>> week
>>>>> at
>>>>>> we
>>>>>>>    contributors at DS getting our act together w/a draft CEP for
>>>>>> donating
>>>>>>> the
>>>>>>>    trie-based indices to the ASF project.
>>>>>>> 
>>>>>>>    More to come; the intention is certainly to contribute that
>>> code.
>>>>> The
>>>>>>> lack
>>>>>>>    of a destination to merge it into (i.e. no 5.0-dev branch) is
>>>>>> removing
>>>>>>>    significant urgency from the process as well (not to open a
>> 3rd
>>>>>>> Pandora's
>>>>>>>    box), but there's certainly an interrelatedness to the
>>>>> conversations
>>>>>>> going
>>>>>>>    on.
>>>>>>> 
>>>>>>>    ---
>>>>>>>    Josh McKenzie
>>>>>>> 
>>>>>>> 
>>>>>>>    Sent via Superhuman <
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__sprh.mn_-3Fvip-3Djmckenzie-40apache.org&d=DwIFaQ&c=adz96Xi0w1RHqtPMowiL2g&r=W153pibedwV7j_YCKUR0MVt-tPDUbvaHukx68pAo9zc&m=epkiu_3NED8CL23Ylg9qVnK7VfGLJGsT28TGXN6Wmc4&s=gJ7VsN1vFUYz0czKFU8Dv28TViVbCWWF1zE3ZQlxtWc&e=
>>  
>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__sprh.mn_-3Fvip-3Djmckenzie-40apache.org&d=DwIFaQ&c=adz96Xi0w1RHqtPMowiL2g&r=W153pibedwV7j_YCKUR0MVt-tPDUbvaHukx68pAo9zc&m=epkiu_3NED8CL23Ylg9qVnK7VfGLJGsT28TGXN6Wmc4&s=gJ7VsN1vFUYz0czKFU8Dv28TViVbCWWF1zE3ZQlxtWc&e=>
>>  
>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>    On Wed, Sep 23, 2020 at 12:48 PM, Caleb Rackliffe <
>>>>>>> calebrackli...@gmail.com>
>>>>>>>    wrote:
>>>>>>> 
>>>>>>>> As long as we can construct the on-disk indexes
>>>>>> efficiently/directly
>>>>>>> from
>>>>>>>> a Memtable-attached index on flush, there's room to try
>> other
>>>>> data
>>>>>>>> structures. Most of the innovation in SAI is around the
>>> layout
>>>> of
>>>>>>> postings
>>>>>>>> (something we can expand on if people are interested) and
>>>> having
>>>>> a
>>>>>>>> natively row-oriented design that scales w/ multiple
>> indexed
>>>>>> columns
>>>>>>> on
>>>>>>>> single SSTables. There are some broader implications of
>> using
>>>> the
>>>>>>> trie that
>>>>>>>> reach outside SAI itself, but talking about that would
>>> involve
>>>>> some
>>>>>>> bits of
>>>>>>>> information DataStax might not be ready to share?
>>>>>>>> 
>>>>>>>> On Wed, Sep 23, 2020 at 11:00 AM Jeremiah D Jordan <
>>>>>> jeremiah.jordan@
>>>>>>>> gmail.com> wrote:
>>>>>>>> 
>>>>>>>> Short question: looking forward, how are we going to
>> maintain
>>>>> three
>>>>>>> 2i
>>>>>>>> implementations: SASI, SAI, and 2i?
>>>>>>>> 
>>>>>>>> I think one of the goals stated in the CEP is for SAI to
>> have
>>>>>> parity
>>>>>>> with
>>>>>>>> 2i such that it could eventually replace it.
>>>>>>>> 
>>>>>>>> On Sep 23, 2020, at 10:34 AM, Oleksandr Petrov <
>>>>>>>> 
>>>>>>>> oleksandr.pet...@gmail.com> wrote:
>>>>>>>> 
>>>>>>>> Short question: looking forward, how are we going to
>> maintain
>>>>> three
>>>>>>> 2i
>>>>>>>> implementations: SASI, SAI, and 2i?
>>>>>>>> 
>>>>>>>> Another thing I think this CEP is missing is rationale and
>>>>>> motivation
>>>>>>>> about why trie-based indexes were chosen over, say, B-Tree.
>>> We
>>>>> did
>>>>>>> have a
>>>>>>>> short discussion about this on Slack, but both arguments
>> that
>>>>> I've
>>>>>>> heard
>>>>>>>> (space-saving and keeping a small subset of nodes in
>> memory)
>>>> work
>>>>>>> only
>>>>>>>> 
>>>>>>>> for
>>>>>>>> 
>>>>>>>> the most primitive implementation of a B-Tree.
>> Fully-occupied
>>>>>> prefix
>>>>>>>> 
>>>>>>>> B-Tree
>>>>>>>> 
>>>>>>>> can have similar properties. There's been a lot of research
>>> on
>>>>>>> B-Trees
>>>>>>>> 
>>>>>>>> and
>>>>>>>> 
>>>>>>>> optimisations in those. Unfortunately, I do not have an
>>>>>>> implementation
>>>>>>>> sitting around for a direct comparison, but I can imagine
>>>>>> situations
>>>>>>> when
>>>>>>>> B-Trees may perform better because of simpler
>>>>>>>> 
>>>>>>>> construction.
>>>>>>>> 
>>>>>>>> Maybe we should even consider prototyping a prefix B-Tree
>> to
>>>>> have a
>>>>>>> more
>>>>>>>> fair comparison.
>>>>>>>> 
>>>>>>>> Thank you,
>>>>>>>> -- Alex
>>>>>>>> 
>>>>>>>> On Thu, Sep 10, 2020 at 9:12 AM Jasonstack Zhao Yang <
>>>>>>> jasonstack.zhao@
>>>>>>>> gmail.com> wrote:
>>>>>>>> 
>>>>>>>> Thank you Patrick for hosting Cassandra Contributor Meeting
>>> for
>>>>>> CEP-7
>>>>>>>> 
>>>>>>>> SAI.
>>>>>>>> 
>>>>>>>> The recorded video is available here:
>>>>>>>> 
>>>>>>>> https://cwiki.apache.org/confluence/display/CASSANDRA/
>>>>>>>> 2020-09-01+Apache+Cassandra+Contributor+Meeting
>>>>>>>> 
>>>>>>>> On Tue, 1 Sep 2020 at 14:34, Jasonstack Zhao Yang <
>>>>>>> jasonstack.zhao@gmail.
>>>>>>>> com>
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Thank you, Charles and Patrick
>>>>>>>> 
>>>>>>>> On Tue, 1 Sep 2020 at 04:56, Charles Cao <
>>> caohair...@gmail.com
>>>>> 
>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Thank you, Patrick!
>>>>>>>> 
>>>>>>>> On Mon, Aug 31, 2020 at 12:59 PM Patrick McFadin <
>>>>>> pmcfa...@gmail.com
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> I just moved it to 8AM for this meeting to better
>> accommodate
>>>>> APAC.
>>>>>>>> 
>>>>>>>> Please
>>>>>>>> 
>>>>>>>> see the update here:
>>>>>>>> 
>>>>>>>> https://cwiki.apache.org/confluence/display/CASSANDRA/
>>>>>>>> 2020-08-01+Apache+Cassandra+Contributor+Meeting
>>>>>>>> 
>>>>>>>> Patrick
>>>>>>>> 
>>>>>>>> On Mon, Aug 31, 2020 at 10:04 AM Charles Cao <
>>>>> caohair...@gmail.com
>>>>>>> 
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Patrick,
>>>>>>>> 
>>>>>>>> 11AM PST is a bad time for the people in the APAC timezone.
>>> Can
>>>>> we
>>>>>>> move it
>>>>>>>> to 7 or 8AM PST in the morning to accommodate their needs ?
>>>>>>>> 
>>>>>>>> ~Charles
>>>>>>>> 
>>>>>>>> On Fri, Aug 28, 2020 at 4:37 PM Patrick McFadin <
>>>>>> pmcfa...@gmail.com
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Meeting scheduled.
>>>>>>>> 
>>>>>>>> https://cwiki.apache.org/confluence/display/CASSANDRA/
>>>>>>>> 2020-08-01+Apache+Cassandra+Contributor+Meeting
>>>>>>>> 
>>>>>>>> Tuesday September 1st, 11AM PST. I added a basic bullet for
>>> the
>>>>>>>> 
>>>>>>>> agenda
>>>>>>>> 
>>>>>>>> but
>>>>>>>> 
>>>>>>>> if there is more, edit away.
>>>>>>>> 
>>>>>>>> Patrick
>>>>>>>> 
>>>>>>>> On Thu, Aug 27, 2020 at 11:31 AM Jasonstack Zhao Yang <
>>>>>>> jasonstack.zhao@
>>>>>>>> gmail.com> wrote:
>>>>>>>> 
>>>>>>>> +1
>>>>>>>> 
>>>>>>>> On Thu, 27 Aug 2020 at 04:52, Ekaterina Dimitrova <
>>>>>>>> 
>>>>>>>> e.dimitr...@gmail.com>
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> +1
>>>>>>>> 
>>>>>>>> On Wed, 26 Aug 2020 at 16:48, Caleb Rackliffe <
>>>>>>>> 
>>>>>>>> calebrackli...@gmail.com>
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> +1
>>>>>>>> 
>>>>>>>> On Wed, Aug 26, 2020, 3:45 PM Patrick McFadin <
>>>>>>>> 
>>>>>>>> pmcfa...@gmail.com>
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> This is related to the discussion Jordan and I had about
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> contributor
>>>>>>>> 
>>>>>>>> Zoom call. Instead of open mic for any issue, call it
>>>>>>>> 
>>>>>>>> based
>>>>>>>> 
>>>>>>>> on a
>>>>>>>> 
>>>>>>>> discussion
>>>>>>>> 
>>>>>>>> thread or threads for higher bandwidth discussion.
>>>>>>>> 
>>>>>>>> I would be happy to schedule on for next week to
>>>>>>>> 
>>>>>>>> specifically
>>>>>>>> 
>>>>>>>> discuss
>>>>>>>> 
>>>>>>>> CEP-7. I can attach the recorded call to the CEP after.
>>>>>>>> 
>>>>>>>> +1 or -1?
>>>>>>>> 
>>>>>>>> Patrick
>>>>>>>> 
>>>>>>>> On Tue, Aug 25, 2020 at 7:03 AM Joshua McKenzie <
>>>>>>>> 
>>>>>>>> jmcken...@apache.org>
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Does community plan to open another discussion or CEP
>>>>>>>> 
>>>>>>>> on
>>>>>>>> 
>>>>>>>> modularization?
>>>>>>>> 
>>>>>>>> We probably should have a discussion on the ML or
>>>>>>>> 
>>>>>>>> monthly
>>>>>>>> 
>>>>>>>> contrib
>>>>>>>> 
>>>>>>>> call
>>>>>>>> 
>>>>>>>> about it first to see how aligned the interested
>>>>>>>> 
>>>>>>>> contributors
>>>>>>>> 
>>>>>>>> are.
>>>>>>>> 
>>>>>>>> Could
>>>>>>>> 
>>>>>>>> do
>>>>>>>> 
>>>>>>>> that through CEP as well but CEP's (at least thus far
>>>>>>>> 
>>>>>>>> sans k8s
>>>>>>>> 
>>>>>>>> operator)
>>>>>>>> 
>>>>>>>> tend to start with a strong, deeply thought out point of
>>>>>>>> 
>>>>>>>> view
>>>>>>>> 
>>>>>>>> being
>>>>>>>> 
>>>>>>>> expressed.
>>>>>>>> 
>>>>>>>> On Tue, Aug 25, 2020 at 3:26 AM Jasonstack Zhao Yang <
>>>>>>>> 
>>>>>>>> jasonstack.z...@gmail.com> wrote:
>>>>>>>> 
>>>>>>>> SASI's performance, specifically the search in the
>>>>>>>> 
>>>>>>>> B+
>>>>>>>> 
>>>>>>>> tree
>>>>>>>> 
>>>>>>>> component,
>>>>>>>> 
>>>>>>>> depends a lot on the component file's header being
>>>>>>>> 
>>>>>>>> available
>>>>>>>> 
>>>>>>>> in
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> pagecache. SASI benefits from (needs) nodes with
>>>>>>>> 
>>>>>>>> lots of
>>>>>>>> 
>>>>>>>> RAM.
>>>>>>>> 
>>>>>>>> Is
>>>>>>>> 
>>>>>>>> SAI
>>>>>>>> 
>>>>>>>> bound
>>>>>>>> 
>>>>>>>> to this same or similar limitation?
>>>>>>>> 
>>>>>>>> SAI also benefits from larger memory because SAI puts
>>>>>>>> 
>>>>>>>> block
>>>>>>>> 
>>>>>>>> info
>>>>>>>> 
>>>>>>>> on
>>>>>>>> 
>>>>>>>> heap
>>>>>>>> 
>>>>>>>> for searching on-disk components and having
>>>>>>>> 
>>>>>>>> cross-index
>>>>>>>> 
>>>>>>>> files on
>>>>>>>> 
>>>>>>>> page
>>>>>>>> 
>>>>>>>> cache
>>>>>>>> 
>>>>>>>> improves read performance of different indexes on the
>>>>>>>> 
>>>>>>>> same
>>>>>>>> 
>>>>>>>> table.
>>>>>>>> 
>>>>>>>> Flushing of SASI can be CPU+IO intensive, to the
>>>>>>>> 
>>>>>>>> point of
>>>>>>>> 
>>>>>>>> saturation,
>>>>>>>> 
>>>>>>>> pauses, and crashes on the node. SSDs are a must,
>>>>>>>> 
>>>>>>>> along
>>>>>>>> 
>>>>>>>> with
>>>>>>>> 
>>>>>>>> a
>>>>>>>> 
>>>>>>>> bit
>>>>>>>> 
>>>>>>>> of
>>>>>>>> 
>>>>>>>> tuning, just to avoid bringing down your cluster.
>>>>>>>> 
>>>>>>>> Beyond
>>>>>>>> 
>>>>>>>> reducing
>>>>>>>> 
>>>>>>>> space
>>>>>>>> 
>>>>>>>> requirements, does SAI improve on these things?
>>>>>>>> 
>>>>>>>> Like
>>>>>>>> 
>>>>>>>> SASI how
>>>>>>>> 
>>>>>>>> does
>>>>>>>> 
>>>>>>>> SAI,
>>>>>>>> 
>>>>>>>> in
>>>>>>>> 
>>>>>>>> its own way, change/narrow the recommendations on
>>>>>>>> 
>>>>>>>> node
>>>>>>>> 
>>>>>>>> hardware
>>>>>>>> 
>>>>>>>> specs?
>>>>>>>> 
>>>>>>>> SAI won't crash the node during compaction and
>>>>>>>> 
>>>>>>>> requires
>>>>>>>> 
>>>>>>>> less
>>>>>>>> 
>>>>>>>> CPU/IO.
>>>>>>>> 
>>>>>>>> * SAI defines global memory limit for compaction
>>>>>>>> 
>>>>>>>> instead of
>>>>>>>> 
>>>>>>>> per-index
>>>>>>>> 
>>>>>>>> memory limit used by SASI.
>>>>>>>> 
>>>>>>>> For example, compactions are running on 10 tables
>>>>>>>> 
>>>>>>>> and
>>>>>>>> 
>>>>>>>> each
>>>>>>>> 
>>>>>>>> has
>>>>>>>> 
>>>>>>>> 10
>>>>>>>> 
>>>>>>>> indexes. SAI will cap the
>>>>>>>> 
>>>>>>>> memory usage with global limit while SASI may use up
>>>>>>>> 
>>>>>>>> to
>>>>>>>> 
>>>>>>>> 100 *
>>>>>>>> 
>>>>>>>> per-index
>>>>>>>> 
>>>>>>>> limit.
>>>>>>>> 
>>>>>>>> * After flushing in-memory segments to disk, SAI won't
>>>>>>>> 
>>>>>>>> merge
>>>>>>>> 
>>>>>>>> on-disk
>>>>>>>> 
>>>>>>>> segments while SASI
>>>>>>>> 
>>>>>>>> attempts to merge them at the end.
>>>>>>>> 
>>>>>>>> There are pros and cons of not merging segments:
>>>>>>>> 
>>>>>>>> ** Pros: compaction runs faster and requires fewer
>>>>>>>> 
>>>>>>>> resources.
>>>>>>>> 
>>>>>>>> ** Cons: small segments reduce compression ratio.
>>>>>>>> 
>>>>>>>> * SAI on-disk format with row ids compresses better.
>>>>>>>> 
>>>>>>>> I understand the desire in keeping out of scope
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> longer
>>>>>>>> 
>>>>>>>> term
>>>>>>>> 
>>>>>>>> deprecation
>>>>>>>> 
>>>>>>>> and migration plan, but… if SASI provides
>>>>>>>> 
>>>>>>>> functionality
>>>>>>>> 
>>>>>>>> that
>>>>>>>> 
>>>>>>>> SAI
>>>>>>>> 
>>>>>>>> doesn't,
>>>>>>>> 
>>>>>>>> like tokenisation and DelimiterAnalyzer, yet
>>>>>>>> 
>>>>>>>> introduces a
>>>>>>>> 
>>>>>>>> body
>>>>>>>> 
>>>>>>>> of
>>>>>>>> 
>>>>>>>> code
>>>>>>>> 
>>>>>>>> ~somewhat similar, shouldn't we be roughly
>>>>>>>> 
>>>>>>>> sketching out
>>>>>>>> 
>>>>>>>> how
>>>>>>>> 
>>>>>>>> to
>>>>>>>> 
>>>>>>>> reduce
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> maintenance surface area?
>>>>>>>> 
>>>>>>>> Agreed that we should reduce maintenance area if
>>>>>>>> 
>>>>>>>> possible,
>>>>>>>> 
>>>>>>>> but
>>>>>>>> 
>>>>>>>> only
>>>>>>>> 
>>>>>>>> very
>>>>>>>> 
>>>>>>>> limited
>>>>>>>> 
>>>>>>>> code base (eg. RangeIterator, QueryPlan) can be
>>>>>>>> 
>>>>>>>> shared.
>>>>>>>> 
>>>>>>>> The
>>>>>>>> 
>>>>>>>> rest
>>>>>>>> 
>>>>>>>> of
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> code base
>>>>>>>> 
>>>>>>>> is quite different because of on-disk format and
>>>>>>>> 
>>>>>>>> cross-index
>>>>>>>> 
>>>>>>>> files.
>>>>>>>> 
>>>>>>>> The goal of this CEP is to get community buy-in on
>>>>>>>> 
>>>>>>>> SAI's
>>>>>>>> 
>>>>>>>> design.
>>>>>>>> 
>>>>>>>> Tokenization,
>>>>>>>> 
>>>>>>>> DelimiterAnalyzer should be straightforward to
>>>>>>>> 
>>>>>>>> implement on
>>>>>>>> 
>>>>>>>> top
>>>>>>>> 
>>>>>>>> of
>>>>>>>> 
>>>>>>>> SAI.
>>>>>>>> 
>>>>>>>> Can we list what configurations of SASI will
>>>>>>>> 
>>>>>>>> become
>>>>>>>> 
>>>>>>>> deprecated
>>>>>>>> 
>>>>>>>> once
>>>>>>>> 
>>>>>>>> SAI
>>>>>>>> 
>>>>>>>> becomes non-experimental?
>>>>>>>> 
>>>>>>>> Except for "Like", "Tokenisation",
>>>>>>>> 
>>>>>>>> "DelimiterAnalyzer",
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> rest
>>>>>>>> 
>>>>>>>> of
>>>>>>>> 
>>>>>>>> SASI
>>>>>>>> 
>>>>>>>> can
>>>>>>>> 
>>>>>>>> be replaced by SAI.
>>>>>>>> 
>>>>>>>> Given a few bugs are open against 2i and SASI, can
>>>>>>>> 
>>>>>>>> we
>>>>>>>> 
>>>>>>>> provide
>>>>>>>> 
>>>>>>>> some
>>>>>>>> 
>>>>>>>> overview, or rough indication, of how many of them
>>>>>>>> 
>>>>>>>> we
>>>>>>>> 
>>>>>>>> could
>>>>>>>> 
>>>>>>>> "triage
>>>>>>>> 
>>>>>>>> away"?
>>>>>>>> 
>>>>>>>> I believe most of the known bugs in 2i/SASI either
>>>>>>>> 
>>>>>>>> have
>>>>>>>> 
>>>>>>>> been
>>>>>>>> 
>>>>>>>> addressed
>>>>>>>> 
>>>>>>>> in
>>>>>>>> 
>>>>>>>> SAI or
>>>>>>>> 
>>>>>>>> don't apply to SAI.
>>>>>>>> 
>>>>>>>> And, is it time for the project to start
>>>>>>>> 
>>>>>>>> introducing new
>>>>>>>> 
>>>>>>>> SPI
>>>>>>>> 
>>>>>>>> implementations as separate sub-modules and jar
>>>>>>>> 
>>>>>>>> files
>>>>>>>> 
>>>>>>>> that
>>>>>>>> 
>>>>>>>> are
>>>>>>>> 
>>>>>>>> only
>>>>>>>> 
>>>>>>>> loaded
>>>>>>>> 
>>>>>>>> at runtime based on configuration settings? (sorry
>>>>>>>> 
>>>>>>>> for
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> conflation
>>>>>>>> 
>>>>>>>> on
>>>>>>>> 
>>>>>>>> this one, but maybe it's the right time to raise
>>>>>>>> 
>>>>>>>> it
>>>>>>>> 
>>>>>>>> :shrug:)
>>>>>>>> 
>>>>>>>> Agreed that modularization is the way to go and will
>>>>>>>> 
>>>>>>>> speed up
>>>>>>>> 
>>>>>>>> module
>>>>>>>> 
>>>>>>>> development speed.
>>>>>>>> 
>>>>>>>> Does community plan to open another discussion or CEP
>>>>>>>> 
>>>>>>>> on
>>>>>>>> 
>>>>>>>> modularization?
>>>>>>>> 
>>>>>>>> On Mon, 24 Aug 2020 at 16:43, Mick Semb Wever <
>>>>>>>> 
>>>>>>>> m...@apache.org>
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Adding to Duy's questions…
>>>>>>>> 
>>>>>>>> * Hardware specs
>>>>>>>> 
>>>>>>>> SASI's performance, specifically the search in the
>>>>>>>> 
>>>>>>>> B+
>>>>>>>> 
>>>>>>>> tree
>>>>>>>> 
>>>>>>>> component,
>>>>>>>> 
>>>>>>>> depends a lot on the component file's header being
>>>>>>>> 
>>>>>>>> available in
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> pagecache. SASI benefits from (needs) nodes with
>>>>>>>> 
>>>>>>>> lots
>>>>>>>> 
>>>>>>>> of
>>>>>>>> 
>>>>>>>> RAM.
>>>>>>>> 
>>>>>>>> Is
>>>>>>>> 
>>>>>>>> SAI
>>>>>>>> 
>>>>>>>> bound
>>>>>>>> 
>>>>>>>> to this same or similar limitation?
>>>>>>>> 
>>>>>>>> Flushing of SASI can be CPU+IO intensive, to the
>>>>>>>> 
>>>>>>>> point of
>>>>>>>> 
>>>>>>>> saturation,
>>>>>>>> 
>>>>>>>> pauses, and crashes on the node. SSDs are a must,
>>>>>>>> 
>>>>>>>> along
>>>>>>>> 
>>>>>>>> with a
>>>>>>>> 
>>>>>>>> bit
>>>>>>>> 
>>>>>>>> of
>>>>>>>> 
>>>>>>>> tuning, just to avoid bringing down your cluster.
>>>>>>>> 
>>>>>>>> Beyond
>>>>>>>> 
>>>>>>>> reducing
>>>>>>>> 
>>>>>>>> space
>>>>>>>> 
>>>>>>>> requirements, does SAI improve on these things? Like
>>>>>>>> 
>>>>>>>> SASI
>>>>>>>> 
>>>>>>>> how
>>>>>>>> 
>>>>>>>> does
>>>>>>>> 
>>>>>>>> SAI,
>>>>>>>> 
>>>>>>>> in
>>>>>>>> 
>>>>>>>> its own way, change/narrow the recommendations on
>>>>>>>> 
>>>>>>>> node
>>>>>>>> 
>>>>>>>> hardware
>>>>>>>> 
>>>>>>>> specs?
>>>>>>>> 
>>>>>>>> * Code Maintenance
>>>>>>>> 
>>>>>>>> I understand the desire in keeping out of scope the
>>>>>>>> 
>>>>>>>> longer
>>>>>>>> 
>>>>>>>> term
>>>>>>>> 
>>>>>>>> deprecation
>>>>>>>> 
>>>>>>>> and migration plan, but… if SASI provides
>>>>>>>> 
>>>>>>>> functionality
>>>>>>>> 
>>>>>>>> that
>>>>>>>> 
>>>>>>>> SAI
>>>>>>>> 
>>>>>>>> doesn't,
>>>>>>>> 
>>>>>>>> like tokenisation and DelimiterAnalyzer, yet
>>>>>>>> 
>>>>>>>> introduces a
>>>>>>>> 
>>>>>>>> body
>>>>>>>> 
>>>>>>>> of
>>>>>>>> 
>>>>>>>> code
>>>>>>>> 
>>>>>>>> ~somewhat similar, shouldn't we be roughly sketching
>>>>>>>> 
>>>>>>>> out
>>>>>>>> 
>>>>>>>> how to
>>>>>>>> 
>>>>>>>> reduce
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> maintenance surface area?
>>>>>>>> 
>>>>>>>> Can we list what configurations of SASI will become
>>>>>>>> 
>>>>>>>> deprecated
>>>>>>>> 
>>>>>>>> once
>>>>>>>> 
>>>>>>>> SAI
>>>>>>>> 
>>>>>>>> becomes non-experimental?
>>>>>>>> 
>>>>>>>> Given a few bugs are open against 2i and SASI, can
>>>>>>>> 
>>>>>>>> we
>>>>>>>> 
>>>>>>>> provide
>>>>>>>> 
>>>>>>>> some
>>>>>>>> 
>>>>>>>> overview, or rough indication, of how many of them
>>>>>>>> 
>>>>>>>> we
>>>>>>>> 
>>>>>>>> could
>>>>>>>> 
>>>>>>>> "triage
>>>>>>>> 
>>>>>>>> away"?
>>>>>>>> 
>>>>>>>> And, is it time for the project to start introducing
>>>>>>>> 
>>>>>>>> new
>>>>>>>> 
>>>>>>>> SPI
>>>>>>>> 
>>>>>>>> implementations as separate sub-modules and jar
>>>>>>>> 
>>>>>>>> files
>>>>>>>> 
>>>>>>>> that
>>>>>>>> 
>>>>>>>> are
>>>>>>>> 
>>>>>>>> only
>>>>>>>> 
>>>>>>>> loaded
>>>>>>>> 
>>>>>>>> at runtime based on configuration settings? (sorry
>>>>>>>> 
>>>>>>>> for the
>>>>>>>> 
>>>>>>>> conflation
>>>>>>>> 
>>>>>>>> on
>>>>>>>> 
>>>>>>>> this one, but maybe it's the right time to raise it
>>>>>>>> 
>>>>>>>> :shrug:)
>>>>>>>> 
>>>>>>>> regards,
>>>>>>>> 
>>>>>>>> Mick
>>>>>>>> 
>>>>>>>> On Tue, 18 Aug 2020 at 13:05, DuyHai Doan <
>>>>>>>> 
>>>>>>>> doanduy...@gmail.com>
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Thank you Zhao Yang for starting this topic
>>>>>>>> 
>>>>>>>> After reading the short design doc, I have a few
>>>>>>>> 
>>>>>>>> questions
>>>>>>>> 
>>>>>>>> 1) SASI was pretty inefficient indexing wide
>>>>>>>> 
>>>>>>>> partitions
>>>>>>>> 
>>>>>>>> because
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> index
>>>>>>>> 
>>>>>>>> structure only retains the partition token, not
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> clustering
>>>>>>>> 
>>>>>>>> colums.
>>>>>>>> 
>>>>>>>> As
>>>>>>>> 
>>>>>>>> per design doc SAI has row id mapping to partition
>>>>>>>> 
>>>>>>>> offset,
>>>>>>>> 
>>>>>>>> can
>>>>>>>> 
>>>>>>>> we
>>>>>>>> 
>>>>>>>> hope
>>>>>>>> 
>>>>>>>> that
>>>>>>>> 
>>>>>>>> indexing wide partition will be more efficient
>>>>>>>> 
>>>>>>>> with
>>>>>>>> 
>>>>>>>> SAI
>>>>>>>> 
>>>>>>>> ? One
>>>>>>>> 
>>>>>>>> detail
>>>>>>>> 
>>>>>>>> that
>>>>>>>> 
>>>>>>>> worries me is that in the beggining of the design
>>>>>>>> 
>>>>>>>> doc,
>>>>>>>> 
>>>>>>>> it is
>>>>>>>> 
>>>>>>>> said
>>>>>>>> 
>>>>>>>> that
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> matching rows are post filtered while scanning the
>>>>>>>> 
>>>>>>>> partition.
>>>>>>>> 
>>>>>>>> Can
>>>>>>>> 
>>>>>>>> you
>>>>>>>> 
>>>>>>>> confirm or infirm that SAI is efficient with wide
>>>>>>>> 
>>>>>>>> partitions
>>>>>>>> 
>>>>>>>> and
>>>>>>>> 
>>>>>>>> provides
>>>>>>>> 
>>>>>>>> the partition offsets to the matching rows ?
>>>>>>>> 
>>>>>>>> 2) About space efficiency, one of the biggest
>>>>>>>> 
>>>>>>>> drawback of
>>>>>>>> 
>>>>>>>> SASI
>>>>>>>> 
>>>>>>>> was
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> huge
>>>>>>>> 
>>>>>>>> space required for index structure when using
>>>>>>>> 
>>>>>>>> CONTAINS
>>>>>>>> 
>>>>>>>> logic
>>>>>>>> 
>>>>>>>> because
>>>>>>>> 
>>>>>>>> of
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> decomposition of text columns into n-grams. Will
>>>>>>>> 
>>>>>>>> SAI
>>>>>>>> 
>>>>>>>> suffer
>>>>>>>> 
>>>>>>>> from
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> same
>>>>>>>> 
>>>>>>>> issue in future iterations ? I'm anticipating a
>>>>>>>> 
>>>>>>>> bit
>>>>>>>> 
>>>>>>>> 3) If I'm querying using SAI and providing
>>>>>>>> 
>>>>>>>> complete
>>>>>>>> 
>>>>>>>> partition
>>>>>>>> 
>>>>>>>> key,
>>>>>>>> 
>>>>>>>> will
>>>>>>>> 
>>>>>>>> it
>>>>>>>> 
>>>>>>>> be more efficient than querying without partition
>>>>>>>> 
>>>>>>>> key. In
>>>>>>>> 
>>>>>>>> other
>>>>>>>> 
>>>>>>>> words,
>>>>>>>> 
>>>>>>>> does
>>>>>>>> 
>>>>>>>> SAI provide any optimisation when partition key is
>>>>>>>> 
>>>>>>>> specified
>>>>>>>> 
>>>>>>>> ?
>>>>>>>> 
>>>>>>>> Regards
>>>>>>>> 
>>>>>>>> Duy Hai DOAN
>>>>>>>> 
>>>>>>>> Le mar. 18 août 2020 à 11:39, Mick Semb Wever <
>>>>>>>> 
>>>>>>>> m...@apache.org>
>>>>>>>> 
>>>>>>>> a
>>>>>>>> 
>>>>>>>> écrit :
>>>>>>>> 
>>>>>>>> We are looking forward to the community's
>>>>>>>> 
>>>>>>>> feedback
>>>>>>>> 
>>>>>>>> and
>>>>>>>> 
>>>>>>>> suggestions.
>>>>>>>> 
>>>>>>>> What comes immediately to mind is testing
>>>>>>>> 
>>>>>>>> requirements. It
>>>>>>>> 
>>>>>>>> has
>>>>>>>> 
>>>>>>>> been
>>>>>>>> 
>>>>>>>> mentioned already that the project's testability
>>>>>>>> 
>>>>>>>> and QA
>>>>>>>> 
>>>>>>>> guidelines
>>>>>>>> 
>>>>>>>> are
>>>>>>>> 
>>>>>>>> inadequate to successfully introduce new
>>>>>>>> 
>>>>>>>> features
>>>>>>>> 
>>>>>>>> and
>>>>>>>> 
>>>>>>>> refactorings
>>>>>>>> 
>>>>>>>> to
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> codebase. During the 4.0 beta phase this was
>>>>>>>> 
>>>>>>>> intended
>>>>>>>> 
>>>>>>>> to be
>>>>>>>> 
>>>>>>>> addressed,
>>>>>>>> 
>>>>>>>> i.e.
>>>>>>>> 
>>>>>>>> defining more specific QA guidelines for 4.0-rc.
>>>>>>>> 
>>>>>>>> This
>>>>>>>> 
>>>>>>>> would
>>>>>>>> 
>>>>>>>> be
>>>>>>>> 
>>>>>>>> an
>>>>>>>> 
>>>>>>>> important
>>>>>>>> 
>>>>>>>> step towards QA guidelines for all changes and
>>>>>>>> 
>>>>>>>> CEPs
>>>>>>>> 
>>>>>>>> post-4.0.
>>>>>>>> 
>>>>>>>> Questions from me
>>>>>>>> 
>>>>>>>> - How will this be tested, how will its QA
>>>>>>>> 
>>>>>>>> status and
>>>>>>>> 
>>>>>>>> lifecycle
>>>>>>>> 
>>>>>>>> be
>>>>>>>> 
>>>>>>>> defined? (per above)
>>>>>>>> 
>>>>>>>> - With existing C* code needing to be changed,
>>>>>>>> 
>>>>>>>> what
>>>>>>>> 
>>>>>>>> is the
>>>>>>>> 
>>>>>>>> proposed
>>>>>>>> 
>>>>>>>> plan
>>>>>>>> 
>>>>>>>> for making those changes ensuring maintained QA,
>>>>>>>> 
>>>>>>>> e.g.
>>>>>>>> 
>>>>>>>> is
>>>>>>>> 
>>>>>>>> there
>>>>>>>> 
>>>>>>>> separate
>>>>>>>> 
>>>>>>>> QA
>>>>>>>> 
>>>>>>>> cycles planned for altering the SPI before
>>>>>>>> 
>>>>>>>> adding
>>>>>>>> 
>>>>>>>> a
>>>>>>>> 
>>>>>>>> new SPI
>>>>>>>> 
>>>>>>>> implementation?
>>>>>>>> 
>>>>>>>> - Despite being out of scope, it would be nice
>>>>>>>> 
>>>>>>>> to have
>>>>>>>> 
>>>>>>>> some
>>>>>>>> 
>>>>>>>> idea
>>>>>>>> 
>>>>>>>> from
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> CEP author of when users might still choose
>>>>>>>> 
>>>>>>>> afresh 2i
>>>>>>>> 
>>>>>>>> or
>>>>>>>> 
>>>>>>>> SASI
>>>>>>>> 
>>>>>>>> over
>>>>>>>> 
>>>>>>>> SAI,
>>>>>>>> 
>>>>>>>> - Who fills the roles involved? Who are the
>>>>>>>> 
>>>>>>>> contributors
>>>>>>>> 
>>>>>>>> in
>>>>>>>> 
>>>>>>>> this
>>>>>>>> 
>>>>>>>> DataStax
>>>>>>>> 
>>>>>>>> team? Who is the shepherd? Are there other
>>>>>>>> 
>>>>>>>> stakeholders
>>>>>>>> 
>>>>>>>> willing
>>>>>>>> 
>>>>>>>> to
>>>>>>>> 
>>>>>>>> be
>>>>>>>> 
>>>>>>>> involved?
>>>>>>>> 
>>>>>>>> - Is there a preference to use gdoc instead of
>>>>>>>> 
>>>>>>>> the
>>>>>>>> 
>>>>>>>> project's
>>>>>>>> 
>>>>>>>> wiki,
>>>>>>>> 
>>>>>>>> and
>>>>>>>> 
>>>>>>>> why? (the CEP process suggest a wiki page, and
>>>>>>>> 
>>>>>>>> feedback on
>>>>>>>> 
>>>>>>>> why
>>>>>>>> 
>>>>>>>> another
>>>>>>>> 
>>>>>>>> approach is considered better helps evolve the
>>>>>>>> 
>>>>>>>> CEP
>>>>>>>> 
>>>>>>>> process
>>>>>>>> 
>>>>>>>> itself)
>>>>>>>> 
>>>>>>>> cheers,
>>>>>>>> 
>>>>>>>> Mick
>>>>>>>> 
>>>>>>>> 
>>>>>> 
>> ---------------------------------------------------------------------
>>>>>>>> 
>>>>>>>> To unsubscribe, e-mail:
>> dev-unsubscr...@cassandra.apache.org
>>>> For
>>>>>>>> additional commands, e-mail: dev-h...@cassandra.apache.org
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>> ---------------------------------------------------------------------
>>>>> To
>>>>>>>> unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>>> For
>>>>>>> additional
>>>>>>>> commands, e-mail: dev-h...@cassandra.apache.org
>>>>>>>> 
>>>>>>>> --
>>>>>>>> alex p
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>> ---------------------------------------------------------------------
>>>>> To
>>>>>>>> unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>>> For
>>>>>>> additional
>>>>>>>> commands, e-mail: dev-h...@cassandra.apache.org
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> alex p

Reply via email to