Vertica中的projections

在vertica中,表只是一个逻辑上的概念,其真实数据其实是存储在一个个的projection中。projections以优化查询执行的格式存储数据。与物化视图类似,projections将结果集存储在磁盘上,而不是在每次查询时计算它们。您可以使用新数据或更新数据刷新projections。

projections提供以下好处:
1.压缩和编码数据以减少存储空间。
Vertica尽可能对编码数据进行操作,以避免解码成本。压缩和编码的这种组合可优化磁盘空间,同时最大限度地提高查询性能。
2.促进跨数据库群集的分发。
根据其大小,可以跨群集节点对projections进行分段或复制。
例如,可以对大型表的projections进行分段并在所有节点上分布。可以跨所有节点复制小表的未分段projections。
3.对最终用户透明。
Vertica的查询优化器会自动选择执行给定查询的最佳projections。
4.提供高可用性和恢复。
Vertica复制群集中至少K + 1个节点上的表列。如果一台计算机在K-Safe环境中出现故障,则数据库将继续使用其余节点上的复制数据进行操作。当节点恢复正常操作时,它会自动查询其他节点以恢复数据和丢失的对象。

projections与物化视图

再回顾一下projection的定义:
A projection consists of a set of columns with the same sort order, defined by a column to sort by or a sequence of columns by which to sort. Like an index or materialized view in a traditional database, a projection accelerates query processing.

物化视图:物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图和视图类似,反映的是某个查询的结果,但是和视图仅保存SQL定义不同,物化视图本身会存储数据,因此是物化了的视图。

对比项 Projections 物化视图
定义 包含列数据 包含查询结果
数据存储 数据存储在projections中 数据是从表中拷贝到物化视图里
创建方式 创建于:1. 在进行数据导入时自动创建。 2. Database designer的方式创建。3. 手动创建。 通过定义查询或声明的方式创建
更新 数据加载时会自动更新 有特定的更新流程
数据一致性 通常会包含最新的数据 可能会包含out-of-data的数据
索引 不必要也不存在 包含索引
创建projection

可通过手动创建及自动创建的方式去创建一个或多个projection。
projection的创建语句如下图所示:
在这里插入图片描述
可通过vertica 自带的Database Designer去自动创建并部署一些projection,以达到优化数据库性能的目的。

projection的分类

有3类projection,分别是超级projections,查询特定的projections,聚合projections。

超级projections

定义:包含表的所有列的projections。
对于数据库中的每个表,Vertica 至少需要一个projections,即超级projections。如果CREATE PROJECTION 指定包括所有表列,则可以创建超级projections。一个表可以有多个超级projections。

在某些条件下,Vertica 会在创建表时立即自动创建表的超级projections。
对于普通表,当建表语句中包含以下内容中的某一个时,会自动创建super projection:

AS SELECT
ENCODED BY
ORDER BY
SEGMENTED BY / UNSEGMENTED
KSAFE

当建表语句不包含上面语句中的任何一个时,只有在通过insert或copy向表内导入数据时,才会自动创建super projection。

查询特定的projections

查询特定的projections是仅包含表列子集以处理给定查询的projections。查询特定的projections可显著提高已优化查询的性能。
若想优化一些特定的查询sql,可通过手动创建projections的方式进行优化,也可以通过提供具体查询,利用Database Desinger去创建增量设计。

聚合projections

包括表达式或聚合函数(例如 SUM 和 COUNT)的查询在使用已包含聚合数据的projections时, 其执行效率更高。

补充:在vertcia的8.0版本之前,还有一种projection,叫pre-join projections,从命名上可以看出,这种projectio

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值