首页 > 解决方案 > Cassandra 只是一个存储引擎吗?

问题描述

我一直在评估 Cassandra 以在我们的微服务环境中替换 MySQL,因为 MySQL 是基础架构中唯一未分布式的部分。我们的需求是写入和读取密集型的,因为它是交换原始数据的平台。一种缺乏更好描述的“公共汽车”。我们的选择相当简单,应该保持这种方式,但由于选择查询的极端限制,我已经在努力通过一些基本过滤。

例如,如果我需要过滤数据,它必须在键中。那时我无法更改字段中的数据,因为它们是键的一部分。我可以使用 SASI 索引,但如果我需要按多个字段进行过滤,我就会碰壁。希望物化视图会对此有所帮助,但在另一篇文章中,由于一些不稳定和有问题的行为,我被告知要避免使用它们。

看起来 Cassandra 擅长存储,但实际上,作为一个独立的数据库平台,除了非常基本的过滤(即单个字段)之外,作为非平凡应用程序的独立数据库平台并不好。我猜我将不得不接受另一个前沿的使用-end 像 Elastic、Solr 等。另一个选项可能是接受在应用程序逻辑中过滤数据的想法,这是可行的,只要返回的数据集保持足够小。

标签: cassandra

解决方案


Apache Cassandra 不仅仅是一个存储引擎。它的设计是一个面向提供高可用性和分区容错性的分布式数据库,如果您想要良好和可靠的性能,可能会限制查询能力。

它有一个查询引擎,CQL,功能相当强大,但在引导用户进行有效查询方面受到限制。为了有效地使用它,您需要围绕查询对表进行建模。

通常情况下,您需要以多种方式查询数据,因此用户通常会将他们的数据非规范化到多个表中。物化视图旨在改善用户体验,但正如您所指出的,它也存在一些错误和限制。在这一点上,如果你考虑使用它们,你应该意识到它们的局限性,尽管这通常是评估任何东西的好主意。

如果您需要高级查询功能或不提前了解查询内容,Cassandra 可能不适合。您可以在 Cassandra 之上使用 Spark 和 Solr 等产品构建这些功能(例如 DataStax Enterprise 所做的),但单独使用 Cassandra 可能难以实现。

另一方面,Cassandra 非常适合许多用例,例如消息传递、个性化、传感器数据等。


推荐阅读