索引 Apache Ignite 缓存与优化的内存 CassandraDB

Posted

技术标签:

【中文标题】索引 Apache Ignite 缓存与优化的内存 CassandraDB【英文标题】:indexed Apache Ignite cache vs. optimized, in-memory CassandraDB 【发布时间】:2016-02-29 13:13:50 【问题描述】:

对于复杂的实时 Apache Storm 拓扑,我需要聚合我的数据(存储在 CassandraDB 中)以执行一些计算步骤。到目前为止,数据在需要时使用 CQL(Cassandra 查询语言)进行查询,并在 Storm bolt 中聚合。这有点慢,所以我们希望缓存聚合所需的数据。有两个选项:

将所需的数据放入索引的 Ignite 缓存中,然后从 Storm 中滑动窗口查询。在这种情况下,我们只需要一个缓存并使用不同的查询,具体取决于聚合。 将数据放入 Cassandras 内存中的堆外缓存。

Ignite 的论据:我们只需要一个索引缓存,而每个聚合都需要一个 Cassandra 表,以便快速访问。 (也是 ACID,但显然我们已经使用 CAP,因此对于我们的架构师来说不是一个强有力的论据。)

Cassandra 的论点:我们不需要引入新技术。

但是:速度呢?将索引的 Ignite 缓存与优化的(= 每个查询都有自己的表)内存中 Cassandra 相比有多快?

【问题讨论】:

【参考方案1】:

我相信 Ignite 中的内存索引 SQL 会比 Cassandra CQL 查询更快。 Apache Ignite 与 ANSI-99 SQL 兼容,因此您应该能够进行各种聚合、连接、排序、分组等。

我将在 Ignite 社区中提出一个观点,看看 Cassandra CQL 是否可以针对 Ignite SQL 进行基准测试。完成后,将在此处发布结果。

【讨论】:

如果我必须聚合并且能够在数据库端执行此操作,这将加快整个获取速度(通过连接减少数据),但如果我只想要没有聚合的数据怎么办?更快的 Ignite 有什么技术原因? Ignite In-Memory Data Fabric 通常可以解决性能和可扩展性问题。如果您不需要任何 Ignite SQL 或缓存功能,并且对磁盘数据库性能感到满意,那么我认为不需要切换。 首先感谢您如此可靠的回答。回到主题:我对磁盘速度不满意,但 Cassandra 不会在磁盘上运行,而是在内存中运行。通常 Cassandra 是在磁盘上的,这是真的,但是可以将数据缓存在内存中。这就是我要做的,这就是我比较 Ignite Cache 的内容(请参阅我的问题)。所以在我的设置中,我确实需要我的数据在内存中(由 Cassandra 和 Ignite Cache 提供),但我不需要 Ignite 的数据库内聚合功能,而只需要获取。我的问题是这两种技术在这种情况下如何比较。 这方面有什么进展吗?是否做过任何基准测试? @Make42 基准最终发布:dzone.com/articles/…

以上是关于索引 Apache Ignite 缓存与优化的内存 CassandraDB的主要内容,如果未能解决你的问题,请参考以下文章

分布式数据库缓存系统Apache Ignite

Apache Ignite——新一代数据库缓存系统

Apache Ignite 的直接内存更新

收集 Apache Ignite 的统计信息

apache ignite系列: 简介

将 Apache Cassandra 与 Apache Ignite 集成