声明
个人原创, 转载需注明来源 https://www.cnblogs.com/milton/p/16216347.html
数据类产品
最近的项目需要接触大数据处理相关的产品, 涉及了ETL, 数据挖掘和统计, 数据可视化等功能, 因此了解了一下这个行业的产品和工具. 最近看的产品主要是 Quantexa CDI(contextual decision intelligence), SAS, OneTrust GRC. 结合对数据业务的理解分析一下这类产品的设计和技术实现.
业务场景拆分
数据类产品从业务场景上, 可以分为
- 应对监管需求, 对自身业务的数据进行抽取和处理, 部署监管要求的规则, 生成符合监管要求的报告
- 科研类场景(例如医药,勘探), 对线上线下采集的数据进行收集, 分析和验证
- 广告推荐类产品, 根据数据进行决策
- 金融风控, 反洗钱, 打分, 决策, 预警等
- 工业自动化, 配合ERP, MES, IOT等系统进行数据的进一步分析和报告
不同的数据状态, 可以分为
- 静态数据分析, 一般针对日志, 交易流水等存量信息进行事故分析, 用于周期跑批, 问题复盘, 案件调查等业务场景
- 动态数据分析, 数据对象为实时的日志, 交易流水, 传感器记录等, 常用于业务监控和自动化, 例如网络安全的预警, 拦截, 交易的拦截, 风险预警等业务场景.
从纯粹的功能上, 可以分为以下几个功能模块:
下面对各类分别说明
1. 输入适配
这部分对标 SAS 的 SAS/ACCESS,
数据输入相当于ETL中的E部分, 是整个系统的数据入口. 数据输入模块通过已有的或用户定义的规则, 将原始数据接入处理系统. 在数据产品中数据输入是重要性很高, 并且对于用户体验和产品整体性能影响很大的一个模块.
数据输入主要分为以下几部分内容
接口适配
- 数据源
- 常见的传统关系型数据库 Oracle, DB2, SQL Server, MySQL, PostgreSQL
- MongoDB, Redis, Hive, Clickhouse, TIDB 等新型数据库
- 以及 Spark, Kafka 等消息数据库
- 各种文件类型的解析, 例如CSV, Excel, Access, log日志等
- 压缩文件格式的处理
- 被动接收数据, 通过对第三方系统提供数据接口, 接收第三方系统推送的数据
- 数据采集, 通过内建工具或用户自定义工具采集数据
格式适配
- 行数据, 传统的关系型数据主要使用行数据
- 列数据, HBASE等列数据库
- 地理数据, 二维, 三维坐标数据
- 文本数据, HTML, XML, JSON 这类非结构数据
数据存储
- 对于读取频次较低, 或逻辑较为简单的数据规则, 可以直接从数据源读取数据进行处理
- 对于读取速度较慢的数据, 需要频繁读取的数据, 可以将数据缓存在本地, 方便后续环节处理
预处理
这一步与校验和转换的区别在于是否与业务逻辑有关. 这一步仅在数据层面对读取的数据进行净化, 筛除无效的值以及做一些基础转换.
第三方数据导入
从第三方接口获取数据, 如征信接口, 高风险IP和地区名单等
技术面分析
数据输入部分, 涉及的技术实现主要包含以下几部分
1) 数据输入框架
便于扩展新的数据源, 数值类型, 数据格式, 预处理规则等. 使数据系统适用于更多的业务场景, 避免过早遇到功能或性能瓶颈.
2) 数据存储机制
- 面向不同场景的需求, 用于存储结构化, 半结构化和非结构化的数据, 需要满足分析模块对数据容量, 访问速度的要求
- 提供MB级到PB级的数据存储方案, 实现对不同体量的数据的存储, 并保证数据存取速度, 保证数据的完整性和安全性
- 对高速率数据的接收能力, 类似双十一这种峰值每秒百万交的数据接收, 如何保证高效且不丢失数据
3) 数值类型识别
将数据值抽象为几种固定的基础数值类型, 并在基础数值类型上扩展出有实际意义的数值类型, 对输入的数据需要有一定的自动识别能力.
4) 数据格式处理
- 对常见格式的自动识别和处理, 例如CSV, Excel, Access
- 对常见媒体格式的处理, 图片格式, 视频格式, 流媒体解析(和存储)
- 对不同类型压缩文件的解压处理
- 对非行结构数据的识别, 例如HTML, XML, JSON等
- 对非结构化数据的识别, 例如新闻内容, 聊天记录等
5) 预处理规则
- 简单的过滤逻辑, 例如数值校验, 脏数据清理, 重复数据的判断和清理
- 基本的路由规则, 将数据分发到不同的流水线
6) 预警机制
当数据错误率超出预设阈值时, 通过多种途径发出预警
2. 建模转换
这部分对标于 SAS 的 Base SAS, SAS/WA 和 SAS/MDDB Server
数据建模和转换是原始数据和分析处理之间的桥梁, 属于ETL的T和L部分. 校验转换的职能主要有
模型定义
模型定义是分析和处理的需求, 不同的分析处理, 需要的数据输入格式, 质量和数量都会不同, 这些会体现在模型定义上. 例如对于证券分析, 对于股票有不同时间单位的价格, 3秒, 5秒, 1天, 5天, 对每个时间单位有高值, 低值, 开盘, 收盘等不同价格, 只有满足这些数据字段和格式, 才能进行后续的数据分析处理.
当数据导入后, 需要对数据数值和格式进行判断, 推荐最接近的模型
数据管理
- 查看数据
- 编辑单个数据
- 批量编辑数据
- 合并多个数据
- 拆分数据
数据转换
数据转换用于将原始数据适配至模型输入
- 编辑转换规则, 对源数据进行转换. 例如从英制距离转为公里, 从日期文本转换为时间戳, 或者人民币按当时的浮动汇率转为美元
- 编辑转换规则, 对源数据进行聚合转换, 例如提取每日统计值产生新的数据序列
- 插件形式的数据转换, 例如使用第三方接口从文本中提取关键词, 提取热词
- 用规则组合创建管道, 用于复杂的数据转换
技术实现
数据的校验和转换涉及的技术实现主要有
- 数据模型设计, 允许用户创建自定义的数据模型
- 数据查看和手工编辑, 批量编辑
- 本地的数据查看和编辑
- 第三方数据源(关系型数据库, 列数据库, NoSQL等)的查看和编辑
- 数据转换规则管理
- 第三方转换接口的接入
- 数据管道的配置
3. 分析处理
数据分析和处理是数据类产品的核心模块, 主要负责模型的运行, 这一步集中了大量的计算和数据处理, 因此要设计合理的机制方便硬件扩容
任务分发
采用合适的任务分发机制, 确保资源分配均衡合理, 使用必要的缓冲机制削平业务毛刺.
资源管理
- 对不同任务使用的计算资源进行调配, 实时增加/减少计算资源.
- 根据任务的负载自动创建和分配资源, 以保证分析处理的服务质量
- 当任务空闲时回收资源
性能监控
对计算资源的负载和错误率进行监控, 实时预警
技术实现
技术上, 对于分片较小的任务场景, 可以使用集中服务注册和分发机制, 对于分片较大的任务, 可以采用消息队列机制, 技术上的目标主要有
- 尽可能简单稳健, 易于维护
- 任务定时机制
- 有完善的完成确认机制, 确保任务不丢失
- 保证集群的工作效率
- 便于扩容
视业务场景不同, 可以采用Dubbo, Spring Cloud, Kafka 或 K8s 等不同维度的方案
4. 输出适配
这部分对标于 SAS 的 SAS/GHAPH, SAS/IntrNet
输出功能包括数据可视化, 数据导出, 数据输出接口, 自动化操作(预警, 拦截等). 数据输出功能实际上分布于系统中的每个环节.
从产品功能上分, 主要有以下几方面
数据可视化
数据可视化包括以下几方面
- 结构化数据可视化
- 半结构化数据可视化
- MongoDB等文档型数据库
- Memcache, Redis等NoSQL数据库
- HTML, XML, JSON等格式化文本
- 非结构化数据可视化
- 二进制内容可视化
数据导出格式化
导出格式化包括
- 输出CSV, Excel
- 输出图片(各种chart), gif(动态chart), svg等
- 输出PDF
- 输出音频, 视频
- 其他行业格式
数据装载(Load)
将数据通过接口, 导出至其他持久化存储
输出至接口
根据业务场景的需要, 通过接口与第三方系统集成, 实现业务联动, 对实时数据处理产生的预警, 拦截和报告, 使用多种途径进行传输.
技术实现
在技术上
- 数据查看, 对各种数值类型的查看
- 对数据生成各种类型的chart, 以及动态chart
- 对不同格式文件和数据的生成
- 处理异构数据之间的映射转换
- 第三方接口适配
5. 行业逻辑
这部分对标于 SAS 的 SAS/QC, SAS/ETS, SAS/OR, SAS/ITSV, SAS/GIS, SAS/CFO Vision
行业逻辑是搭建在前面的功能模块之上的上层建筑, 通过行业经验以及监管需求创建好标准数据模型和输入输出机制, 预置业内常见第三方系统的适配, 降低行业用户使用门槛, 实现快速部署. 主要的产品功能包括
接口集成
对行业常见的上下游系统接口, 包括监管接口, 进行集成, 用户只需要配置账户环境, 就可以进行数据导入导出
数据模型管理
内建行业数据模型, 只需要用户数据满足模型入参条件, 就可以使用内建的模型进行处理
报表管理
内建常用报表, 用户可以直接使用或只需要少量修改, 就可以用于己方业务
用户培训
提供相关的业务培训, 覆盖用户需求
技术实现
技术上更多的是调研客户的行业需求, 包括监管规定, 当前用户的使用习惯
- 总结出标准的数据模型, 处理流程和报表格式
- 在基础模块之上实现业务逻辑
- 适配上下游系统接口
- 跟随监管及市场需求, 定期维护