Cassandra的数据结构是一种类似Json格式的列表:
KeyA ColumnA ColumnB ColumnC
其中ColumnA是一种属性值,属性名/属性值 name/value这种值对。
按照上面这张图,建立一种查询某个服务器在某段时间发生的事件的索引步骤如下:
1. 首先从原始日志记录中读取出事件数据
2. 如果事件包含服务器名和发生时间,那么创建一个新的数据Key,以服务器和发生时间为Key,如server是esb12,时间是8:00,那么新的key是esb12--8:00
3. 将这个新的Key数据创建到Cassandra中,新数据的值是事件ID。
4. 将这个新的数据作为一个列创建在indexRow列表中。这个indexRow列表的数据是类似esb11--6:00 ... esb12--8:00 esb12--10:00 ...数值。
当需要查询某段时间内某个服务器发生的事件,实际首先查这个indexRow,得到符合范围的数据值,而数据值是Event ID,再根据ID到原始事件日志中获得数据集结果。