一、概述
政采云自助取数平台历时一年左右的时间开发,从 0 到 1,基于取数流程长、取数成本高、取数效率低、数据安全不可控等痛点,经历数次大的版本迭代,目前平台功能已能覆盖内部员工日常取数的大部分场景。本文将对自助取数平台的功能模块和系统设计做简略的介绍。
二、功能模块
平台主要包含自助取数、数据推送、资源管理、操作审计几个大的功能模块。底层数据主要来自 Hive 表,而查询引擎则支持 Presto 和 StarRocks 两种。
1、自助取数
下图为整体取数流程:
1.1 数据集
数据集目前为 Hive 中的表,从数据集列表,用户可以看到自己有权限的表。
1.2 可视化取数
可视化取数主要为不会写 SQL 的用户使用,用户可选择单表或多表关联作为数据集,通过拖拽的方式查询、导出、下载数据。 单表查询 多表关联设置 多表关联查询 数据导出、下载
1.3 SQL 取数
有 SQL 能力的用户,可以自己通过写 SQL 的方式查询、导出、下载数据。
2、权限管理
. 功能权限 支持功能级别的权限控制,用户可根据实际需求申请相应的功能模块权限进行使用。下图为功能权限申请界面。 . 数据权限 基于数据安全的角度,对用户查询、导出数据做了表级、字段级权限控制;用户操作若没有表级权限,会提示用户没有该表权限,需要用户申请表权限后继续操作;若用户没有字段级权限,涉及到中、高等级的敏感数据时候,看到的数据是加密后的数据,若用户需要查看明文数据,则需要申请字段级权限。下图为数据权限申请界面。
3、操作审计
查询、导出、下载、推送等操作留痕,确保应用的合规性、安全性和完整性。完整的操作记录,为故障排查和问题解决提供了良好的支持,后续也可以通过操作记录优化性能。下图为数据下载、推送的记录列表。
4、资源管理
自助取数导出的文件都会出现在资源管理列表,可以多次下载已导出的文件。作为一个通用资源管理模块,也支持用户自主上传文件,以便后续进行推送等操作。
5、数据推送
资源管理列表中的文件,可推送到第三方平台;目前已对接智能外呼和云平台。 . 云平台推送 . 智能外呼系统推送
三、用户体验优化
1、查询性能
原先用户查询、导出数据主要是在 Metabase 上操作,从 Metabase 上转换到自助取数平台,用户第一感受查询速度变慢了,针对以上用户反馈,对比 Metabase 后,发现了以下几个差异点并进行改进: (1)自助取数进行了两次查询,一次查询总数据条数,一次查询数据,而 Metabase 没有总数据条数查询,只查询了一次数据。 改进:原本总数据条数和数据查询为串行查询,为了加快查询速度,改成了并行查询;若部分用户不需要显示总数据条数,增加了白名单机制,白名单用户只会查询数据,不会再查询数据总条数,即,少进行了一次查询。 (2)Metabase 有缓存,而自助取数没有缓存。 改进:每次查询增加缓存,将查询的结果,根据 md5( sql ) 后存入表,md5( sql ) + nickname 为唯一键,目前查询结果缓存了三小时;也支持用户手动清除缓存数据。
2、易用性
1、自助取数在最初的设计中,对取数任务使用的是列表管理的方式,但是当取数任务变多后,需要根据业务场景对取数任务进行管理,基于此场景,加入了文件夹管理。 2、可视化取数增加诸如日期等快捷格式化数据功能。
3、其他的一些优化
. 查询数据量限制 自助取数支持用户自助写 SQL 的方式取数,目前平台对用户导出数据量做了限制,前端限制只能查看 500 条数据,而导出数据限制了 100 万条数据。从技术的角度,若要限制用户查询、导出数据量,从底层角度是在用户 SQL 外层嵌套了一层,增加了 limit 限制,本质上是多了一层子查询,子查询一定层度上会降低一些查询性能,基于此考虑,后端通过解析 SQL 的方式判断用户写的 SQL 是否本身就包含 limit,且未超过平台限制数量,若未加 limit 限制,后端会重新拼接用户 SQL 增加 limit 限制,若已包含 limit,则以子查询方式在外层嵌套一层 limit 限制。 . 查询超时 大部分的数据场景下,在一定时间内,数据均可以查询、导出,而遇到底层表数据量过大或数据倾斜的场景,一些数据查询等待许久也无法查询出数据,这种情况下不设置查询超时反而会影响整个查询集群的性能,目前平台数据查询和导出限制了 6 分钟的超时限制,超过这个时间则查询失败。 . 查询内存限制 基于对查询集群资源的保护,平台查询、导出数据设置了 session 级别的内存限制,目前默认限制 25G 内存。
四、展望
自助取数作为一个取数平台,取数是核心功能,但是除了核心功能以外的模块,在最初产品规划和系统架构设计的时候都做了可拓展考虑。 . 操作审计 通过查询和导出操作中涉及到的 SQL,可以解析 SQL 获取到"热表",以便针对性对用户进行推荐等操作。统计用户查询、导出数据所花的时间,可以统计到一些慢查询 SQL ,可针对性地分析这些 SQL 是否有优化空间,不仅仅是纯 SQL 角度优化,从数仓角度是否可以考虑对一些常用取数抽成中间表的方式提高查询性能。 . 数据导出、下载 将导出和下载抽象成通用模块,提供 API 接口,支持外部用户导出、下载数据。 . 定时取数 支持用户自定义配置定时任务,定时导出、推送数据。 . 可视化 将自助取数任务抽象成一个数据集的概念,对接可视化搭建平台,不会写 SQL 的用户也可以通过拖拽的方式快捷搭建可视化看板,目前自助取数接入可视化搭建已步入正轨。
推荐阅读
招贤纳士
政采云技术团队(Zero),Base 杭州,一个富有激情和技术匠心精神的成长型团队。规模 500 人左右,在日常业务开发之外,还分别在云原生、区块链、人工智能、低代码平台、中间件、大数据、物料体系、工程平台、性能体验、可视化等领域进行技术探索和实践,推动并落地了一系列的内部技术产品,持续探索技术的新边界。此外,团队还纷纷投身社区建设,目前已经是 google flutter、scikit-learn、Apache Dubbo、Apache Rocketmq、Apache Pulsar、CNCF Dapr、Apache DolphinScheduler、alibaba Seata 等众多优秀开源社区的贡献者。
如果你想改变一直被事折腾,希望开始折腾事;如果你想改变一直被告诫需要多些想法,却无从破局;如果你想改变你有能力去做成那个结果,却不需要你;如果你想改变你想做成的事需要一个团队去支撑,但没你带人的位置;如果你想改变本来悟性不错,但总是有那一层窗户纸的模糊......如果你相信相信的力量,相信平凡人能成就非凡事,相信能遇到更好的自己。如果你希望参与到随着业务腾飞的过程,亲手推动一个有着深入的业务理解、完善的技术体系、技术创造价值、影响力外溢的技术团队的成长过程,我觉得我们该聊聊。任何时间,等着你写点什么,发给 zcy-tc@cai-inc.com
微信公众号
文章同步发布,政采云技术团队公众号,欢迎关注