You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cassandra.apache.org by Alex Denisov <11...@gmail.com> on 2017/09/16 07:23:41 UTC

How indexes work?

Hi folks,

I have few questions regarding indexes.
I skimmed through the source code, and I have a brief understanding of how indexes work in Cassandra.
However, some cases are not clear to me.

1. One creates an index on an existing table (timestamp T1). Eventually, Cassandra builds the full index for the table (timestamp T2).
If I understand correctly, then Cassandra cannot use the index between T1 and T2 because it does not cover the whole table.
What happens with the queries between T1 and T2?
How does Cassandra know where the index is full or not?
How is this decision affected by the distributed nature of the system?

2. An index exists on a table. One inserts a new value (V) into the table (T1), then the value gets into the index and being inserted into the index's storage (T2).
What happens if a query happens between T1 and T2? If Cassandra uses the index, then V is not returned to a user (even though it is technically in the database), right?
The same question applies to the other mutations (update/delete).


I believe there are many more edge cases I am not aware of, or I did not consider. Please, feel free to share them here if you know any other tricky places.

Thank you.
--
AlexDenisov
Software Engineer, https://lowlevelbits.org