【问题标题】:ScyllaDB 2.1 - Inconsistency with Materialized ViewScyllaDB 2.1 - 与物化视图不一致
【发布时间】:2018-12-08 06:28:04
【问题描述】:

在决定我自己的产品的技术堆栈时,我决定使用 scyllaDB 用于数据库,因为它具有令人印象深刻的性能。

为了进行本地开发,我在我的 Macbook 上设置了 Cassandra。 考虑到 ScyllaDB 现在支持(实验)MV(Materialized View),它使开发变得容易。对于开发服务器,我在 Linod 上托管的 Ubuntu 16.04 上运行 ScyllaDB。

我面临以下问题:

  1. 几周后,有一天我使用分区键从基表(从在 Ubuntu 上运行的 ScyllaDB)中删除了一个条目,相应的 MV 仍然显示已删除记录的相应条目。 在我删除了整个 Key-Space 并重新创建它之后,它得到了修复,但我无法确定导致这种不一致的原因。

  2. 当我删除 MV 并重新创建它时,它并没有复制旧数据。 我尝试搜索,但找不到强制 MV 从基表读取并自行填充的方法。

对于第一个问题,我想知道是否有人遇到过类似的情况。另外,如果我可以采取任何措施来防止这种情况发生,或者如果无法防止这种情况发生,那就是“实验性”的意思。

感谢任何帮助或参考。

【问题讨论】:

标签: cassandra nosql materialized-views scylla


【解决方案1】:

在 2.1 中,Scylla 缺少视图构建(即使用现有数据在创建时填充视图),但这在 2.2 中得到了解决。

【讨论】:

  • 嗨,我这周安装了 2.2。对于其他一些场景,我在一个已经有数据的表上创建了 MV,并且 MV 没有填充基表值。我是否必须为此在 CREATE MATERIALIZED VIEW 查询中提及任何内容?我确实环顾四周并作为最后的手段打扰你。谢谢
  • 不幸的是,它没有发布到 2.2 版本。如果您愿意,我们可以为您提供基于 2.2 的构建,其中包含视图构建和其他 MV 错误修复(向邮件列表发送电子邮件或在 slack 频道上发布)。
  • 感谢您的更新。我只需要知道我是否做错了什么。干杯
【解决方案2】:

确实 2.1 的 MV 状态是不完整的。它在本周发布的 2.2 中变得更好。它还不是 GA,但我们在 2.2 之上有一个分支,它合并了来自 master 的新更改,几乎就在那里。它应该在 2 个月内达到 GA 质量。

请注意,Cassandra MV 状态是实验性的,我们一直在打开 JIRA 票证,我们发现 C* 的 MV 存在设计缺陷。

【讨论】:

    【解决方案3】:

    tldr;如果你想要 MV,我建议你要么坚持使用 cassandra,要么在 scylla 中手动制作 MV。

    物化视图是超级实验性的。我在生产中运行了大约 6 个月,手动替换了它们的功能。这样做是为了提高性能。因此,如果性能是您的目标,我建议避免使用它们。

    我可以证明,如果在已经填充的表上创建物化视图,实际上会自行填充物化视图,所以这似乎是一个 scylladb 问题。 Cassandra 有一个不同的问题,如果您在大型生产表上执行此操作,写入操作会使数据库崩溃。

    我也没有在截断主表和看到 cassandra 中的反射方面遇到问题。

    此外,出于性能原因,我曾尝试使用 scylladb 来实现峰值。我发现它很难使用,并在花了一周时间试图让它做我知道 cassandra 会做的事情后放弃了它。

    【讨论】:

    • 非常感谢@Highstead 确认 Material 视图填充部分。我现在可以相应地搜索解决方案。另外,我正在考虑您的其他意见。如果我遇到同样的问题,它可以节省数周的开发时间。
    【解决方案4】:

    感谢@Highstead 在创建 MV 时确认如果基表有条目,则自动填充 MV。

    表和MV不一致的主查询,发现是truncate query on base table造成的。

    还发现了一个问题https://github.com/scylladb/scylla/issues/3188

    它指出目前,截断基表不会清除从该表创建的 MV。

    反之亦然,您可以在 MV 上运行 truncate 查询,它不会抛出异常(应该在哪里),即使基表包含条目,也会清除 MV。

    因此,目前的解决方案是分别截断每个 MV 以及表格。

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 2021-10-24
      • 2014-10-11
      • 1970-01-01
      相关资源
      最近更新 更多