卡桑德拉物化观点

时间:2017-03-31 12:19:30

标签: cassandra materialized-views

我在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 :(得分:0)

  

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

您的问题在下面回答:

  1. 如果您在创建MV时使用select *,则需要添加100GB * 3存储空间

  2. 基本副本执行数据的本地读取,以便为视图创建正确的更新,并使用batchlog在基表和视图之间提供等效的最终一致性。因此,每个MV在写入时将花费大约10%的性能

  3. 它会立即反映出来,而cassandra会负责清理。

  4. 何时不使用MV:

    • 低基数数据会在环网周围创建热点 如果所有数据的分区键相同,那些节点将变得过载
    • 如果存在大量分区逻辑删除,性能可能会受到影响