Post on 24-Mar-2022
3
数据仓库体系架构
业务数据与数据使用归类
时间维度:过去 - 现在 - 未来 (数据的生命周期)
• “现在”的数据 —— OLTP
• “过去”的数据—— OLAP
• “未来”的数据——趋势分析
4
数据仓库体系架构
业务数据与数据特点
• 现在的数据 —— OLTPØ实时,在线系统,客户使用
Ø事务小,频率高,并发高
•过去的数据—— OLAPØ非实时(T+1,或小时级),离线系统,分析决策Ø事务大,频率相对小,并发低
•未来的数据——趋势分析Ø非实时,离线+在线流系统,趋势分析Ø算法分析,持续计算
5
数据仓库体系架构
OLAP场景举例
•业务相关场景Ø用户状态(注册数,活跃数,并发量,峰值)
Ø金币状态
Ø道具/物品状态Ø对账状态
Ø活动反馈
•架构相关场景Ø不同数据量,不同事务特点,不同查询需求
Ø历史数据归档与冷热分离
Ø实时与延时需求的权衡
6
数据仓库体系架构
数据流转过程
• 1 业务数据的产生 —— OLTP• 2 业务数据的中转—— ETL服务器• 3 数据的存储和计算—— OLAP集群• 4 结果数据的展现——数据集市• 5 访问接口的封装—— API接口服务器• 6 最终数据的显示——前端界面
• 7 结果数据的交互—— OLTP,趋势分析• 8 OLAP数据流转—— dbsync平台
8
数据仓库体系架构
架构的具体技术实现
•轻量级数据仓库—— Inforbright– 与MySQL数据库结合,易使用,冷热分离– 数据库归档,只能load,不支持DML– 对特定OLAP类查询有很好的支持作用
•通用性数据仓库—— Greenplum– 独立的数据库仓库解决方案
– 可以很好支持各种方式的数据加载和DML操作– 具备海量的数据存储和计算性能
11
greenplum体系架构
postgresql体系结构
• pg结构组成Ø 连接关系系统
Ø 编译执行系统
Ø 存储执行系统
Ø 事务系统
Ø 系统表
• pg逻辑和物理结构Ø instance实例 - user - tablesapceØ database - schema - table,view,function - data rowØ 物理文件 - oid -表空间 -数据文件命名
14
greenplum体系架构
greenplum的体系结构
• greenplum的架构特点Ø MPP ShareNothing 海量并行处理+完全无共享Ø cpu计算能力Ø 数据从Disk上的I/O吞吐性能Ø master管理节点Ø segment数据节点
• greenplum的核心功能Ø 无共享MPPØ 多态存储
Ø 高效数据加载 (gpfdist+外部表,每小时4TB+)Ø 分布分区
Ø 数据压缩
Ø 外部访问
16
Greenplum现状说明
Greenplum集群现状概述
• 三大Greenplum集群体系Ø 公司IDC_01机房Greenplum体系Ø 公司IDC_02机房Greenplum体系Ø 公司IDC_03机房Greenplum体系
•服务器资源Ø 三大Greenplum集群,共用 422 个postgresql实例Ø 实例分布成为 28 个Greenplum集群或postgresql单实例
•服务器资源Ø 三大Greenplum集群,共使用 51 台服务器资源Ø 12台虚拟机,39台物理机
17
Greenplum现状说明
三大Greenplum集群定位分类
•公司IDC_01机房Greenplum体系Ø 公司第一套Greenplum集群,网络环境为千兆网Ø 数据来源为OLTP库,针对小数据量传输和计算,部分实时交互操作Ø 以对账业务为主,统计计算为辅
•公司IDC_02机房Greenplum体系Ø 针对数据来源主要是kfk产生csv文件的业务,不直接从数据库传数Ø 以重点业务线、活动数据、非OLTP业务数据的任务计算为主
•公司IDC_03机房Greenplum体系Ø 数据来源来源为OTLP库库,针对大数据量传输和计算,采用T+1方式Ø 以核心业务的数据计算、统计为主
22
Greenplum运维体系
环境创建与部署
•部署流程Ø 规划部署方案
Ø 准备硬件资源
Ø 修改系统参数
Ø 安装 Greenplum 软件 / postgresql软件Ø 初始化实例
Ø 修改实例参数文件
Ø 初始化业务所需库表环境、用户环境
Ø 加载数据
Ø 业务程序访问
23
Greenplum运维体系
环境创建与部署
•部署注意点
Ø 资源要充足(ETL,管理节点,数据节点,数据集市)Ø 万兆网络(网络环境对功能和性能的影响)
Ø 节点规划(数据节点6-10个segment节点)Ø 参数调整 (操作系统参数,greenplum集群参数)
27
Greenplum运维体系
数据库备份
•配置与结构备份Ø 多机房级联备份
Ø Greenplum在本机进行第一次备份Ø 备份通过rsync传输到同机房ETL服务器Ø 各机房ETL服务器在备份到备份服务器
•结果数据备份Ø Greenplum集群与postgresql集市备份Ø 结果数据csv文件备份Ø 结果数据到备份postgresql实例
28
Greenplum运维体系
数据库数据传输与同步
•数据同步情况分类Ø reader端与writer端Ø 全量,id列增量,date列增量Ø datax,csv,load,copyØ 数据同步结果确认与显示
•数据同步方式Ø gpfdist+外部表: UMGW大表Ø db_sync同步程序:底层库 + 同步逻辑 + Django界面Ø 临时同步需求: datax , copy
31
Greenplum运维体系
Greenplum任务调度
• greenplum内部存储过程调度Ø大批量任务采用 kettle调度Ø单个存储过程,可以在shell中 select func_name() 的方式调度
•外部任务调度Ø将整个过程封装成shell脚本,或 Python脚本Ø用crontab在操作系统调用脚本Ø用 opencron在图形界面调用脚本
34
Greenplum开发规范
不规范容易出现的问题
• GP架构易出现问题Ø 资源不足
Ø 连接、语句执行失败
Ø 多任务冲突
•库表使用易出现问题Ø 表定义过大
Ø 表类型单一
Ø 表的散列键不恰当
Ø 分区表的分区键性能不佳
•加载易出现问题Ø 文件加载出现特殊字符
Ø 数据校验标准问题
35
Greenplum开发规范
业务库表设计规范
• GP中表的范围Ø 最大时间为年表
Ø 数据量小,可用单表
•多种表类型Ø 堆表(选好常用列作为三列键)
Ø 分区表(按照 yyyymmdd 分区,建议都添加 datenum int8)Ø append表Ø 列存储表
Ø 多种表类型结合
•表的命名Ø GP内所有名称都小写Ø table_name命名要符合命名规则,做到见名知义
36
Greenplum开发规范
用户与权限规范
• 四层授权保保障Ø 角色 role :管理数据库内对象权限Ø 用户 user :用户认证权限Ø pg_hba.conf :实例权限配置文件Ø iptables : 防火墙IP访问配置策略
• 账号类型划分Ø 管理账号
Ø 开发账号
Ø 调度账号
Ø 业务账号
Ø 测试账号
• 账号名称限定Ø 所有都用小写字母加下划线的方式
Ø 按照命名规则,做到见名知义
37
Greenplum开发规范
Greenplum使用规范
•平时使用规范Ø避免高频率的insert、update操作Ø避免频繁执行高内存消耗的会话
Ø避免出现死锁
Ø可以在适当的时候执行 vaccum 操作Ø避免直接在Greenplum执行消耗session会话的操作Ø尽量不创建索引
•上线与调度规范Ø上线的程序,必须要经过测试,才可以生产使用
Ø调度程序需考虑每个任务的前后关系,时间富裕
Ø避免因为过于追求并行度,对多个任务造成相互影响
39
Greenplum扩展规划
整体扩展思路
• OLAP三大模块不断完善Ø 通过dbsync程序,实现数据传输和加载优化Ø 对于Greenplum上的架构和设计不断优化Ø 继续建设多样化的postgresql数据集市,满足不同需求
•优化现有业务的调度实现Ø 时间周期的考量
Ø 并发与功能实现的权衡
Ø 增强任务可控性和可度量性
•支持符合条件的新业务Ø 抽象业务模型,整合使用分类
Ø 简化上线模型,优化上线方式
40
Greenplum扩展规划
新业务上线流程
•把握三个方面,解决三个问题Ø 确认数据来源与传输,解决原始数据从那里来的问题
Ø 确认数据如何计算,解决数据存储和计算加工的问题
Ø 确认数据集市状态,解决结果数据最终展示的问题
•实现方式Ø OLAP与OLTP不同,没有非常固定的方式Ø 没有事务性工作
Ø 只有针对每个业务需求的架构新、探索性、创新性工作
41
Greenplum扩展规划
现有集群功能扩展方式
•现有集群支撑能力Ø 根据集群的支撑能力和规划,三年内有足够的空间和计算能力
Ø 如需扩展,有多种扩展方式可以选择
Ø 理论扩展方式,与建议扩展方式
•常见扩展方式Ø 对现有集群直接加服务器进行扩展(先要把握现有集群架构)
Ø 在现有服务器和新服务器上,建立新集群然后扩展
Ø 新部署集群,与现有集群双跑运行,稳定扩展(建议方式)
42
Greenplum扩展规划
Greenplum集群规划
•业务运营越来越重要Ø OLAP是根据历史数据,进行准确的统计计算Ø 考虑过去的问题,为现在的决策提供参考和依据
•定位与整合Ø 公司内网GP小数据量计算,GP加载csv数据,GP大数据量统计Ø 年表与实例无关,可以形成一个整体的大的Greenplum平台Ø 网络互通,数据互通,相互备份
•细节的深化Ø 在现有OLAP三部分进行细化Ø 对数据集市本身进行细化