全部产品
云市场

数据开发之数据归档

更新时间:2019-08-15 18:30:06

本文主要介绍基于 数据开发 如何快速实现常见的数据归档诉求。

背景介绍

  • 随着业务的运行,在线表中的数据会逐渐增加。但常规业务有个很典型的特性,冷热数据现象明显(需要访问的都是近期产生的热数据,时间久远的冷数据出于备份、备案溯源等诉求会进行在线保留)

    • 在业务表数据量还可控、数据库服务性能还有足够余量的时候大家可能不会想到需要处理这份冷数据,但在需要进行频繁的数据、结构变更时,如果能够及时、有效的分离冷、热数据,那么在 变更的时间长度、变更的性能开销 等方面将大大节省。
  • 在没有 数据开发 之前,常规的数据归档方式是:

    • 1)开发:写个转储逻辑、写个清理逻辑,部署在某个应用服务器,周期调度这段代码
    • 2)DBA/运维:写个转储SQL、写个清理SQL,提交crontab部署在数据库服务器,周期调度这个脚本
  • 不足之处
    • 1)每个业务表都需要重复一次这样的开发与配置
    • 2)无法有效全局管控,如遇到大促、变更等重要窗口无法有效的暂停任务的调度
    • 3)任务未有效调度时无法及时、有效的通知介入,容易造成在线表数据量过大的问题降级服务性能
    • 4)执行日志无法统一管理,有效溯源查看

数据开发

  • 基础概念及使用可以参考手册: 数据开发
  • 使用 数据开发 进行在线数据归档会有以下几个优势:
    • 1)业务无关,每个业务的数据表都可以按需随时进行归档逻辑的配置
    • 2)统一管理,所有任务流配置清晰可见,如遇大促等重保需求可便捷的进行调度的暂停处理
    • 3)降低成本,研发、DBA、运维等角色都可以直接在功能模块内进行统一的可视化配置,减少研发工作量
    • 4)数据安全,统一操作入口后,调度执行日志随时可查看
    • 5)状态管理,在任务执行失败后可以及时接收到通知进行介入处理

操作步骤

  • 1)新建任务流,左侧进入【数据开发】后,点击左上角的“添加任务流”或页面中间的“添加任务流”均可 入口

    new

  • 2)添加任务,选择任务类型“单实例SQL”(即将支持跨实例SQL,后续可按需选此类型,若转储的数据和在线数据不在一个实例存储的场景可使用) 转储

  • 3)点击“确认”进入到任务节点的SQL编辑页面,可以看到目前主要支持的几种语法,在尾部书写需要的转储数据逻辑,若已熟悉相关语法,也可以将顶部注释删除。

    • 方案1中每个月一张表进行存储,insert的目标表也需要变量指定,变量格式为${变量名},支持无引号或者单引号处理;其中每个月的表可以事先通过 结构设计 -逻辑表变更 一次完成N年的表的新建,也可以在当前SQL任务中进行 createSQL转储

    • 完成SQL书写、变量配置之后,可以进行“SQL预览”以确认是否满足预期SQL预览

    • 满足预期即可保存,然后再新建一个任务节点进行在线表的数据清理,变量的配置、预览与第一个节点类似新建2

      清除数据

  • 4)完成任务节点的SQL逻辑编写与变量配置,保存后切回到 DAG图

    • 可以看到存在2个无关系节点(若不指定顺序会同时调度)DAG

    • 需要先完成转储才可以进行数据清理,存在先后顺序时,在节点上进行画线流程

  • 5)完成了DAG图的流程走向编辑,最后我们还需要完成一个 调度配置 ,就可以实现周期任务的提交了 调度配置

  • 6)到达指定周期时,将会如期调度产生执行历史进行查阅(本例中每月1号调度,暂无记录) 运行管理

  • 7)如若执行失败,将会通知给到任务流的 责任人(默认为创建者,管理员、DBA可转交)

补充说明

  • 1)当前只支持单个实例内的SQL任务,跨实例的SQL任务正在研发
  • 2)任务流调度周期支持每月、每周、每天多维度按需配置