卡桑德拉只是存储引擎吗?

时间:2018-07-25 12:22:27

标签: cassandra

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

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

Cassandra似乎擅长存储,但实际上,除了非常基本的过滤(即单个字段)之外,它还不能作为非琐碎应用程序的独立数据库平台使用。我猜我必须接受这种用法另一个前端,例如Elastic,Solr等。另一种选择可能是接受在应用程序逻辑内过滤数据的想法,只要返回的数据集足够小,这是可行的。

1 个答案:

答案 0 :(得分:2)

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

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

通常,您需要以多种方式查询数据,因此用户通常会将其数据规范化为多个表。物化视图旨在使用户体验更好,但是正如您所指出的,它具有许多错误和局限性。此时,如果您考虑使用它们,则应该了解它们的局限性,尽管通常这是评估任何事物的好主意。

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

另一方面,Cassandra在许多用例中都很合适,例如消息传递,个性化,传感器数据等。