【发布时间】:2018-10-27 18:16:04
【问题描述】:
上周我一直在死记硬背 Cassandra,试图了解基础知识,以及它是否符合我们的需求。我想我在这一点上基本了解它,但如果它像我相信我被告知的那样有效......我就是不知道它是否合适。
我们有一个微服务平台,它本质上是我们客户之间的大型数据总线。他们使用一组 API 来推送和拉取共享数据。到目前为止,过滤非常简单......但没有办法知道未来会带来什么。
在这个平台之上是一个分析层,其中包含基于传递的数据的多个可视化(条形图、图表等)。
微服务平台是在 MySQL 之上构建的,我们可以使用集群的想法,老实说,我们没有太多运气。最重要的是,变化是痛苦的,就像 RDBMS 世界的课程一样。此外,我们预计有成千上万的并发用户会产生大量数据 - 看来我们将不可避免地遇到扩展问题。
因此,我们开始将 Cassandra 视为分布式 nosql 的潜在替代品。
我观看了 DataStax 视频,参加了另一个网站上的课程,然后开始深入研究。我发现的是:
- 数据以冗余方式存储在多个表中,每个表都使用不同的主键和集群键,以支持不同类型的查询,因为行分散在集群中的不同节点中
- 与其不支持加入,不如非规范化并创建包含大量列的“宽”表
- 数据最终是一致的,因此新写入可能无法在可预测的合理时间内轻松读取。
- CQL 虽然类似于 SQL,但主要是谎言。您存储和关键数据的方式决定了您可以使用哪些类型的查询。它似乎非常有限且不灵活。
虽然这些概念对我来说很有意义,但我很难看出这将如何满足大多数长期数据库需求。如果数据在几个不同的表中是冗余的......如何在这些表中管理和保持一致?在这种情况下,物化视图是答案吗?
我想要喜欢这个想法并喜欢分布式功能,但坦率地说,在这一点上大部分时间都被吓跑了。在过去的一周里,我感觉自己学到了很多东西,却一无所获,完全不知道该怎么做。
我研究了 JanusGraph、Elassandra 等,看看它是否会在 Cassandra 之上提供一个更简单的接口,将其降级为基本上是一个存储引擎,但我不确定这些东西中的许多是否足够成熟甚至合适,因为我们需要什么。
我想我正在寻找那些使用 Cassandra 构建东西的人的方向和见解,看看它是否适合我们正在做的事情。不幸的是,我没有时间进行研发。谢谢!
【问题讨论】:
-
简单评论一下您的想法:您需要更新/保持表中的数据同步。物化视图被标记为实验性的,尚未准备好用于生产。
-
@Horia 好的,感谢您的确认。这是我收集/假设的,但很高兴听到别人明确地说出来。听起来物化视图也是一个性能问题,即使它们足够成熟。
-
您最好在softwareengineering.stackexchange.com 上问这个问题。 StackOverflow 真正适用于事实问题,而不是意见/指导。
标签: cassandra bigdata microservices cql