[ 
https://issues.apache.org/jira/browse/CASSANDRA-9459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14605831#comment-14605831
 ] 

Sam Tunnicliffe commented on CASSANDRA-9459:
--------------------------------------------

At the moment, this is looking eminently doable on top of CASSANDRA-8099. In my 
WIP I have CASSANDRA-9041 working and CASSANDRA-7771 as close to working as 
possible without CASSANDRA-6717's changes to the underlying schema tables. In 
addition, I've reworked the main 2i API to make it primarily (CQL) row based, 
which should be a better fit for most of the known custom 2i implementations 
out there. 

Right now, the read & both write paths (write time & compaction) are basically 
working and I'm just troubleshooting some existing searcher issues on the main 
8099 branch. Once I'm done with that I'll post a summary of the proposed new 
API for review while I get on with building out the ancillary parts (rebuild 
and so forth) and improving test coverage.

As far as being able to utilise CQL internally in 2i implementations, it's not 
something I've looked at yet but I'm working on dummy index implementations to 
help validate the API, so I can use those to investigate.

> SecondaryIndex API redesign
> ---------------------------
>
>                 Key: CASSANDRA-9459
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9459
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Sam Tunnicliffe
>            Assignee: Sam Tunnicliffe
>             Fix For: 3.0 beta 1
>
>
> For some time now the index subsystem has been a pain point and in large part 
> this is due to the way that the APIs and principal classes have grown 
> organically over the years. It would be a good idea to conduct a wholesale 
> review of the area and see if we can come up with something a bit more 
> coherent.
> A few starting points:
> * There's a lot in AbstractPerColumnSecondaryIndex & its subclasses which 
> could be pulled up into SecondaryIndexSearcher (note that to an extent, this 
> is done in CASSANDRA-8099).
> * SecondayIndexManager is overly complex and several of its functions should 
> be simplified/re-examined. The handling of which columns are indexed and 
> index selection on both the read and write paths are somewhat dense and 
> unintuitive.
> * The SecondaryIndex class hierarchy is rather convoluted and could use some 
> serious rework.
> There are a number of outstanding tickets which we should be able to roll 
> into this higher level one as subtasks (but I'll defer doing that until 
> getting into the details of the redesign):
> * CASSANDRA-7771
> * CASSANDRA-8103
> * CASSANDRA-9041
> * CASSANDRA-4458
> * CASSANDRA-8505
> Whilst they're not hard dependencies, I propose that this be done on top of 
> both CASSANDRA-8099 and CASSANDRA-6717. The former largely because the 
> storage engine changes may facilitate a friendlier index API, but also 
> because of the changes to SIS mentioned above. As for 6717, the changes to 
> schema tables there will help facilitate CASSANDRA-7771.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to