1、设计目标

Vertica数据库可以说是7年之后的C-Store,在2012年发表的这样一篇论文,描述了现在基于C-Store的一部分改进,当然,Vertica借鉴了很多C-Store的思想,但并非完全是C-Store。由于Vertica也是分析型数据库,所以数据设计的目标也是重读不重写或者说是重分析轻事务(Vertica was explicitly designed for analytic workloads rather than for transactional workloads)。那么什么是事务压力,什么是分析压力呢。

  1. Transactional:事务压力主要来自于每秒的事务并发量可能有上千,并且这些事务涉及少量的元组。通常是删除某些元组,增加某些元组,或者修改某一列上的某一个值。
  2. Analytic:分析压力并不在于多数的事务并发,分析压力主要在于每一个事务所涉及的元组数很多,可能是一张表中的大部分元组。

既然Vertica数据库应用场景在于分析,所以主要压力来源于查询,那么列式数据库相对于传统的行式数据库而言,在事务上控制相对难,但是在查询和分析上有天然的优势。

2、数据模型

这一部分Vertica的设计和C-Store基本一致,在数据模型上,同样是projection和segment,Vertica同样是分布式数据库,在数据分布上,以Segment为单位,至于怎样划分Segement,Vertica采用Hash某一个属性值得方式进行划分。

另外在压缩方面,也和C-Store大同小异。压缩方式有六种:

  1. Auto:系统基于存储内容自动选择最优的编码方式
  2. RLE:通过一个简单的键值对(值和值出现的次数)来替换一个连续的序列
  3. Delta Value:记录增量数据。
  4. Block Dictionary:字典压缩
  5. Compressed Delta Range:通过记录和上一条记录的差异来存储数据
  6. Compressed Common Delta:对所有的增量数据建立字典。

3、查询执行

这一块儿是Vertica相对于C-Store改进的地方,查询执行的主要目的在于解析SQL语句,转变为数据库内部可以执行的执行方案。那么针对这一目的,Vertica设计了查询执行这一模块。

3.1 物理运算符

计划的执行是通过Execution Engine(EE)进行的,在EE内部,实现了7种物理运算符:

  1. Scan:从一个projection里面读出数据。
  2. GroupBy:对数据进行group和agg操作,在这一块儿有基于hash的不同算法,具体用哪一种算法取决于需要多高的效率,多大的内存以及运算符是否需要提供独立的组别。
  3. Join:实现了关系与关系之间的join操作,包括INNER,LEFT OURTER,RIGHT OUTER,FULL OUTER,SEMI以及ANTI joins
  4. ExprEval:对一个表达式进行计算
  5. Sort:对数据进行排序
  6. Analytic:计算SQL-99中的聚合运算方面的操作(max,avg,sum等等)
  7. Send/Recv:从一个节点发送元组到另一个节点或者是接收从另外一个节点发送过来的元组。

6.2 查询优化

在C-Store中,有最小化的查询优化模块,只提供了很简单的查询优化操作,join的操作顺序呢完全是随机的。这一块儿是Vertica相比于C-Store改进最大的地方,Vertica在查询优化方面经历了三个阶段:StarOpt,StarifiedOpt,以及V2Opt。

但是论文里面仅仅只是对这三个阶段进行了介绍,并没有说明实现的具体思路是什么。所以很可惜,毕竟是HP的商业数据库,所以这一块儿只能有一个大概的思想和思路。

The Vertica Analytic Database:C-Store 7 Years Later笔记的更多相关文章

  1. Vertica使用Database Designer创建完整的设计

    Vertica Database Designer 分析逻辑架构,示例数据库可以分析实力查询. 创建可自动部署或手动部署的物理架构设计(一组投射) 任何不具备数据库专业知识的人员均可使用 可以随时运行 ...

  2. .NET 云原生架构师训练营(权限系统 代码实现 Store.EntityFramework)--学习笔记

    目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...

  3. Vertica 导出数据测试用例

    需求:构建简单的测试用例,完成演示Vertica导出数据的功能. 测试用例:导出test业务用户t_jingyu表中的数据. 一.初始化测试环境 二.导出数据 2.1 vsql命令说明帮助 2.2 导 ...

  4. Vertica增加一个数据存储的目录

    Vertica增加一个数据存储的目录 操作语法为: ADD_LOCATION ( 'path' , [ 'node' , 'usage', 'location_label' ] ) 各节点添加目录,并 ...

  5. Vertica DBD 分析优化设计

    DBD = Database Designer,是Vertica数据库优化中最主要的原生工具. 首先运行admintools工具,按下面步骤依次执行: 1.选择"6 Configuratio ...

  6. Vertica节点宕机处理一例

    Vertica节点宕机处理一例: 查询数据库版本和各节点状态 常规方式启动宕机节点失败 进一步查看宕机节点的详细日志 定位问题并解决 1. 查询数据库版本和各节点状态 dbadmin=> sel ...

  7. Vertica集群扩容实验过程记录

    需求: 将3个节点的Vertica集群扩容,额外增加3个节点,即扩展到6个节点的Vertica集群. 实验环境: RHEL 6.5 + Vertica 7.2.2-2 步骤: 1.三节点Vertica ...

  8. vertica 8.0 新特性

    前言: <<line>> 表明在vertica 8.0文档中的title   正文: 1-支持平台 1.1-操作系统 <<Vertica Server and Ve ...

  9. vertica单节点安装教程

    [准备] 1.CentOS 7.6的镜像盘(下载地址:官网) 2.vertica-9.1.0-0.x86_64.RHEL6(下载地址:https://pan.baidu.com/s/1IjWBUTku ...

随机推荐

  1. matplotlib简介-高质量图形输出

    Matplotlib 是一个用来绘制二维图形的 Python 模块,它克隆了许多 Matlab 中的函数, 用以帮助 Python 用户轻松获得高质量(达到出版水平)的二维图形. 文章来源:http: ...

  2. 在maven项目结构下对于Resources目录下文件的存取

    在maven项目中,文件结构如下: proj ---src ----main ----java ----Main.java ----resources ----userFile.properties ...

  3. 爬虫工具--Beautifusoup

    import requests from bs4 import BeautifulSoup s=requests.Session() r=s.get('https://www.tumblr.com/l ...

  4. Django_学生管理系统

    一. Django简易学生管理系统 1.在pycharm中创建工程student_manage_system,添加app:student_manage 2.配置静态文件:在工程项目目录下新建目录sta ...

  5. CSS - display:inline-block 相邻元素间有4px的空白间距

    取消“display:inline-block 相邻元素间有4px的空白间距” Demo:http://jsfiddle.net/JSDavi/p6gcx6nx/ 例子: <div sytle= ...

  6. groupadd(创建组)重要参数介绍

    -g :值定用户组GID值.除非接 -o 参数(如:groupadd -g 666 -o oldboy),否则ID值必须是唯一的数字(不能为负数). 如果不指定 -g 参数,则默认从500开始 

  7. weex手机端安全键盘

    github地址:weexSafeKeyboard 效果图: 技术依赖:框架:weex+vue 弹出层:weex-ui 图标:iconfont 说明:1.如果不想用到weex-ui,可以把inputk ...

  8. rtsp://192.168.1.198:554/PSIA/streaming/channels/101

    rtsp://192.168.1.198:554/PSIA/streaming/channels/101 Playing rtsp://192.168.1.198:554/PSIA/streaming ...

  9. Spring知识梳理

    Spring框架介绍 Spring是一个贯穿各层为javaEE提供一站式解决方案的框架,Spring中主要有容器模块,AOP模块,ORM和DAO模块,Web模块等等,具体有以下功能特征. IOC(或者 ...

  10. nmon分析文件各sheet含义

    sheet名称sheet含义 SYS_SUMM系统汇总,蓝线为cpu占有率变化情况,粉线为磁盘IO的变化情况: AAA关于操作系统以及nmon本身的一些信息: BBBB系统外挂存储容量以及存储类型: ...