To understand how Cassandra utilizes the available system memory, it is important to understand its in-memory data structures. Cassandra's in-memory data structures are as follows.
It is expensive to have the whole index in memory because of its size. Index is a map of row keys and SSTable locations where the actual data resides.
A bloom filter is the in-memory structure per SSTable, which helps Cassandra avoid a disk seek before the index is scanned for the data bloom filter. It is consulted and checked if the row is present. A bloom filter returns a Boolean advice irrespective of whether the data is in the SSTable or not. It can have a false-positive too. If this happens, we will read the SSTable and return without any row, which is fine since it's an optimization. The bloom filter's false-positive chance can be set in the column family level.