首页 文章

Cassandra 物化观点

提问于
浏览
0

我在Cassandra 3.x版本中几乎没有与物化视图(MV)相关的查询 . 以下是我对物化视图如何工作的理解 . 任何人都可以告诉我,如果我的理解是正确的

1.)MV是基表的副本 . 假设我有一个100 GB数据的基表,我的复制因子是3.基表上的MV只不过是另一个表,其中不同的分区占用与基表相同的存储空间 . 如果我为上表创建MV,我需要添加100GB * 3(复制因子)来存储新的物化视图数据?

2.)如果上述情况有效,那么对于相同的数据将发生两个写入过程 . 在INSERT的情况下,会有一个WRITE开销,因为数据将被插入表和MV?在更新的情况下,在写入MV之前会有读取吗?

3.)基表更改时对MV的更改将异步发生?如果整个表数据被删除会发生什么,它会立即反映在MV中还是我们需要进行一些清理?

4.)可以避免使用MV时需要考虑的任何场景吗?

请帮我澄清上述问题?

提前致谢 .

1 回答

  • 0

    物化视图处理自动服务器端非规范化,无需客户端处理此非规范化,并确保基本数据和视图数据之间的最终一致性 . 这种非规范化允许使用正常的Cassandra读取路径在每个视图中非常快速地查找数据

    您的问题在下面回答:

    • 如果在创建MV时使用了 select * ,则需要增加100GB * 3的存储空间

    • 基本副本执行数据的本地读取,以便为视图创建正确的更新,并使用批处理日志在基表和视图之间提供等效的最终一致性 . 所以每个MV在写入时会花费大约10%的性能

    • 它将立即反映出来并且cassandra将负责清理 .

    • 何时不使用MV:

    • 低基数数据将在环周围创建热点如果所有数据的分区键相同,那些节点将变得过载

    • 如果会有大量的分区墓碑,性能可能会受到影响

相关问题