幻灯片 1

Similar documents
水晶分析师

PowerPoint Presentation

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

untitled

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

ebook 96-16

Oracle 4

目錄

untitled

回滚段探究

11.2 overview

目錄 C ontents Chapter MTA Chapter Chapter

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

Oracle Database 10g: SQL (OCE) 的第一堂課

untitled

Oracle高级复制冲突解决机制的研究

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

123

三. 发现表被删除, 开始着手解决 1. 该表所在表空间离线 ( 确保删除表所在位置不会被重写 ) SQL> alter tablespace raw_odu offline; Tablespace altered. 2. 通过 logmnr, 找出被删除的数据 data _object _id 1

Oracle9i 的查询优化

运维2010年端午节日封网及值守

未命名

通过Hive将数据写入到ElasticSearch

季刊9web.indd

SQL Server SQL Server SQL Mail Windows NT

( Version 0.4 ) 1

V8_BI.PPT [只读]

ABOUT ME AGENDA 唐建法 / TJ MongoDB 高级方案架构师 MongoDB 中文社区联合发起人 Spark 介绍 Spark 和 MongoDB 案例演示

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

starter_pdfmerge

一步一步教你搞网站同步镜像!|动易Cms

01 SQL Server SQL Server 2008 SQL Server 6-1 SSIS SQL Server ( master ) ( msdb ) SQL Server ( master ) master 6-1 DTS sysadmin 6-1 sysa

06?????k?g

「人名權威檔」資料庫欄位建置表

PowerPoint 演示文稿

ebook10-5

ebook46-23

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

VB控件教程大全

基于UML建模的管理管理信息系统项目案例导航——VB篇

幻灯片 1

jdbc:hsqldb:hsql: jdbc:hsqldb:hsqls: jdbc:hsqldb:http: jdbc:hsqldb:https: //localhost // :9500 / /dbserver.somedomain.com /an_alias /enrollme

RUN_PC連載_12_.doc

习题1

支付宝2011年 IT资产与费用预算

untitled

ebook4-14

untitled

USING MAYA ANIMATION Keyset set Maya sets partitions MEL MEL copykey cutkey pastekey scalekey snapkey keytangent bakeresults MEL Command Reference Edi

Apache CarbonData集群模式使用指南


プリント

ebook 165-5

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

基于ECO的UML模型驱动的数据库应用开发1.doc

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

ebook45-5

Oracle高级复制配置手册_业务广告_.doc

ebook 185-6

untitled

Microsoft Word htm


sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al

Microsoft Word - 第三章第一節第二節.doc

untitled

Microsoft Word 電腦軟體設計.doc

Postgres_2017象行中国杭州第一期_张文杰(卓刀)_Greenplum备份恢复浅析

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

untitled

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

untitled

untitled

2 一 股 市 行 情 回 顾 指 数 上 证 综 指 深 证 成 指 中 小 板 创 业 板 沪 深 300 IF.CFE 涨 跌 幅 0.42% 0.06% 2.13% 3.88% 0.07% -0.17% 一 周 走 势 回 顾 : 周 一 : 两 市 双 双 低 开 低 走, 权 重 股 集

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

教 学 目 标 描 述 主 要 数 据 库 对 象 创 建 表 描 述 列 定 义 时 可 用 的 数 据 类 型 改 变 表 的 定 义 删 除 改 名 和 截 断 表 描 述 每 个 DML 语 句 插 入 行 到 表 中 更 新 表 中 的 行 从 表 中 删 除 行 描 述 约 束 创 建

四川省普通高等学校

Microsoft PowerPoint - Ch6

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Business Objects 5.1 Windows BusinessObjects 1

Microsoft Word - Functional_Notes_3.90_CN.doc

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

Microsoft Word - SDD.doc

Microsoft Word - 序+目錄.doc


R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

PowerPoint 演示文稿

PowerPoint Presentation

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

曹鲁

作业参考答案

untitled

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

ebook70-19

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

Microsoft Word - 1HF12序.doc

Microsoft Word - 讀報看科普─人體篇_橫_.doc

Microsoft Word - 2B802內文.doc

鍟嗗搧瑙傚療鈥㈤挗鏉

席 远 杨 一 人 了, 正 当 她 开 枪 时 却 发 现 子 弹 没 了 该 死, 只 能 赤 手 空 拳 了 洛 水 云 与 席 远 杨 交 起 手 来, 洛 水 云 出 手 招 招 致 命 想 那 席 远 杨 也 不 是 泛 泛 之 辈, 很 快 掌 握 了 洛 水 云 出 招 路 数 看

Transcription:

Greenplum 介绍 唐成 - 2011.02.17

汇报提纲 Greenplum VS hadoop Greenplum 架构 Greenplum 的高可用方案 GP 分布式数据库功能介绍 理解 GP 的查询处理

Greenplum VS hadoop 比较项 Greenplum Hadoop+hive 软件性质商业软件开源 集群规模一般在 100 台以下可以到上万台 性能 SQL 的支持程度 在 100 台以下时, 性能比 hadoop 好 单个 SQL 可以做到秒级别 集群规模越大, 总体性能越好 单个 SQL 最少也有数十秒 支持完善, 几乎所有支持有限的 SQL, 查询 PostgreSQL 支持的 SQL, 支持子查询, 但不支持 gp 都支持 窗口函数 大部分 dml 都不支持, 只支持 append 稳定性有较多的 bug 比较稳定

Greenplum 架构图 Lan Segment Host Client Host 高速以太网交换机 Segment Host Segment Host Master Host Segment Host

Greenplum 架构 : Master 介绍 Master 服务器是外面用户访问 greenplum 的入口 用户都是连接 master 服务器的, 对于外部用户来说, 他并不与 segment host 服务器发生任何关系, 外部用户的网络只需要与 master 服务器连通就可以了, 不需要访问 segment host 服务器 所有的用户连接都是直接连接到 master 服务器上的 Greenplum 数据库是基于 PostgreSQL 数据库的, 所以可以用 PostgreSQL 数据库的工具来连接 Greenplum 数据库, 如 java 程序可以使用 PostgreSQL 的 jdbc 驱动来访问 Greenplum 数据库, 也可以使用 psql 工具或 pgadminii 来管理 Greenplum

Greenplum 架构 : Master 介绍 Greenplum 的 Master 数据库也是一个被改造过的 PostgreSQL 数据库, 它包含了整个分布式数据库中的所有元数据, 如表结构定义 索引等等 但其并不存储实际的数据, 实际的数据是存储在 segment 数据库的 master 服务器接受从用户发来的连接, 并做用户验证, 接收用户发来的 sql, 生成分布式执行计划, 再把分布执行计划分发到 segment 上执行, 接收 segment 返回的数据, 最后返回给用户

Greenplum 架构 : Segment 介绍 Segment 是数据的实际存储的地方, 也是一个经过改造过的 PostgreSQL 数据库 它做实际的数据处理工作 Greenplum 建议在 Segment host 上建多个 Segment 数据库, 数量等于实际的 CPU 的 core 数

Greenplum 架构 : 内部网络 Segment host 与 master 是通过 greenplum 的内部网络互联起来的, 外部用户不需要访问这个内部网络的 Segment 与 Segment 之间是有网络连接的, 所以 Segment 之间可以直接交互数据的 Greenplum 默认使用 UDP 协议, 不过我们发现 UDP 有时不稳定, 我们一般都使用 TCP 协议 使用 TCP 协议, greenplum 最多 1000 个 segment

Greenplum 中的高可用方案 Segment 的 mirror 当配置了 segment mirror, 当 segment primary 不能写的时候,greenplum 会自动切换到 mirror 当 master 不能连接到一个 segment instance 时, 会把这个 instance 标记为 invalid

Greenplum 中的高可用方案 默认情况下,greenplum 的失败操作模式是 readonly" 模式, 也就是说如果一个 segment 坏了, 整个 greenplum 会变成只读, 不能写了 如果模式是 continue 模式时, 一个 segment 坏了的时候, 数据库仍然可以继续工作 但由于 segment 的 primary 与 mirror 端的数据不同步了, 所以恢复的时候需要花比较长的时间 对于 Greenplum 3.X 的版本, 恢复时, 需要把好的节点上的所有数据都 copy 到坏的机器上 而 Greenplum4.0 版本增加了功能, 当备份节点坏的时候, 主节点可以把增量数据记下来, 这样当备份节点的主机恢复时, 只需要恢复增量数据就可以了 要让原先已 offline 的节点再加入集群中, 需要重启集群

Greenplum 中的高可用方案 对于 Greenplum 3.X 的版本,segment 的 primary 与 mirror 之间是做的逻辑同步,mirror 端的数据库实际上也是可以读写的 而 Greenplum4.0 版本后,primary 与 mirror 实际上是物理同步, 这时 mirror 一直处于恢复状态, 不能读也不能写

高可用之 Master Mirroring 对于 Greenplum Master 的 primary 与 mirror 之间的同步就是使用 PostgreSQL 的日志同步方案 master 的 mirror 可以在建库时建, 也可以在建完 greenplum 后再添加

理解 greenplum 分布式数据库

理解 GP 分布式数据库

理解 GP 的数据分布策略 Hash 分布 : 按分布键对数据时行 hash 分布, 这个 hash 分布算法没有公布, 只有 greenplum 内部知道数据是如何 hash 分布的 随机分布 : 数据随机分布在数据库, 每次查询都会查询所有的 segment

GP 的 SQL 支持程度 基本上绝大多数 PostgreSQL 支持的 SQL, 在 greenplum 都支持, 如常见的建表 建索引的 ddl, 以及一般的 dml 语句 Greenplum3.X 不支持表空间 4.0 提供了支持 tablespace 功能 不支持 trigger 建表语句多了 distributed by 子名外, 其它的 SQL 语法基本上都与 PostgreSQL 一样 : CREATE TABLE products (name varchar(40), prod_id integer, supplier_id integer) DISTRIBUTED BY (prod_id);

GP 的表增强 greenplum 除支持普通的表外, 还增加了 PostgreSQL 中没有的表类型 : append-only table: CREATE TABLE bar (a int, b text) WITH (appendonly=true) DISTRIBUTED BY (a); column-oriented table: CREATE TABLE bar (a int, b text) WITH (appendonly=true, orientation=column) DISTRIBUTED BY (a); append-only 的表支持压缩 : CREATE TABLE foo (a int, b text) WITH (appendonly=true, compresstype=zlib, compresslevel=5);

GP 使用人性化的 partion 语法支持分区表 CREATE TABLE sales (id int, date date, amt decimal(10,2)) DISTRIBUTED BY (id) PARTITION BY RANGE (date) ( START (date '2008-01-01') INCLUSIVE END (date '2009-01-01') EXCLUSIVE EVERY (INTERVAL '1 day') );

GP 使用人性化的 partion 语法支持分区表 CREATE TABLE sales (id int, date date, amt decimal(10,2)) DISTRIBUTED BY (id) PARTITION BY RANGE (date) ( PARTITION Jan08 START (date '2008-01-01') INCLUSIVE, PARTITION Feb08 START (date '2008-02-01') INCLUSIVE, PARTITION Mar08 START (date '2008-03-01') INCLUSIVE, PARTITION Apr08 START (date '2008-04-01') INCLUSIVE, END (date '2009-01-01') EXCLUSIVE );

GP 使用人性化的 partion 语法支持分区表 Defining Numeric Range Table Partitions CREATE TABLE rank (id int, rank int, year int, gender char(1), count int) DISTRIBUTED BY (id) PARTITION BY RANGE (year) ( START (2001) END (2008) EVERY (1), DEFAULT PARTITION extra );

GP 使用人性化的 partion 语法支持分区表 Defining List Table Partitions CREATE TABLE rank (id int, rank int, year int, gender char(1), count int ) DISTRIBUTED BY (id) PARTITION BY LIST (gender) ( PARTITION girls VALUES ('F'), PARTITION boys VALUES ('M'), DEFAULT PARTITION other );

GP 的表的数据可以重分布 ALTER TABLE sales SET DISTRIBUTED BY (customer_id); ALTER TABLE sales SET DISTRIBUTED RANDOMLY; ALTER TABLE sales SET WITH (REORGANIZE=TRUE); 重分布代价比较大, 一般是通过迁移 segment 节点的方式完成加节点

GP 支持 bitmap 索引 PostgreSQL 不支持 bitmap 索引,greenplum 支持 bitmap 索引 CREATE INDEX gender_bmp_idx ON employee USING bitmap (gender);

并行数据装载 Greenplum Database s parallel file server(gpfdist), 可以达到 1 小时装载 2T 数据

GP 的工作负载的资源控制 GP 提供了对工作负载和资源控制的功能 在 GP 可以建一个资源队列 (resource queue), 然后把用户加入到这个队列中, 然后就可以控制 : 1. 所有活动的 SQL 的 cost 值最多是多少? 2. 活动的 SQL 最多是多少个 3. 控制活动的 SQL 的优先级 (4.0 的新功能 )

GP 的查询处理 用户提交一个 SQL 到 master,master 解析这个 SQL, 生成一个分布式的执行计划, 然后把这个分布式的执行计划分发到各个 segment 上, 然后 segment 执行它自己的特定数据集的本地数据库业务 所有的数据库操作, 如表扫描 表连接 (joins) 聚集 ( aggregations), 排序, 这些操作都会在所有的 segment 上并行执行 每个 segment 执行这些操作时都不依赖其它的 segment 除了上面这引起典型的数据库操作,Greenplum 的数据库有一个额外的操作类型, 称为的 motion motion 操作就是把查询处理过程中涉及到的其它节点上的数据在各个节点中做移动

GP 的查询处理 为了提高执行的性能,Greenplum 把执行计划进行切片 (slice) 例如 : SELECT customer, amount FROM sales JOIN customer USING (cust_id) WHERE datecol = '04-30-2008';

GP 的查询处理

GP 的查询处理 在 master 上, 查询的工作进程叫 query dispatcher(qd) 在 segment 上, 查询的工作进程叫 query executor (QE) 执行计划的每个切片 (slice) 至少分配一个工作进程

GP 的查询处理

GP 的执行计划 建测试表 : create table t1(id int primary key,cn int,name varchar(40)) distributed by (id); create table t2(id int primary key,cn int,name varchar(40)) distributed by (id) ; create table t3(id int primary key,cn int,name varchar(40)) distributed by (id) ; insert into t1 select generate_series(1,1000000),generate_series(1,1000000),generate_series (1,1000000); insert into t2 select generate_series(1,1000000),generate_series(1,1000000),generate_series (1,1000000); insert into t3 select generate_series(1,100),generate_series(1,100),generate_series(1,100);

GP 的执行计划 tangdb=# explain select count(*) from t1; QUERY PLAN ------------------------------------------------------------------------------------------ Aggregate (cost=13884.48..13884.49 rows=1 width=0) -> Gather Motion 4:1 (slice1; segments: 4) (cost=13884.40..13884.46 rows=1 width=0) -> Aggregate (cost=13884.40..13884.41 rows=1 width=0) -> Seq Scan on t1 (cost=0.00..11377.12 rows=250728 width=0) tangdb=# explain select id,count(*) from t1 group by id; QUERY PLAN ----------------------------------------------------------------------------------------- Gather Motion 4:1 (slice1; segments: 4) (cost=16391.68..28928.08 rows=250728 width=4) -> HashAggregate (cost=16391.68..28928.08 rows=250728 width=4) Group By: id -> Seq Scan on t1 (cost=0.00..11377.12 rows=250728 width=4)

GP 的执行计划 tangdb=# explain select name,count(*) from t1 group by name; QUERY PLAN ----------------------------------------------------------------------------------------------------------- Gather Motion 4:1 (slice2; segments: 4) (cost=51493.60..64030.00 rows=250728 width=6) -> HashAggregate (cost=51493.60..64030.00 rows=250728 width=6) Group By: t1.name -> Redistribute Motion 4:4 (slice1; segments: 4) (cost=16391.68..36449.92 rows=250728 width=6) Hash Key: t1.name -> HashAggregate (cost=16391.68..16391.68 rows=250728 width=6) Group By: t1.name -> Seq Scan on t1 (cost=0.00..11377.12 rows=250728 width=6) 如果在单机上的执行计划 : osdba=# explain select name,count(*) from t1 group by name; QUERY PLAN ------------------------------------------------------------------- HashAggregate (cost=24346.00..24346.01 rows=1 width=36) -> Seq Scan on t1 (cost=0.00..19346.00 rows=1000000 width=36)

GP 的执行计划 tangdb=# explain select t1.id,t1.name,t2.name from t1,t2 where t1.id=t2.id; QUERY PLAN ------------------------------------------------------------------------------------------ Gather Motion 4:1 (slice1; segments: 4) (cost=23913.52..50334.32 rows=250728 width=16) -> Hash Join (cost=23913.52..50334.32 rows=250728 width=16) Hash Cond: t1.id = t2.id -> Seq Scan on t1 (cost=0.00..11377.12 rows=250728 width=10) -> Hash (cost=11377.12..11377.12 rows=250728 width=10) -> Seq Scan on t2 (cost=0.00..11377.12 rows=250728 width=10) (6 rows)

单机上执行的 : osdba=# explain select t1.id,t1.name,t2.name from t1,t2 where t1.id=t2.cn; QUERY PLAN ------------------------------------------------------------------------- Hash Join (cost=32789.00..90144.00 rows=1000000 width=46) Hash Cond: (t1.id = t2.cn) -> Seq Scan on t1 (cost=0.00..19346.00 rows=1000000 width=40) -> Hash (cost=15406.00..15406.00 rows=1000000 width=10) -> Seq Scan on t2 (cost=0.00..15406.00 rows=1000000 width=10) GP 的执行计划 tangdb=# explain select t1.id,t1.name,t2.name from t1,t2 where t1.id=t2.cn; QUERY PLAN -------------------------------------------------------------------------------------------------------- Gather Motion 4:1 (slice2; segments: 4) (cost=23913.52..70392.56 rows=250728 width=16) -> Hash Join (cost=23913.52..70392.56 rows=250728 width=16) Hash Cond: t2.cn = t1.id -> Redistribute Motion 4:4 (slice1; segments: 4) (cost=0.00..31435.36 rows=250728 width=10) Hash Key: t2.cn -> Seq Scan on t2 (cost=0.00..11377.12 rows=250728 width=10) -> Hash (cost=11377.12..11377.12 rows=250728 width=10) -> Seq Scan on t1 (cost=0.00..11377.12 rows=250728 width=10)

GP 的执行计划 tangdb=# explain select t1.id,t1.name,t2.name from t1,t2 where t1.cn=t2.cn; QUERY PLAN -------------------------------------------------------------------------------------------------------------- Gather Motion 4:1 (slice3; segments: 4) (cost=43971.76..90450.80 rows=250728 width=16) -> Hash Join (cost=43971.76..90450.80 rows=250728 width=16) Hash Cond: t1.cn = t2.cn -> Redistribute Motion 4:4 (slice1; segments: 4) (cost=0.00..31435.36 rows=250728 width=14) Hash Key: t1.cn -> Seq Scan on t1 (cost=0.00..11377.12 rows=250728 width=14) -> Hash (cost=31435.36..31435.36 rows=250728 width=10) -> Redistribute Motion 4:4 (slice2; segments: 4) (cost=0.00..31435.36 rows=250728 width=10) Hash Key: t2.cn -> Seq Scan on t2 (cost=0.00..11377.12 rows=250728 width=10)

GP 的执行计划 tangdb=# explain select t1.id,t1.name,t3.name from t1,t3 where t1.cn=t3.cn; QUERY PLAN ---------------------------------------------------------------------------------------------------- Gather Motion 4:1 (slice2; segments: 4) (cost=15.00..13901.40 rows=25 width=12) -> Hash Join (cost=15.00..13901.40 rows=25 width=12) Hash Cond: t1.cn = t3.cn -> Seq Scan on t1 (cost=0.00..11377.12 rows=250728 width=14) -> Hash (cost=10.00..10.00 rows=100 width=6) -> Broadcast Motion 4:4 (slice1; segments: 4) (cost=0.00..10.00 rows=100 width=6) -> Seq Scan on t3 (cost=0.00..5.00 rows=25 width=6)

Q&A