Vertica数据库介绍

1、简介

         Vertica是一款基于列存储的MPP(massively parallel processing)架构的数据库。它可以支持存放多至PB(Petabyte)

级别的结构化数据。

2、特性

 1)列式存储

        vertica以列格式存储数据, 以便在查 询时获得最佳性能。相比基于行的存储, 列存储可减少磁盘I/O, 非常适合读取 密集型工作负载

2)高级压缩

       压缩会将数据转换为紧凑的格式。 Vertica 使用多种不同的压缩方法, 并 且可以根据要压缩的数据自动选择最 佳方法

3)高可用

      Vertica 使用类似RAID 的功能为数据库 提供高可用性。

4)自动数据库设计

      Vertica数据库参数几乎无需二次配置

5)海量并行处理

       支持海量的事务并行分析处理

6)应用程序集成

      集成了DBD分析引擎、Vertica MC控制 管理平台、Vertica WLM资源控制、 scheduler任务计划对接kafka等

3、vertica组件介绍

       wos:将未经压缩或建立索引的数据存储在内存中。

       ros:将数据存储在磁盘上;这些数据会经过分段,排序,压缩,以便提高优化水平

       tuple mover

            moveout ‐ 将数据从WOS 复制到Tuple Mover, 然后再复制到ROS;  数据在列式文件中会经过排序、编码和压缩

            mergeout ‐ 将若干较小的ROS 容器组合成一个较大的容器, 以 便减少碎片

 4、vertica数据导入

    

  5、Projection简介

            Projection是Vertica 存储数据的方式 – 由一个或多个表中的列集组成

            由Vertica 自动维护 – 不进行夜间Projection重建

            每个Projection存储单独的数据副本 – 编码和压缩最大程度地降低存储需求

vertica对象层次化:

      

Projection类型

  • 超级Projection (Super projection) – 包含一个逻辑表的所有列的Projection
  •  特定于查询的Projection (Query-specific projection) – 针对特定查询或一类查询优化 – 可以包括列子集
  • 预联接Projection (Pre-Join projection) – 存储一个事实表与一个或多个维度表之间的联接结果
  • 分支Projection (Buddy projection) – 具有相同列和分段的Projection位于不同的节点上,可提供高可用性(HA)

如何创建projection

  •  首次将数据加载到表中时自动创建 – 未经优化的超级Projection (Super projection)
  • 使用Database Designer 自动创建 – 经优化的超级Projection (Super projection) – 可能是特定于查询的Projection (Query-specific projection)
  • 在vsql语句中使用CREATE PROJECTION 语法手动创建

编码/压缩与排序

  • 每个列始终经过编码、压缩,或者编码并压缩。
  •  Vertica 可以直接处理编码的数据;压缩的数据则必须首先解压缩。
  • 在ORDER BY 语句中,所有Projection至少包含一个列

复制示例

  •  对于小型Projection,会将完整Projection复制到每个节点 – 本质上提供了此Projection的高可用性

分段示例

  • 对于大型Projection,将Projection数据分布在多个节点上

 

分段和高可用性示例

  • 分支Projection为分段的Projection提供高可用性 – 分支Projection (Buddy projection) 是Projection段的副本,存储在其他节点上 – K 级安全是存在于群集上的数据副本

 

分段、复制、K 级安全示例

  • 具有分支Projection (Buddy projection) 的分段
  •  复制

添加Projection

  • 创建Projection的元数据 – \i .sql – vsql –f .sql
  • 将数据复制到新Projection中 – SELECT start_refresh();(后台) – SELECT refresh();(前台)
  •  查看刷新状态 – SELECT get_projection_status ('projection_name'); – SELECT * FROM v_monitor.projection_refreshes;
  • 完成刷新后,新的Projection可以自动用于回答查询

查看并删除Projection

  • 查看所有Projection – \dj – SELECT * FROM v_catalog.projections; 
  • 删除旧Projection – 表中的最后一个超级Projection (Super projection) 不能删除 – 可能需要将久远历史标记前移(将在之后说明)
  •  SELECT make_ahm_now();
  • DROP projection ;

 

 

 

 

 

 

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值