目录
目录- 2 -
1 Greenplum整体架构信息- 9 -
1.1 架构图示- 9 -
1.2 Master主机与Segment主机任务- 9 -
1.3 数据库分布键分布数据策略- 10 -
1.3.1 HASH策略- 10 -
1.3.2 随机分布- 10 -
1.4 master主节点获取segment节点上的数据顺序- 10 -
2 Greenplum数据库常用知识- 10 -
2.1 Greenplum 概念- 10 -
2.2 OLTP与OLAP的理解- 11 -
2.2.1 描述概念- 11 -
2.2.2 图示解释- 11 -
2.3 其他名词概念- 12 -
2.3.1 HTAP概念- 12 -
2.3.2 Append-only 的概念- 12 -
2.4 数据仓库设计规则- 13 -
2.4.1 数据仓库概念- 13 -
2.4.2 数据仓库设计规则相关资料- 13 -
2.4.3 数据仓库设计规范参考- 13 -
3 Greenplum 集群安装- 14 -
4 Greenplum 初级使用- 14 -
4.1 Greenplum 常用命令列表- 14 -
4.1.1 常用命令列表- 14 -
4.2 PSQL命令实例- 15 -
4.2.1 PSQL客户端的安装- 15 -
4.2.1.1 在线安装客户端- 15 -
4.2.1.2 导入密码- 15 -
4.2.2 PSQL命令的使用- 15 -
4.2.2.1 PSQL登录到数据库- 15 -
4.2.2.2 COPY 命令参数说明- 17 -
4.2.2.3 使用COPY导出数据- 18 -
4.2.2.4 使用COPY导入数据- 19 -
4.2.3 常用加载数据方式- 21 -
4.2.3.1 加载SQL文件形式- 21 -
4.2.3.2 直接执行SQL实例- 21 -
4.3 数据库支持的数据类型- 21 -
4.3.1 numeric类型- 21 -
4.3.1.1 类型列表- 21 -
4.3.1.2 类型示例- 22 -
4.3.2 二进制类型- 22 -
4.3.2.1 类型列表- 22 -
4.3.2.2 类型示例- 22 -
4.3.3 日期/时间类型- 23 -
4.3.3.1 类型列表- 23 -
4.3.3.2 类型示例- 24 -
4.3.4 boolean 类型- 25 -
4.3.4.1 类型列表- 25 -
4.3.4.2 类型示例- 25 -
4.3.5 几何类型- 26 -
4.3.5.1 数据列表- 26 -
4.3.5.2 类型示例- 26 -
4.3.6 网络类型- 27 -
4.3.6.1 数据列表- 27 -
4.3.6.2 数据示例- 27 -
4.3.7 常用数据类型- 28 -
4.3.7.1 数据列表- 28 -
4.3.7.2 数据示例- 28 -
4.4 常用函数- 29 -
4.4.1 字符串函数- 29 -
4.4.1.1 函数列表- 29 -
4.4.1.2 函数示例- 30 -
4.4.2 时间函数- 31 -
4.4.2.1 函数列表- 31 -
4.4.2.2 函数示例- 31 -
4.4.3 数值计算函数- 32 -
4.4.3.1 函数列表- 32 -
4.4.3.2 函数示例- 32 -
4.4.4 其他常用函数- 33 -
4.4.4.1 序列号生成函数- 33 -
4.4.4.2 字符串列转行函数- 34 -
4.4.4.3 md5 函数- 34 -
4.4.4.4 字符串行转列函数- 35 -
4.5 常见DDL语句- 35 -
4.5.1 重命名表明- 35 -
4.5.2 修改表字段- 36 -
4.5.2.1 修改为DATE类型- 36 -
4.5.2.2 修改为字符串的长度- 36 -
4.5.2.3 增加与删除字段- 36 -
4.5.2.4 修改为TIMESTAMP类型- 36 -
4.5.2.5 修改为NUMERIC类型- 37 -
4.5.2.6 更改表字段的约束- 37 -
4.5.2.7 修改字段的名字- 37 -
4.5.3创建与删除DATABASE语句- 37 -
4.5.4创建与删除SCHEMA语句- 38 -
4.5.5 更改表的分布键- 38 -
4.6 gpload命令使用- 38 -
5 常见创建TABLE方式- 38 -
5.1 创建Heap表- 38 -
5.2 创建AO表- 39 -
5.2.1 AO表不压缩- 39 -
5.2.2 AO表压缩- 39 -
5.2.3 AO表列存压缩- 39 -
5.2.3.1 对orientation参数进行测试- 39 -
5.2.3.2 统计压缩的大小- 42 -
5.2.3.3 压缩类型比较- 42 -
5.3 创建HDFS外表实例- 44 -
5.3.1 创建外部表实例- 44 -
5.3.2 查看错误数据的实例- 44 -
5.3.3 创建可写外部表实例- 45 -
5.3.3.1 创建可写外部表实例- 45 -
5.3.3.2 创建可写外部表- 45 -
5.3.3.3 查看HDFS上的数据- 46 -
5.4 创建分区表- 46 -
5.4.1 分区表概念- 46 -
5.4.2 创建分区表- 46 -
5.4.3 查看创建的分区表- 47 -
5.4.3.1 查看创建表的名称- 47 -
5.4.3.2 查看表的结构- 48 -
5.4.4 插入分区表数据- 48 -
5.4.4.1 生成数据脚本- 48 -
5.4.4.2 插入数据- 49 -
5.4.5 查看数据及数据分布情况- 49 -
5.4.5.1 查看主表的数据- 49 -
5.4.5.2 查看分布表的数据- 50 -
5.4.5.3 查看数据分布情况- 50 -
5.4.6 对分区表常用操作- 51 -
5.4.6.1 增加分区- 51 -
5.4.6.2 删掉分区- 51 -
5.4.6.3 清空分区- 51 -
5.4.6.4 修改分区- 51 -
5.4.6.5 修改default分区- 51 -
5.4.7 创建数字范围的分区表- 52 -
5.4.8 创建字母范围的分区表- 52 -
5.5 快速复制表- 52 -
6 Greenplum 对JSON的支持- 53 -
6.1 JSON概述- 53 -
6.2 JSON常用运算符与函数- 53 -
6.2.1 JSON常用运算符- 53 -
6.2.2 JSON常用的创建函数- 54 -
6.2.3 JSON处理函数- 55 -
6.3 JSON 运算符常用实例- 56 -
6.3.1 单组JSON解析- 56 -
6.3.2 多组JSON解析- 56 -
6.3.3 复杂的JSON解析- 57 -
6.3.3.1 多个JSON子集的解析- 57 -
6.3.3.2 获取JSON子集的数据- 57 -
6.3.3.3 获取一个JSON集合的子元素- 57 -
6.4 JSON 创建函数的使用- 58 -
6.4.1 创建int类型的JSON格式数据- 58 -
6.4.2 把行的数据转化为JSON类型的数据- 58 -
6.5 JSON处理函数的使用- 59 -
6.5.1 获取JSON中的数据- 59 -
6.5.2 获取JSON中的数据(去除双引号)- 59 -
6.5.3 获取JSON数据中的KEY的值- 60 -
6.6 JSON查询数据的方式- 60 -
6.6.1 创建支持JSON数据的表- 60 -
6.6.1.1 创建表的SQL- 60 -
6.6.1.2 插入数据SQL- 60 -
6.6.1.3 获取JSON数据的KEY值- 61 -
6.6.2 获取JSON结构中的数据- 62 -
6.6.3 按照条件查询数据- 62 -
6.6.4 集合函数查询JSON数据- 64 -
6.6.5 使用默认的函数查找数据- 64 -
6.6.5.1 JSON_EACH 函数的使用- 64 -
6.6.5.2 JSON_OBJECT_KEYS 函数的使用- 65 -
6.6.6 把查询数据转化为JSON- 66 -
6.6.6.1 查看原始数据- 66 -
6.6.6.2 把查询的数据转化为JSON- 67 -
7 Greenplum PGBENCH命令详解- 69 -
7.1 PGBENCH概念详解- 69 -
7.2 PGBENCH 参数详解- 69 -
7.2.1 查看参数详细信息- 69 -
7.3 PGBENCH 测试案例- 70 -
7.3.1 创建表信息- 70 -
7.3.2 修改以下参数- 70 -
7.3.2.1修改配置文件- 70 -
7.3.2.2重启服务- 71 -
7.3.3创建SQL测试文件- 71 -
7.3.4查看测试效果- 71 -
8 Greenplum 常用函数- 73 -
8.1 字符串函数- 73 -
8.1.1 常见字符串函数- 73 -
8.1.2 函数常见示例- 73 -
8.1.2.1 字符串拼接- 73 -
8.1.2.2 查看字符串的长度- 74 -
8.1.2.3 查看字符在字符串的位置- 74 -
8.1.2.4 在制定的位置截取字符串- 74 -
8.1.2.5 删除字符串的制定字符- 75 -
8.1.2.6 字符串转大小写- 75 -
8.1.2.7 替换制定的字符串- 75 -
8.1.2.8 按照分隔符分割字符串- 76 -
8.2 日期及时间函数- 76 -
8.2.1 常见日期及时间函数- 76 -
8.2.2 函数常见使用- 77 -
8.2.2.1 查看两个日期的- 77 -
8.2.2.2 查看当前的日期- 77 -
8.2.2.3 获取当前的时间- 78 -
8.2.2.4 获取精确的时间戳- 78 -
8.2.2.5 获取时间戳的制定参数- 78 -
8.2.2.6 获取当前的时间戳- 80 -
8.2.2.7 获取当前的时间- 80 -
8.2.2.8 获取当前的时间戳- 80 -
9 Greenplum高级使用- 80 -
9.1 常用查询语句- 80 -
9.1.1 查看表的数据分布情况- 80 -
9.1.2 查看默认的错误数据- 81 -
9.1.3 查看表的大小- 81 -
9.1.4 查看数据库的占用大小- 82 -
9.1.5 获取一个表的schema的信息- 82 -
9.1.6 查看每个schema的占用大小- 82 -
9.1.7 查看当前正在执行的语句- 83 -
9.1.8 释放表的膨胀空间- 83 -
9.2 常见创建表语句- 84 -
9.2.1 快速复制一张表- 84 -
9.2.2 重新设计一张表- 84 -
9.3 分析执行计划- 85 -
9.4 函数使用- 85 -
9.5 视图使用- 85 -
9.6 索引使用- 85 -
9.6.1 支持的索引类型- 85 -
9.6.2 获取索引的列表- 85 -
9.6.3 bitmap索引的使用- 86 -
9.6.3.1 获取测试表的信息- 86 -
9.6.3.2 查看不使用索引耗时- 86 -
9.6.3.3 创建索引- 86 -
9.6.3.4 查看使用索引耗时- 87 -
9.6.3.5 删除索引- 87 -
9.6.3.6 查看执行计划- 88 -
9.6.4 b-tree索引的使用- 88 -
9.6.4.1 b-tree索引的特点- 88 -
9.6.4.2 获取测试表的信息- 88 -
9.6.4.3 查看不使用索引时的耗时- 89 -
9.6.4.4 创建索引- 89 -
9.6.4.5 查看使用索引的耗时- 89 -
9.6.4.6 查看执行计划信息- 90 -
9.7 引用第三方库- 90 -
10 工作中常见知识汇总- 90 -
10.1在使用外表时注意的问题- 90 -
10.1.1 注意\线的转义问题- 90 -
10.1.1.1 问题示例- 90 -
10.1.1.2 解答方法- 91 -
10.1.2 \1转特殊字符的问题- 91 -
10.1.2.1 问题示例- 91 -
10.1.2.2 解答方法- 92 -
10.2 COPY命令常见错误汇总- 92 -
10.2.1数据中有双引字符- 92 -
10.2.1.1 问题示例- 92 -
10.2.1.2 解答方法- 93 -
11 Greenplum权限管理- 93 -
11.1关于greenplum权限说明- 93 -
11.1.1 概述- 93 -
11.1.2 赋予权限的步骤总结- 93 -
11.1.3 管理赋予在用户特殊属性上的权限- 94 -
11.2 权限操作实例- 94 -
11.2.1 在用户(USER)特殊属性上的权限- 94 -
11.2.1.1 权限说明- 94 -
11.2.1.2 权限创建实例- 94 -
11.2.1.3 撤销用户的权限- 95 -
11.2.2 在DATABASE(数据库)上的权限- 96 -
11.2.2.1 权限说明- 96 -
11.2.2.2 权限创建实例- 96 -
11.2.2.3 权限撤销实例- 97 -
11.2.2.4 总结数据库上权限- 98 -
11.2.3 在SCHEMA(模式)上的权限- 98 -
11.2.3.1 验证权限说明- 98 -
11.2.3.2 创建USER2- 98 -
11.2.3.3 把USAGE(使用权限)赋予用户- 98 -
11.2.3.4 查看权限的效果- 99 -
11.2.3.5 把CREATE(创建权限)赋予用户- 99 -
11.2.3.6 在用户下查询数据- 99 -
11.2.3.7 总结SCHEMA(模式)上的权限汇总- 99 -
11.2.3.8 权限撤销实例- 99 -
11.2.3.9 验证撤销的权限- 100 -
11.2.4 在TABLE(表)上的权限- 100 -
11.2.4.1 权限验证说明- 100 -
11.2.4.2 把SELECT(查询)权限赋予用户- 100 -
11.2.4.3 查看权限效果- 100 -
11.2.4.4 赋予用户更多的权限- 101 -
11.2.4.5 撤销用户的权限- 101 -
11.2.4.6 查看撤销后的效果- 101 -
11.3 权限参数详解- 102 -