425.二级索引(对要索引的 value 摘要,生成 RowKey)

在 Cassandra 中,数据都是以 Key-value 的形式保存的。

KeysIndex 所创建的二级索引也被保存在一张 ColumnFamily 中。在插入数据时,对需要进行索引的 value进行摘要,生成独一无二的key,将其作为 RowKey保存在索引的 ColumnFamily 中;同时在 RowKey 上添加一个 Column,将插入数据的 RowKey 作为 name 域的值,value 域则赋空值,timestamp 域则赋为插入数据的时间戳。

如果有相同的 value 被索引了,则会在索引 ColumnFamily 中相同的 RowKey 后再添加新的Column。如果有新的 value 被索引,则会在索引 ColumnFamily 中添加新的 RowKey 以及对应新的 Column。

当对 value 进行查询时,只需计算该 value 的 RowKey,在索引 ColumnFamily 中的查找该RowKey,对其 Columns 进行遍历就能得到该 value 所有数据的 RowKey。