首页 > 解决方案 > 为什么 ScyllaDB MV 已准备好生产,而 Cassandra MV 仍处于试验阶段,不建议使用?

问题描述

Cassandra 的 MV 尚未准备好生产:

  1. Cassandra 物化视图的影响
  2. 限制:https ://docs.datastax.com/en/cql-oss/3.3/cql/cql_using/knownLimitationsMV.html
  3. https ://techblog.fexcofts.c​​om/2018/05/08/cassandra-materialized-views-ready-for-production /:

事实证明,MV存在问题。最大的问题是 MV 与基表不同步。这似乎在使用不是基表键的键创建 MV 时发生。Cassandra 不提供任何机制来检查基表和任何 MV 之间的完整性。因此,除非您手动执行此操作,否则您将忘记任何差异。如果您确实发现任何差异,修复它们的唯一方法是删除并重新创建 MV。

Cassandra 的 MV 自 2015 年以来已经 5.5 年:https ://www.datastax.com/blog/new-cassandra-30-materialized-views 。

到 ScyllaDB,第一个版本于 2016 年发布的数据库:https ://www.scylladb.com/2016/03/31/release-1-0/ 。ScyllaDB 将 MV 推广为生产就绪。

为什么 Cassandra 不能像 ScyllaDB 那样创建生产就绪的 MV?我在他们的网站上没有看到 ScyllaDB 上的 MV 有任何限制。MV 非常有用,我不明白 Cassandra 从来没有成功生产过 MV,这个问题已经开放了 5 年多:https ://issues.apache.org/jira/browse/CASSANDRA-10346 。

ScyllaDB是如何解决MV不一致问题的?为什么 Cassandra 不能/还没有解决 MV 问题?

标签: cassandramaterialized-viewsscylla

解决方案


MV 的 Scylla 实现类似于 Cassandra,但并不完全相同。今天,即使使用 Scylla,如果视图和基础不同步,除了完整的视图重建之外,没有 100% 安全的方法来修复它。但是,我们大量修复和改进了 MV 实现,并减少了这种情况发生的机会。这是当前已关闭:打开带有 MV 的错误的捕获: https ://github.com/scylladb/scylla/issues?q=is%3Aissue+is%3Aopen+materialize+view+

Scylla 的开发速度更快,活跃提交者的数量也更高(尽管令人惊讶)。现在我们正在研究 Raft,以使常规操作保持一致,从而完全同步视图和基础。


推荐阅读