I've been studying and experimenting some with the SecondaryIndex API,
specifically extending the PerRowSecondaryIndex class.

I understand from this recent
thread<http://mail-archives.apache.org/mod_mbox/cassandra-dev/201205.mbox/%3CCAMYB=b6c9HTDgOFHQS-UwS4UF2a6NiMs3+C++iG3M8z4xgzn=g...@mail.gmail.com%3E>that
this feature is not yet widely used, but I was hoping someone could
shed some light on its intended concept of operation:

My intuition was to specify my custom index for every column in the column
family that I want to trigger an update for this index. This has the
desired effect for a 'built' index as new row mutations arrive. What I'm
confused about is what happens as the index is built for the first time.
What I'm seeing is that an asynchronous build is kicked off for every
column to which this index is attached (which is obviously undesirable).

It's plain to see why this is happening following the SecondaryIndexManager
reload/addIndexedColumn routines. Now what I'm wondering is if there is
room for improvement here:

Should the Manager wait to initiate an index build until the last column
has been added to a given rowLevelIndex? Or is the impetus on the
PerRowSecondaryIndex implementation to 'fool' the manager into bypassing
the build until the last column is added?

My gut says the former would be preferred since the latter could be a
fragile use of the Interface, but I'm just getting into this area and maybe
I'm thinking about things wrong.

Any input would be appreciated.

Regards,
Adam Holmberg

Reply via email to