Tsa*_*mba 3 cql bigdata cassandra microservices
上周我一直在 Cassandra 上死记硬背,试图了解基础知识,以及它是否适合我们的需求。我想我现在在基本层面上理解它,但如果它像我相信我被告知的那样工作......我只是不知道它是否合适。
我们有一个微服务平台,它本质上是我们客户之间的大型数据总线。他们使用一组 API 来推送和拉取共享数据。到目前为止,过滤非常简单……但无法知道未来会带来什么。
该平台的顶部是一个分析层,具有基于传递的数据的多个可视化(条形图、图形等)。
微服务平台建立在 MySQL 之上,其想法是我们可以使用集群,老实说,我们对此并不走运。最重要的是,变化是痛苦的,就像 RDBMS 世界中的课程一样。此外,我们预计会有大量数据和成千上万的并发用户 - 似乎我们将遇到不可避免的扩展问题。
因此,我们开始将 Cassandra 视为分布式 nosql 的潜在替代品。
我观看了 DataStax 视频,在另一个网站上学习了课程,然后开始深入研究。我发现的是:
虽然这些概念对我来说很有意义,但我正在努力了解这将如何满足大多数长期数据库需求。如果数据在几个不同的表中是冗余的……它是如何在这么多表中管理和保持一致的?在这种情况下,物化视图是答案吗?
我想喜欢这个想法并喜欢分布式功能,但坦率地说,在这一点上,我最害怕。我觉得我在上周学到了很多东西,但什么也没学到,我完全不确定如何继续。
我查看了 JanusGraph、Elassandra 等,看看它是否会在 Cassandra 之上提供一个更简单的界面,将其降级为基本上一个存储引擎,但我不确定这些东西中的许多是否足够成熟甚至合适,以满足我们的需要.
我想我正在寻找那些使用 Cassandra 构建东西的人的方向和洞察力,看看它是否适合我们正在做的事情。不幸的是,我的研发时间用完了。谢谢!
了解 Cassandra - 它可以取代 RDBMS 吗?
这里的简短回答是“不”。当您突然需要扩展时,Cassandra 并不是 RDBMS 的简单替代品。
虽然这些概念对我来说很有意义,但我正在努力了解这将如何满足大多数长期数据库需求。
如果您将其应用于正确的用例,它可以满足长期的数据库需求。
免责声明:我是有点卡桑德拉狂热者的。我已经使用它一段时间了,为该项目做出了微小的贡献,被评为“Cassandra MVP”,甚至与人合着了一本关于它的书。我认为这是一项很棒的技术,你可以用它做出惊人的事情。
话虽如此,但它有很多不擅长的地方:
查询灵活性。将行分布到多个节点以满足操作规模的权衡是,您必须提前了解查询模式,然后严格遵循它们。这个想法是,您希望由单个节点提供所有查询。并且您必须对数据模型进行一些思考才能实现这一目标。未绑定的查询(SELECT没有WHERE子句的s )成为敌人。
就地更新数据。计划通过一个键存储值,然后更新它们很多(例如:状态)?Cassandra 不适合这种情况。这是因为 Cassandra 有一个基于日志的存储引擎,它不会覆盖任何东西……它只是将它过时了。所以你之前的值仍然存在,并且仍然占用空间和计算资源。
删除数据。在分布式数据库世界中删除数据很棘手。毕竟,您如何不将任何内容复制到另一个节点?Cassandra 对这个问题的回答是使用一种称为墓碑的结构。墓碑占用空间,会降低性能,并且需要保留足够长的时间以进行复制(使其移除变得棘手)。
维护数据一致性。Cassandra 具有高可用性和分区容错性,因此采用了“最终一致性”的概念。因此,它的设计确实不具有一致性也就不足为奇了。它有很多机制可以帮助保持数据的一致性,但它们远非完美。另外,确实没有办法确定您的数据是否同步。
如果数据在几个不同的表中是冗余的……它是如何在这么多表中管理和保持一致的?在这种情况下,物化视图是答案吗?
在可预见的未来,我将继续远离物化视图。他们是“实验性的”是有原因的。基本上,一旦它们不同步,让它们恢复同步的唯一方法就是重建它们。
我指导我的开发团队保持他们的查询表(包含相同数据的表,只是键控不同)与BATCH语句同步。事实上,BATCH 用词不当,因为它可能应该被命名为“ATOMIC”。由于它的名字,它被严重误用,误用会导致问题。但是,它确实保持原子应用的突变,所以这确实有帮助。
基本上,仔细检查您的数据库要求。如果 Cassandra 不削减它,然后尝试找到一个。CockroachDB(或其他 NewSQL 之一)可能更适合您所谈论的内容。它试图成为 Postgres 的替代品,并且使用一些类似 Cassandra 的机制进行扩展,因此它可能值得研究。
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |