 Greenplum Database 管理员指南 6.2.1..................... - 221 - 使用函数和运算符 .......................................................................................................... - 223 - 在 GP 中使用函数 ................................. ....................... - 223 - 自定义函数 .............................................................................................................. - 225 - 内置函数和运算符 ................................ ..................... - 226 - 开窗函数 .................................................................................................................. - 228 - 高级聚合函数 .................................0 码力 | 416 页 | 6.08 MB | 1 年前3 Greenplum Database 管理员指南 6.2.1..................... - 221 - 使用函数和运算符 .......................................................................................................... - 223 - 在 GP 中使用函数 ................................. ....................... - 223 - 自定义函数 .............................................................................................................. - 225 - 内置函数和运算符 ................................ ..................... - 226 - 开窗函数 .................................................................................................................. - 228 - 高级聚合函数 .................................0 码力 | 416 页 | 6.08 MB | 1 年前3
 Greenplum 精粹文集4 16-11-22 下午3:38 Greenplum 精粹文集 5 1) PG 有非常强大 SQL 支持能力和非常丰富的统计函数和统计语法 支持,除对 ANSI SQL 完全支持外,还支持比如分析函数(SQL2003 OLAP window 函数),还可以用多种语言来写存储过程,对于 Madlib、R 的支持也很好。这一点上 MYSQL 就差的很远,很多分 析功能都不支持,而 Greenplum 用 Python、C、Perl、TCL、 PLSQL 等等语言来扩展功能,在后续章节中,我将展现这种扩展 是如何的方便,另外,开发新的功能模块、新的数据类型、新的索 引类型等等非常方便,只要按照 API 接口开发,无需对 PG 重新编译。 PG 中 contrib 目录下的各个第三方模块,在 GP 中的 postgis 空间 数据库、R、Madlib、pgcrypto 各类加密算法、gptext 全文检索都 下的代码与 Greenplum 的 include 头文件编译后,将动态 so 库文件部署到所有节点就可进行测 试使用了。有些模块还是非常好用的,例如:oraface,基本上集成了 Oracle 常用的函数到 Greenplum 中,曾经在一次 PoC 测试中,用户 提供的 22 条 Oracle SQL 语句,不做任何改动就能运行在 Greenplum 上。 最 后, 需 要0 码力 | 64 页 | 2.73 MB | 1 年前3 Greenplum 精粹文集4 16-11-22 下午3:38 Greenplum 精粹文集 5 1) PG 有非常强大 SQL 支持能力和非常丰富的统计函数和统计语法 支持,除对 ANSI SQL 完全支持外,还支持比如分析函数(SQL2003 OLAP window 函数),还可以用多种语言来写存储过程,对于 Madlib、R 的支持也很好。这一点上 MYSQL 就差的很远,很多分 析功能都不支持,而 Greenplum 用 Python、C、Perl、TCL、 PLSQL 等等语言来扩展功能,在后续章节中,我将展现这种扩展 是如何的方便,另外,开发新的功能模块、新的数据类型、新的索 引类型等等非常方便,只要按照 API 接口开发,无需对 PG 重新编译。 PG 中 contrib 目录下的各个第三方模块,在 GP 中的 postgis 空间 数据库、R、Madlib、pgcrypto 各类加密算法、gptext 全文检索都 下的代码与 Greenplum 的 include 头文件编译后,将动态 so 库文件部署到所有节点就可进行测 试使用了。有些模块还是非常好用的,例如:oraface,基本上集成了 Oracle 常用的函数到 Greenplum 中,曾经在一次 PoC 测试中,用户 提供的 22 条 Oracle SQL 语句,不做任何改动就能运行在 Greenplum 上。 最 后, 需 要0 码力 | 64 页 | 2.73 MB | 1 年前3
 Greenplum机器学习⼯具集和案例• 企业级稳定性,成熟生态系统 2017.thegiac.com Greenplum: 机器学习工具集 2017.thegiac.com • PL/X:各种语言实现自定义函数(存储过程) • MADLib: 数据挖掘、统计分析、图(Graph)等算法 • GPText:文本检索和分析 • GeoSpatial:地理信息数据分析 • Image: 图像数据分析 Parallel Processing ⼯工作原理理 2017.thegiac.com C API (Greenplum, PostgreSQL, HAWQ) 底层抽象层 (数组操作、类型转换、数值计算库等) 数据库内建函 数 ⽤用户接⼝口 ⾼高层抽象层 (迭代控制器器) 内循环函数 (实现机器器学习逻辑) Python SQL C++ MADlib 用户案例例2 基于API日志的⾦金金融产品⽤用户分析 2017.thegiac.com 问题 ● 更更好地理理解不不同种 类的⽤用户 ● 更更好地了了解⽤用户与 APP的交互 ● 对实时API请求进 ⾏行行分类和安全检测 ● 数据量量⼤大,现有数 据分析团队缺乏技 能 客户 数据科学解决⽅方案 ● 某⼤大型跨国⾦金金 融服务公司 ● 移动应⽤用 API 分析0 码力 | 58 页 | 1.97 MB | 1 年前3 Greenplum机器学习⼯具集和案例• 企业级稳定性,成熟生态系统 2017.thegiac.com Greenplum: 机器学习工具集 2017.thegiac.com • PL/X:各种语言实现自定义函数(存储过程) • MADLib: 数据挖掘、统计分析、图(Graph)等算法 • GPText:文本检索和分析 • GeoSpatial:地理信息数据分析 • Image: 图像数据分析 Parallel Processing ⼯工作原理理 2017.thegiac.com C API (Greenplum, PostgreSQL, HAWQ) 底层抽象层 (数组操作、类型转换、数值计算库等) 数据库内建函 数 ⽤用户接⼝口 ⾼高层抽象层 (迭代控制器器) 内循环函数 (实现机器器学习逻辑) Python SQL C++ MADlib 用户案例例2 基于API日志的⾦金金融产品⽤用户分析 2017.thegiac.com 问题 ● 更更好地理理解不不同种 类的⽤用户 ● 更更好地了了解⽤用户与 APP的交互 ● 对实时API请求进 ⾏行行分类和安全检测 ● 数据量量⼤大,现有数 据分析团队缺乏技 能 客户 数据科学解决⽅方案 ● 某⼤大型跨国⾦金金 融服务公司 ● 移动应⽤用 API 分析0 码力 | 58 页 | 1.97 MB | 1 年前3
 Greenplum数据仓库UDW - UCloud中立云计算服务商2、数据库管理 3、模式管理 4、表格设计 5、加载数据 6、分区表 7、序列 8、索引 9、 ANALYZE/VACUUM 10、常⽤SQL⼤全 12、常⽤SQL命令 13、⽤⼾⾃定义函数 ⽬录 Greenplum数据仓库 UDW Copyright © 2012-2021 UCloud 优刻得 3/206 128 132 132 132 139 139 139 141 191 192 udw优化指南 表膨胀 表膨胀 表膨胀的原因 如何避免表膨胀 UDW中 中Json类型 类型 Json相关操作 Json操作举例 Json相关函数 Json创建函数 Json处理函数 接⼊第三⽅ 接⼊第三⽅ BI ⼯具 ⼯具 ⼀、 UDW 接⼊ Zeppelin ⼆、 UDW 接⼊ SuperSet UDW 使⽤案例 使⽤案例 案例⼀ 利⽤ logstash+Kafka+UDW template1 (切换到template1数据库) DROP DATABASE product; 3、模式管理 、模式管理 数据库模式(schema)是包含了⼀系列数据库对象(表,数据类型,⾃定义函数)集合的命名容器。⼀个数据库可以有多个模式。不同模式不共享命名空间。public 模式是在创建数据库之后就 会默认创建的,每个⽤⼾都有权限在这个 schema 创建对象,如果不指定 schema 那么就会默认创建到这⾥。0 码力 | 206 页 | 5.35 MB | 1 年前3 Greenplum数据仓库UDW - UCloud中立云计算服务商2、数据库管理 3、模式管理 4、表格设计 5、加载数据 6、分区表 7、序列 8、索引 9、 ANALYZE/VACUUM 10、常⽤SQL⼤全 12、常⽤SQL命令 13、⽤⼾⾃定义函数 ⽬录 Greenplum数据仓库 UDW Copyright © 2012-2021 UCloud 优刻得 3/206 128 132 132 132 139 139 139 141 191 192 udw优化指南 表膨胀 表膨胀 表膨胀的原因 如何避免表膨胀 UDW中 中Json类型 类型 Json相关操作 Json操作举例 Json相关函数 Json创建函数 Json处理函数 接⼊第三⽅ 接⼊第三⽅ BI ⼯具 ⼯具 ⼀、 UDW 接⼊ Zeppelin ⼆、 UDW 接⼊ SuperSet UDW 使⽤案例 使⽤案例 案例⼀ 利⽤ logstash+Kafka+UDW template1 (切换到template1数据库) DROP DATABASE product; 3、模式管理 、模式管理 数据库模式(schema)是包含了⼀系列数据库对象(表,数据类型,⾃定义函数)集合的命名容器。⼀个数据库可以有多个模式。不同模式不共享命名空间。public 模式是在创建数据库之后就 会默认创建的,每个⽤⼾都有权限在这个 schema 创建对象,如果不指定 schema 那么就会默认创建到这⾥。0 码力 | 206 页 | 5.35 MB | 1 年前3
 Greenplum开源MPP数据库介绍OLAP系统的SQL语句就复杂得多(OLTP则尽量避免) q Join 很复杂(多表, outer join, lateral…) q 子查询、子链接 q 聚集 (grouping sets, 多阶段聚集…) q 窗口函数, (Recursive) CTE q Procedure Languages(Python,R,Perl……) Ø 优化器非常非常重要 Ø 基于规则优化和基于代价优化 Confidential Confidential │ ©2022 VMware, Inc. 22 Greenplum 7的亮点:Greenplum to Greenplum Ø 集群间节点直传 Ø 一套纯SQL的API Ø 正在和其它分布式系统进行对接 23 谢谢!有问题吗?0 码力 | 23 页 | 4.55 MB | 1 年前3 Greenplum开源MPP数据库介绍OLAP系统的SQL语句就复杂得多(OLTP则尽量避免) q Join 很复杂(多表, outer join, lateral…) q 子查询、子链接 q 聚集 (grouping sets, 多阶段聚集…) q 窗口函数, (Recursive) CTE q Procedure Languages(Python,R,Perl……) Ø 优化器非常非常重要 Ø 基于规则优化和基于代价优化 Confidential Confidential │ ©2022 VMware, Inc. 22 Greenplum 7的亮点:Greenplum to Greenplum Ø 集群间节点直传 Ø 一套纯SQL的API Ø 正在和其它分布式系统进行对接 23 谢谢!有问题吗?0 码力 | 23 页 | 4.55 MB | 1 年前3
 Greenplum 6: 混合负载的理想数据平台are well-showcased 12 Pivotal Confidential–Internal Use Only 卓越的OLAP特性 列式存储 分区、压缩 高级特性 递归查询、窗口函数 集成分析 多格式、多语言 Madlib: 机器学习 数据库内并行模型训练和预测、分类 ORCA 复杂查询优化器 成熟稳定 完备生态、支撑核心生产系统 13 Pivotal Confidential–Internal total_quantity FROM included_parts GROUP BY sub_part 16 Pivotal Confidential–Internal Use Only 窗口函数 表‘SALES’ 表‘SALES’ ■ 计算移动平均值或各种时间 间隔的总和 ■ 分组内重置聚合和排序 SELECT last_name, salary, department data table ENDWHILE 模型存储过程 … 广播 Segment 2 Segment n … Transition 函数 操作一小批数据并更新 模型状态 1 Merge 函数 2 Final函数 3 Segment 1 19 Madlib: PageRank性能 Greenplum集群: ● 1 master ● 4*6 segment0 码力 | 52 页 | 4.48 MB | 1 年前3 Greenplum 6: 混合负载的理想数据平台are well-showcased 12 Pivotal Confidential–Internal Use Only 卓越的OLAP特性 列式存储 分区、压缩 高级特性 递归查询、窗口函数 集成分析 多格式、多语言 Madlib: 机器学习 数据库内并行模型训练和预测、分类 ORCA 复杂查询优化器 成熟稳定 完备生态、支撑核心生产系统 13 Pivotal Confidential–Internal total_quantity FROM included_parts GROUP BY sub_part 16 Pivotal Confidential–Internal Use Only 窗口函数 表‘SALES’ 表‘SALES’ ■ 计算移动平均值或各种时间 间隔的总和 ■ 分组内重置聚合和排序 SELECT last_name, salary, department data table ENDWHILE 模型存储过程 … 广播 Segment 2 Segment n … Transition 函数 操作一小批数据并更新 模型状态 1 Merge 函数 2 Final函数 3 Segment 1 19 Madlib: PageRank性能 Greenplum集群: ● 1 master ● 4*6 segment0 码力 | 52 页 | 4.48 MB | 1 年前3
 Greenplum 编译安装和调试gpinitsystem 是Bash脚本工具,有些时候它的报错信息很不清楚。这个 时候可以 ○ 使用 -D 选项 ○ gp_bash_functions.sh 是内部一个被频繁调用执行系统命令的函数,可以通过 set -x 可以打印出所有执行的命令的详细信息。对调试 hang 问题很有效。 ● 在合适的代码处启用 Python 调试器,如果不知道什么地方合适,则在入口处。 3. Greenplum ExecutorStart (lldb) b ExecutorRun (lldb) b ExecProcNode (lldb) c (lldb) c (lldb) c (进入 ExecProcNode 函数) * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 4.1 7.1 frame #0: 0x000000010ca50d9c 0x0000000000000000 可见 master 上的 QD在执行聚集操作,对应的函数是 result = ExecAgg((AggState *) node); (lldb) c Greenplum 会再次断点在 ExecProcNode, 这次的 node 类型是 T_MotionState, 执行 ExecMotion() 函数为 ExecAgg 获得下一个 tuple。 ExecMotion()0 码力 | 15 页 | 2.07 MB | 1 年前3 Greenplum 编译安装和调试gpinitsystem 是Bash脚本工具,有些时候它的报错信息很不清楚。这个 时候可以 ○ 使用 -D 选项 ○ gp_bash_functions.sh 是内部一个被频繁调用执行系统命令的函数,可以通过 set -x 可以打印出所有执行的命令的详细信息。对调试 hang 问题很有效。 ● 在合适的代码处启用 Python 调试器,如果不知道什么地方合适,则在入口处。 3. Greenplum ExecutorStart (lldb) b ExecutorRun (lldb) b ExecProcNode (lldb) c (lldb) c (lldb) c (进入 ExecProcNode 函数) * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 4.1 7.1 frame #0: 0x000000010ca50d9c 0x0000000000000000 可见 master 上的 QD在执行聚集操作,对应的函数是 result = ExecAgg((AggState *) node); (lldb) c Greenplum 会再次断点在 ExecProcNode, 这次的 node 类型是 T_MotionState, 执行 ExecMotion() 函数为 ExecAgg 获得下一个 tuple。 ExecMotion()0 码力 | 15 页 | 2.07 MB | 1 年前3
 Greenplum 排序算法第一阶段初始化TupleSort,通过调用函数tuplesort_begin_common,生成 Tuplesortstate。Tuplesortstate用于描述排序所需的信息 ● 第二阶段插入元组,每次调用函数puttuple_common,会根据当前TupleSort的 状态,选择将元组插入到不同的位置。 ● 第三阶段负责实际的排序逻辑,通过调用函数tuplesort_performsort,实现对已 经存储好的输入元组进行排序。根据当前TupleSort的不同状态,输入元组可能 存储在内存或者文件中,TupleSort会选择使用不同的算法进行排序。 ● 第四阶段负责输出排序后元组,在排序完成之后,每次调用函数 tuplesort_gettuple_common,即可获取排序后的元组。同样,根据当前 TupleSort的不同状态,算法选择不同的方式返回有序元组。 TupleSort 38 TupleSort 延时执行转移函数,tuplesort_putdatum(peraggstate->sortstate, value, isnull); ● Step 2: 排序, tuplesort_performsort(peraggstate->sortstate); ● Step 3: 去重,如果当前元组distinct键和上一个元组相同,或者同为NULL,则 跳过当前元组。否则执行转移函数。 Distinct聚集0 码力 | 52 页 | 2.05 MB | 1 年前3 Greenplum 排序算法第一阶段初始化TupleSort,通过调用函数tuplesort_begin_common,生成 Tuplesortstate。Tuplesortstate用于描述排序所需的信息 ● 第二阶段插入元组,每次调用函数puttuple_common,会根据当前TupleSort的 状态,选择将元组插入到不同的位置。 ● 第三阶段负责实际的排序逻辑,通过调用函数tuplesort_performsort,实现对已 经存储好的输入元组进行排序。根据当前TupleSort的不同状态,输入元组可能 存储在内存或者文件中,TupleSort会选择使用不同的算法进行排序。 ● 第四阶段负责输出排序后元组,在排序完成之后,每次调用函数 tuplesort_gettuple_common,即可获取排序后的元组。同样,根据当前 TupleSort的不同状态,算法选择不同的方式返回有序元组。 TupleSort 38 TupleSort 延时执行转移函数,tuplesort_putdatum(peraggstate->sortstate, value, isnull); ● Step 2: 排序, tuplesort_performsort(peraggstate->sortstate); ● Step 3: 去重,如果当前元组distinct键和上一个元组相同,或者同为NULL,则 跳过当前元组。否则执行转移函数。 Distinct聚集0 码力 | 52 页 | 2.05 MB | 1 年前3
 Greenplum分布式事务和两阶段提交协议ock表里。 1. StartupXlog函数发现XLOG_XACT_PREPARE日志记录进行redo,调用函数recreateTwoPhaseFile将 该日志记录中的信息放到pg_twophase目录下的文件里,每一个prepared事务对应一个文件 2. StartupXlog函数调用recoverPreparedTransaction函数读取pg_twophase目录下的文件并进行相关操 TMGXACT 分布式事务结构体 • 分布式事务id • 分布式事务管理器启动的时间戳 • 活跃分布式事务中最小的事务id,分布式快照 • session id 34 Greenplum的两阶段提交函数调用关系 35 ● 事务的实现原理和Write Ahead Log(WAL) ● 分布式事务和两阶段提交的原理 ● Greenplum两阶段提交协议的实现 ● Greenplum两阶段提交协议的优化0 码力 | 42 页 | 2.12 MB | 1 年前3 Greenplum分布式事务和两阶段提交协议ock表里。 1. StartupXlog函数发现XLOG_XACT_PREPARE日志记录进行redo,调用函数recreateTwoPhaseFile将 该日志记录中的信息放到pg_twophase目录下的文件里,每一个prepared事务对应一个文件 2. StartupXlog函数调用recoverPreparedTransaction函数读取pg_twophase目录下的文件并进行相关操 TMGXACT 分布式事务结构体 • 分布式事务id • 分布式事务管理器启动的时间戳 • 活跃分布式事务中最小的事务id,分布式快照 • session id 34 Greenplum的两阶段提交函数调用关系 35 ● 事务的实现原理和Write Ahead Log(WAL) ● 分布式事务和两阶段提交的原理 ● Greenplum两阶段提交协议的实现 ● Greenplum两阶段提交协议的优化0 码力 | 42 页 | 2.12 MB | 1 年前3
 Pivotal Greenplum 5: 新一代数据平台程序包是 PostgreSQL 的空间数据库扩展,可让地理信息 系统 (GIS) 对象存储在数据库中。Pivotal Greenplum PostGIS 扩展包括支持使用基于 GiST 的 R 树空间索引和函数分析和处 理 GIS 对象。 图 3:Pivotal Greenplum 5:集成的分析。 地理空间 图分析库 聚类分析 传统BI分析 分类分析 回归分析 全文检索 pivotal.io/cn 类型可用于存储和处理不限长度的可变 JSON 数据,新 增了用于查询和解析 JSON 记录的内置函数。与 JSON 类似,HSTORE 可用于在数据库中存储和查询半结构化数据。 Greenplum 中添加的全新 PostgreSQL 9.1 函数和 SQL 命令增强了对 XML 的支持。这些新数据类型及相关函数有助于打造 一个没有孤岛的环境,结构化、半结构化和非结构化数据均可在一个位置进行存储和分析。其他功能还有0 码力 | 9 页 | 690.33 KB | 1 年前3 Pivotal Greenplum 5: 新一代数据平台程序包是 PostgreSQL 的空间数据库扩展,可让地理信息 系统 (GIS) 对象存储在数据库中。Pivotal Greenplum PostGIS 扩展包括支持使用基于 GiST 的 R 树空间索引和函数分析和处 理 GIS 对象。 图 3:Pivotal Greenplum 5:集成的分析。 地理空间 图分析库 聚类分析 传统BI分析 分类分析 回归分析 全文检索 pivotal.io/cn 类型可用于存储和处理不限长度的可变 JSON 数据,新 增了用于查询和解析 JSON 记录的内置函数。与 JSON 类似,HSTORE 可用于在数据库中存储和查询半结构化数据。 Greenplum 中添加的全新 PostgreSQL 9.1 函数和 SQL 命令增强了对 XML 的支持。这些新数据类型及相关函数有助于打造 一个没有孤岛的环境,结构化、半结构化和非结构化数据均可在一个位置进行存储和分析。其他功能还有0 码力 | 9 页 | 690.33 KB | 1 年前3
共 26 条
- 1
- 2
- 3













