对于复杂的实时 Apache Storm 拓扑,我需要聚合我的数据(存储在 CassandraDB 中)以执行一些计算步骤。到目前为止,数据在需要时使用 CQL(Cassandra 查询语言)进行查询,并在 Storm bolt 中聚合。这有点慢,所以我们希望缓存聚合所需的数据。桌面上有两个选项:
- 将所需的数据放入索引的 Ignite Cache 并从 Storm 中滑动窗口查询。在这种情况下,我们只需要一个缓存并使用不同的查询,具体取决于聚合。
- 将数据放入 Cassandras 内存中的堆外缓存。
Ignite 的论点:我们只需要一个索引缓存,而每个聚合都需要一个 Cassandra 表,以便快速访问。(还有 ACID,但显然我们已经使用 CAP,所以对于我们的架构师来说不是一个强有力的论据。)
Cassandra 的论点:我们不需要引入新技术。
但是:速度呢?索引的 Ignite 缓存与内存中优化的(= 每个查询都有自己的表)Cassandra 相比有多快?