Vertica 4.1架构概述

Download Report

Transcript Vertica 4.1架构概述

Vertica 4.1架构概述
Vertica 培训
2011年8月17日
Vertica是什么?

标准分布式关系数据库 —— MPP

标准界面 (SQL - 结构化查询语言、 JDBC - Java数据库
连接、ODBC - 开放式数据库连接、 ADO.NET)

完全事务型(ACID: 原子性 - Atomicity、一致性 Consistency、隔离性 - Isolation、持久性 - Durability)

多用户、多链接
2
www.vertica.com
MPP——具有独特创新设计的纵列式数据库管
理系统
提高BI、ETL、
Hadoop/MapReduce和
OLTP的投资效益
内置式冗余可提高查
询速度
标准SQL界面
无磁盘输入输出瓶
颈,可同时进行加
载和查询
本地高可用
性
自动数据库 自动设置、优化
、数据库管理
设计
纵列导向
>
性能优于传统RDBMS
的10-100倍
>
从TBs至PBs的高扩展
性
>
与现有ETL和BI解决方
案可轻松整合
>
在现有硬件平台上具有
超高性能
>
极高的配置灵活性
高级压缩
MPP海量并行处
理
基于低成本X86 Linux
节点的本地数据库感知
集群
通过12+算法获得高达
90%的空间节余
3
www.vertica.com
纵列导向
>
>
Vertica可在各纵列的磁盘上对数据进行智能化组织

从磁盘上仅仅读取查询涉及到的纵列,而不是在传统数据库管理系统中读取所有的行与
列

以大号黑体字进行读和写

在引擎中纵列层面上迭代操作员
适用于高强度的加载与读取工作,可大幅减少内存与磁盘输入输出
纵列存储 - 读取3列
选择
均价
自
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
AAPL
AAPL
BBY
BBY
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
划勾存储
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
143.74
143.75
37.03
37.13
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
5/05/09
5/06/09
5/05/09
5/06/09
原始存储 - 读取全部纵列
位置
符号 = ‘AAPL”
日期 = ‘5/06/09’
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
NYSE
NYSE
NYSE
NQDS
AAPL
NYASE
NYAASE
NYSE
NYASE
NGGYSE
AAPL
NYASE
NYAASE
NYSE
NYASE
NGG YSE
BBY
NYASE
NYAASE
NYSE
NYASE
NGGYSE
NYGGGSE
NYSE
NYSE
NYSE
BBY
NYASE
NYAASE
NYSE
NYASE
NGGYSE
NYGGGSE
NYSE
NYSE
NYSE
NYGGGSE
NYGGGSE
NYSE
NYSE
NYSE
NYSE
NYSE
NYSE
143.74
143.74
37.03
37.13
NYSE
NYSE
NYSE
NYSE
NYSE
NYSE
NYSE
NYSE
NYSE
NYSE
NYSE
NYSE
5/05/09
5/06/09
5/05/09
5/06/09
4
www.vertica.com
标准SQL界面
>
与现有BI(商务智能)以及ETL(数据抽取转换及加载)工具轻松无缝地整合并提升配置速度

>
Vertica 数据库支持SQL(结构化查询语言)、ODBC(开放数据库连接)、JDBC(
JAVA数据库连接)和多数ETL(数据抽取转换及加载)以及BI(商务智能)报告等产
品
提升现有投资价值同时降低TCO(总体拥有成本)
海量与微量加载
ETL、复制与数据质量
SQL, ODBC,
JDBC, ADO.net
分析、报告
5
www.vertica.com
本地高可用性
>
>
数据库内类似独立磁盘冗余阵列(RAID)的功能

对推算进行组织,当一个节点发生错误时,则立即在存活节点上生成一个副本

在不同种类查询命令中自动存储冗余数据,同时提高性能

无需手动进行基于日志的恢复
无间断查询与加载

当节点发生故障时系统持续进行加载与查询

通过询问其它节点对缺失数据进行恢复
B
2
A
2
C
2
B
1
A
1
C
1
B
3
A
3
C
3
A
3
B
3
C
3
A
2
B
2
C
2
A
1
B
1
C
1
6
www.vertica.com
自动数据设计
>
Vertica 数据库设计者推荐使用一种物理数据库设计,为用户的查询需求提供最佳性能

>
最大限度减少数据库管理员花费在物理数据库调试上的时间
具有重新设计增值型数据库的功能,根据因时间而改变的工作量进行优化

在Vertica数据库配置之前或之后运行

对于工作量变化反应快速

后台程序任何时候均可即时运行
数据库管理员提供
逻辑模型
 生成表格
>
以下样本集
 典型查询
 样本数据
>
>
数据库设计者生成
物理模型,并且进行压缩
 令样本集中查询命令快速运行
 令其符合微量加载的要求
 确保所有SQL查询能得到解答
>
A
B
C
B
A
C
K级安全水平
(A B C | A)
(B A C | B A)
7
www.vertica.com
高级压缩
>
Vertica通过积极压缩用高速CPU周期代替慢速的磁盘输入输出

利用数据诸如排序与基数之类的属性

无需提前解码即可进行操作

可大范围跨排运行

实施后期实体化

最迟原则下的智能解码
编码机制
交易日期
客户注册号
5/05/200916
5/05/2009,
5/05/2009
5/05/2009
5/05/2009
5/05/2009
5/05/2009
5/05/2009
5/05/2009
5/05/2009
5/05/2009
5/05/2009
0000001
0000001
0
0000001
2
0000003
2
0000003
4
0000005
10
0000011
10
0000011
19
0000020
25
0000026
49
0000050
0000051
0000052
100.25
ÞìÃp:
±æ+©>
302.43
Hì&ì¥YÛ¡
×¥
©éa½?50ÓJ
991.23
Few values
sorted
Many values
integer
Many distinct
values
RLE
DeltaVal
Many Others…
准时解码
交易
磁盘:编码+压缩
73.45
134.09
843.11
208.13
114.29
83.07
43.98
229.76
引擎:
编码块
结果
LZO
原始数据
www.vertica.com
网络:编码
块+可选LZO
压缩数据
8
海量并行处理(MPP)
>
>
并行设计促进了数据推算,实现了分布式存储和工作量

“主动”冗余

自动复制、故障切换与恢复
无共享、基于网格的数据库结构提供商品硬件集群上的高可扩展性

增加节点可获得最高的容量及性能

数据中心成本越低,密度和扩展性越高
客户网络
私人数据网络
节点均对等
Node 1
 2 Quad Core
 16+GB RAM
Node 2
 2 Quad Core
 16+GB RAM
Node 3
 2 Quad Core
 16+GB RAM
– 无专用节点
– 所有节点都是对等的
– 可向任意节点查询/加载
– 持续的、实时的加载与
查询
1+ TB
1+ TB
1+ TB
9
www.vertica.com
Vertica 构架的优势

基于纵列的存储

海量并行处理 (MPP)

高级压缩功能

具有自动恢复功能的内置式容错

实时分析——同时进行高速加载与查询
10
www.vertica.com
Vertica内部组织
推算
推算

表格具有逻辑性

推算具有物理性

数据需要存储、排列和压缩

冗余副本可优化为不同的查询组
A B C
Table “foo”:
逻辑性
物理性
Projections “foo_p1”,
“foo_p2”,
“foo_p3”:
A
B
C
(A B C | A)
B
A
C
(B A C | B A)
C
A
(C A| C)
= sort
columns
12
www.vertica.com
推算的基础

经过优化的物理存储







基础表格未被存储
物理设计对终端用户是透明的
数据以排序整理和压缩后的模式进行存储
无需索引(纵列可自行索引)
不存在“表格扫描”之类功能,只有“纵列扫描”
优化为通用查询格式
对于查询的最佳推算由优化器在查询执行时段进行
选择
13
www.vertica.com
推算的基础:维护

无争议维护




数据直接载入推算中
无需重建/刷新
动态增加新的推算
数据库设计者建议在模型、数据和查询工作量基础
上进行优化推算
14
www.vertica.com
推算与高可用性


从一项超级推算开始—— 一份完整的数据副本
复制数据至分支推算



分支推算可通过不同方式进行优化
将每项推算分割为不同行组
将分割部分分配至数据库节点
Projection
Buddy Projection
推算
分支推算
15
www.vertica.com
创建推算DDL(数据定义语言)
create projection snmp_p1 (
host
encoding rle,
if
encoding rle,
time
encoding commondelta_comp,
metric
encoding rle,
value
encoding multialgorithm_comp
) as
select
host,
if,
time,
metric,
value
from snmp
纵列表格与编码
基础查询(可增加)
排序次序
order by host, if, metric, time
segmented by hash ( host, if, time, metric )
all nodes;
分割
16
www.vertica.com
自动设计与管理
>
Vertica数据库设计者建议使用一种物理式数据库设计,可为终端客户的查询需求提供最佳的性能

>
最大限度减少数据库管理员花费在物理数据库调试上的时间
具有重新设计增值型数据库的能力,根据因时间而变化的工作量进行优化

在Vertica数据库配置之前或之后运行

对于工作量变化反应快速

后台程序任何时候均可即时运行
数据库设计者生成
数据库管理员提供
物理模型,并且进行压缩
 令样本集中查询命令快速运行
 令其符合微量加载要求
 确保所有SQL查询能得到解答
>
逻辑模型
 生成表格
>
以下样本集
 典型查询
 S样本数据
>
>
A
B
C
B
A
C
K级安全水平
(A B C | A)
(B A C | B A)
17
www.vertica.com
推算——总结



推算

是经过编码和压缩并按照某种次序进行排序和分割的纵列集
合

在数据加载过程中自动进行维护

可存储多种推算,针对不同查询进行调整
多种推算的高可用性(k级安全性)

当节点缺失,优化器可动态进行查询规划

通过查询其它节点进行自动节点恢复
自动数据库设计

数据库被存储于经过排序、编码和压缩的推算中

无需繁复的表格空间调试、分隔、索引、设计和更新、MVs
就在基础表格的顶端
18
www.vertica.com
Vertica内部组织
分布式查询执行
Vertica查询执行的基础

SQL 查询的写入是针对表格的


Vertica将查询转化为针对推算的执行


从fact中选择count(*)
从 fact_p1中选择count(*);
查询优化器选择最优的查询规划

为查询选择最佳推算

选择一项可执行“加入”、“查询推算”等任务的命
令

成本最低的查询规划将被选定进行查询
20
www.vertica.com
查询规划样本
查询:
select name, state, avg(age), count(*)
from customer
where state in ('MA', 'NH')
and gender = 'M'
group by state, name;
查询规划:
访问路径:
+-GROUPBY HASH [Cost: 34, Rows: 2]
|
Aggregates: sum_float(customer.age), count(customer.age), count(*)
|
Group By: customer.state, customer."name"
| +---> STORAGE ACCESS for customer [Cost: 33, Rows: 2]
| |
Projection: public.customer_p1
| |
Materialize: customer.state, customer.age, customer."name"
| |
Filter: (customer.gender = 'M')
| |
Filter: (customer.state = ANY (ARRAY['MA', 'NH']))
21
www.vertica.com
查询执行工作流程

客户连接节点并发出查询指令

客户连接的节点成为起始节点

集群中其它节点成为执行节点

起始节点对查询进行分析并选择一项执行规划

起始节点将查询规划分配至执行节点
select count(*) from fact;
执行节点
起始节点
执行节点
22
www.vertica.com
查询执行工作流程

所有节点均在当地执行查询规划

执行节点将部分查询结果发回到起始节点

起始节点将所有节点的结果进行汇总

起始节点将最终结果返回给用户
select count(*) from fact;
10
执行节点
3
起始节点
10
3
执行节点
4
23
www.vertica.com
Vertica内部组织
事务处理与锁定
Vertica事务处理


事务处理

运算的顺序、以COMMIT(确认提交)或者ROLLBACK(回
滚)结束

提供数据库运算的原子性和隔离性
事务起源

用户事务
– 隐秘的或明显的(事务起始)

内部Vertica事务处理
– 初始化/停机
– 恢复
– 数组移动:合并与移出
25
www.vertica.com
Vertica 事务处理模式

所有改变均是为了生成新的文件

所有文件均无法原地更新
目前阶段
完结阶段
久远的历
史标记
历史查询 (无
锁)
最近阶段
(无锁)
插入、删除、更新
与最近查询I
WO
在数据操作语言(DML)提交上目前阶段即高级阶段
S
26
www.vertica.com
Vertica 事务处理模式的优点



www.vertica.com
读与写之间不存在争议

一旦文件被写入磁盘,就不可能再次写入

被删除的数据将被标记为已删除,不会被立即移除

更新与删除的模式相同,此外还有插入

如需回滚,只要将未完成的文件丢弃即可

优点:不需要撤销日志
由K级安全性带来的持久性

所有数据被冗余存储在多个节点上

通过查询其它节点进行数据恢复

优点:不再需要重建日志
简单/轻量级确认提交及协议书
27
事务处理的隔离层面



读操作提交(默认)

其它事务一旦发生变化便可发现

轻量级锁定——数据选择不需锁定
序列化

你的事务成为系统中的唯一事务,你无法看到其他
人的事务变化

从锁定的角度看代价很高,经常导致阻碍其他人的
事务或者他们的事务阻碍你
行为方式与其它数据库是一致的
28
www.vertica.com
事务的隔离层面与锁定

表格层面锁定

锁定类型(用户事务)

共享
– 不可在读操作提交模式中使用
– 序列模式中读(选择)时必需

冲突图表
S
I
X
插入
– 写入时必需(插入、复制)

专用
– 删除/更新时必需

同时进行加载与查询,无锁定争议

在读操作提交模式中
29
www.vertica.com
Vertica内部组织
混合型数据存储:ROS与WOS
混合型数据存储:ROS与WOS

ROS – 磁盘式优化数据存储

WOS – 面向低延时数据载入的内存式数据存储
读优化存储
(ROS)
写优化存储
(WOS)
数组移动
• 磁盘式
• 已排序/已压缩
• 已分割
•大量数据直接载入
异步数据迁移
 内存式
 未排序/未压缩
A
B
C
 已分割
 低延时/少量快速插入
(A B C | A)
排序数据
31
www.vertica.com
数组移动 - 移出

频繁载入WOS,几秒钟内数据即可查询

移出过程与数据移动到ROS的过程是异步的
写优化原始存储
(WOS)
读优化纵列式存储
(ROS)
IBM
60.25 10,000 1/15/2006
IBM ,2
60.25
10,000
1/15/2006, 2
NFLX 28.29 25,000 1/16/2006
60.19
7,100
MSFT 60.53 12,500 1/15/2006
MSFT,1
60.53
12,500
1/15/2006, 1
IBM
60.19 7,100 1/15/2006
NFLX ,1
28.29
25,000
1/16/2006, 1
数组移动
异步数据迁移
IBM,1
60.25
10,000
MSFT,2
62.29
11,000
0.53
13,500
1/16/2006,1
28.29
25,000
1/16/2006,1
NFLX,1
1/15/2006, 2
Sorted Data
32
www.vertica.com
数组移动——合并

合并就是将ROS的多个存储容器结合起来以减少存储残片
写优化原始存储
(WOS)
读优化纵列存储
(ROS)
IBM ,2
数组移动
异步数据迁移
60.25
10,000
60.19
7,100
MSFT,1
IBM,3
60.53
60.19
12,500
7,100
NFLX ,1
28.29
60.25,2
25,000 1/16/2006, 1
10,000,2
MSFT,3
IBM,1
NFLX,2
MSFT,2
NFLX,1
Sorted Data
www.vertica.com
62.29
11,000
60.53,2
12,500
60.25
13,500
10,000
1/15/2006, 2
1/15/2006, 1
1/15/2006, 4
1/16/2006,2
1/15/2006,
2
28.29,2 25,000 ,2
62.29
11,000
60.53
13,500
1/16/2006,1
28.29
25,000
1/16/2006,1
33
实时分析
>
对大量数据进行实时分析对于Vertica分析数据库来说已成为现实

混合型存储结构实现了低延时载入

事务处理模式和异步数组移动的行为模式实现了同步载入/查询
>
Vertica获得了非常低的数据延迟水平(以妙计)以及完整的关联菜单(具体历史的存储年
份)
>
Vertica支持数百位用户同时操作,查询可在数秒内运行完成
加载
事务
读优化存储 (ROS)
写优化存储 (WOS)
微量载入
数组移动
目前阶段
完结阶段
• 磁盘式
• 已排序/已压缩
• 已分割
•大量数据直接载入
异步数据迁移
 内存式
 未排序/未压缩
A
B
C
历史查询(无
锁)
最近阶
段
插入、删除、更新与最近查询
I
 已分割
 低延时/少量快速插入
(A B C | A)
一致认为目前阶段即高级阶段(用户认定)
34
www.vertica.com
提问?

如需了解详情,请登录 www.vertica.com索取

Vertica产品资料
培训资料
知识库
Vertica技术支持 ([email protected])

Vertica培训( [email protected])



35
www.vertica.com