跳到主要内容

数据归档与清理

NineData 支持数据归档功能,您可以将不再使用的数据归档到另一个数据库中进行备份,以空出业务库的存储空间,优化性能。本功能支持一次性执行和周期性自动执行。

背景信息

在线数据运行一段时间后,随着数据量的显著增加,业务数据的写入、更新和查询性能可能会受到一定影响。同时,过去一段时间内的数据通常不再被频繁查询使用,但在数据库中却占用着存储空间。为了满足性能优化和在线存储空间的需求,我们经常需要对符合一定条件的数据进行归档管理,同时对已经归档的数据进行清理。

NineData 的数据归档功能支持一次性或周期性的归档和清理功能,让您的业务库永远保持高性能稳定运行。

前提条件

  • 已创建或加入组织,并且该组织已开通,同时请确保您的包年包月订阅未过期。
  • 当前账号已切换到目标组织。更多信息,请参见切换到组织
  • 需要归档的表中必须有时间字段。
  • 目标数据库类型为 MySQL、PostgreSQL。

提交数据归档或归档+清理任务

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

  3. 页面,单击页面中的

  4. 页面,按照下表进行配置。

    参数
    说明
    输入数据归档任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。
    (可选)输入备注信息,例如针对该数据归档任务的用途描述。
    选择数据归档任务的策略,此处选择。支持如下三种:
    • :对目标数据执行归档任务,将源库需要归档的数据复制到目标库保存。
    • :先对目标数据执行归档,然后再删除源库中已归档的数据。
    • :该操作仅删除目标数据,不做归档处理。
    需要归档的数据所在的数据源和库(Schema)。
    需要存储归档数据的数据源和库(Schema)。的情况下不可见。
    选择任务的执行频率。
    • :仅执行一次。
    • :创建周期性任务,根据您选定的周期循环执行。
    选择您数据源所在地域的时区。
    周期性任务需要选择,可选择在每周的星期几或每月的几号执行任务。勾选代表每天执行一次。
    周期性任务需要选择,选择周期性任务在所选周期的几点执行任务。单击此刻将当前时间点设置为任务执行时间。
    仅在任务包含清理操作时可选。源数据源在进行数据清理后,存储空间不会自动释放,配置该选项可定期执行 Optimize 操作回收表空间。
    选择执行多少次清理后,自动执行 Optimize 操作。
    限制任务的执行时长,单位为小时。例如,您可以设置归档任务于业务低峰期的 0 点开始执行,执行时长设置为 6 小时,则早上 6点时,即使任务没有执行完成,也会自动停止,避免影响业务。
    (仅 MySQL)配置数据归档至目标端时,遇到数据冲突时的处理策略。
    • :忽略当前造成冲突的操作,继续往下执行。
    • :覆盖目标数据。
  5. 单击,跳转至页面,配置需要归档的数据。

    参数
    说明
    定义系统变量,$bizdate 变量将自动获取当前系统时间,您可以自定义该系统时间的格式。时间格式的定义方法,请参见本文附录
    该功能主要用于数据归档与清理任务中新建表的表名、WHERE 条件的书写等场景。例如,将设置为 yyyyMMdd,在目标创建一个新表用于储存归档数据时,将表名设置为 new_table_${bizdate},当前日期为 2024-05-10,则表名会变成 new_table_20240510
    选择源表中归档数据所在的表。
    选择目标表中,存储归档数据的表。该表的表结构需要和源表一致,如果不一致,您也可以单击右侧的手动进行表名和列名的映射。
    单击右侧的create_table图标,可以在目标库中新建一个表,您无需进行表名和列名的映射,系统会按照原表的表结构自动将归档数据存于该新表中。在指定表名时,您可以使用上面定义的,例如 new_table_${bizdate}
    选择一个时间字段,作为判断数据是否需要归档的依据,该字段通常反映了该行数据生成的时间。例如,您订单表中的订单创建时间。
    如果中选择的时间字段数据类型为数值(BIGINT、INT)或字符串(CHAR、VARCHAR),则您需要在这里自定义时间格式,以确保 NineData 顺利读取这些数据类型的字段。时间格式的定义方法,请参见本文附录
    基于前面选择的,选择需要归档多少天以前的数据,可选值为 1~3650 天。例如,您需要归档或清理一年以前的数据,则在此处输入 365
    • :数据归档场景下,手动进行表名和列名的映射。例如将源表中某个列的数据存储到目标表中指定的列。
    • :预览当前配置下,系统即将执行的归档、清理语句。
    • :删除当前记录。
    新增一条记录。
  6. 单击。在节点,等待任务状态更改为,然后单击页面右上角的,在弹出的窗口中选择流程审批人员,单击,进入节点。在节点中,您还可以执行如下操作:

    • 单击页面右上角的refresh图标,刷新任务状态。
    • 单击页面右上角的,直接撤回任务或重新编辑任务并提交。
    • 单击页面右上角的,复制出一个配置相同的新任务。
    提示
    • 根据审批流程配置的不同,此处需要选择的审批人员数量不同,请根据实际情况选择。
    • 如果当前审批流程中开启了,则此处将显示,您无需手动指定审批人,所有具备审批当前工单的人员均会收到审批提醒并支持对该工单进行审批。

    • 如果该数据源未配置审批流程,则任务自动跳过节点,来到节点,并且任务状态变更为,您可以直接执行步骤 8
  7. 任务状态变更为,在审批通过之前,您可以进行如下操作:

    • 单击页面右上角的refresh图标,刷新任务状态。
    • 单击页面右上角的,直接撤回任务或重新编辑任务并提交。
    • 单击页面右上角的,更改该任务的审批人。
    • 单击页面中的,可以查看本次任务的执行对象。
  8. 任务状态变更为,任务的单击页面右上角的,选择,并单击

    • :马上执行任务。
    • (仅一次性任务可选):选择一个时间执行任务。
  9. 等待任务状态变更为即可。

提交数据清理任务

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

  3. 页面,单击页面中的

  4. 页面,按照下表进行配置。

    参数
    说明
    输入任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。
    (可选)输入备注信息,例如针对该任务的用途描述。
    选择数据归档任务的策略,此处选择。支持如下三种:
    • :对目标数据执行归档任务,将源库需要归档的数据复制到目标库保存。
    • :先对目标数据执行归档,然后再删除源库中已归档的数据。
    • :该操作仅删除目标数据,不做归档处理。
    需要清理的数据所在的数据源和库。
    选择任务的执行频率。
    • :仅执行一次。
    • :创建周期性任务,根据您选定的周期循环执行。
    周期性任务需要选择,选择您目标所在地域的时区。
    周期性任务需要选择,可选择在每周的星期几或每月的几号执行任务。勾选代表每天执行一次。
    周期性任务需要选择,选择周期性任务在所选周期的几点执行任务。单击此刻将当前时间点设置为任务执行时间。
  5. 单击,跳转至页面,配置需要清理的数据。

    参数
    说明
    选择源表中需清理数据所在的表。
    选择一个时间字段,作为判断数据是否需要清理的依据,该字段通常反映了该行数据生成的时间。例如,您的订单表中的订单创建时间字段。
    基于前面选择的,选择需要清理多少天以前的数据,可选值为 1~3650 天。例如,您需要清理一年以前的数据,则在此处输入 365
    (可选)设置过滤条件,仅符合过滤条件的数据会被清理。不设置则默认清理所有符合条件的数据。以测试数据 employees 表为例,将过滤条件设置为 emp_no>=10005,则 emp_no 列中小于 10005 的数据均不会被清理。
    :删除当前记录。
    新增一条记录。
  6. 单击。在节点,等待任务状态更改为,然后单击页面右上角的,在弹出的窗口中选择流程审批人员,单击,进入节点。在节点中,您还可以执行如下操作:

    • 单击页面右上角的refresh图标,刷新任务状态。
    • 单击页面右上角的,直接撤回任务或重新编辑任务并提交。
    • 单击页面右上角的,复制出一个配置相同的新任务。
    提示
    • 根据审批流程配置的不同,此处需要选择的审批人员数量不同,请根据实际情况选择。
    • 如果当前审批流程中开启了,则此处将显示,您无需手动指定审批人,所有具备审批当前工单的人员均会收到审批提醒并支持对该工单进行审批。

    • 如果该数据源未配置审批流程,则任务自动跳过节点,来到节点,并且任务状态变更为,您可以直接执行步骤 8
  7. 任务状态变更为,在审批通过之前,您可以进行如下操作:

    • 单击页面右上角的refresh图标,刷新任务状态。
    • 单击页面右上角的,直接撤回任务或重新编辑任务并提交。
    • 单击页面右上角的,更改该任务的审批人。
    • 单击页面中的,可以查看本次任务的执行对象。
  8. 任务状态变更为,任务的单击页面右上角的,选择,并单击

    • :马上执行任务。
    • (仅一次性任务可选):选择一个时间执行任务。
  9. 等待任务状态变更为即可。

审批任务

前提条件

  • 当前任务的状态为
  • 您是或当前任务的

操作步骤

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

  3. 页面,找到目标任务,单击任务 ID 或任务右侧列的

    提示

    您也可以将鼠标放置在页面上方的notification图标上,在页签中单击目标任务。

  4. 页面,审批工单内容,根据实际情况选择

    操作
    说明
    将任务转交给其他用户审批。
    批准申请,单击后,您可以按需输入,并单击
    驳回申请,单击后,您还需要输入,并单击

附录:时间字段说明

类别时间字段说明
年份yyyy或y四位数当前年份,例如 2024。
yy两位数当前年份,例如 24。
月份M当前月份,例如 8。
MM当前月份,不到两位数的情况下补前导 0,例如 08。
MMM当前月份,后方补充中文“月”,例如 8 月。
MMMM当前月份的中文,例如八月。
天数d当月第 N 天,例如 1。
dd当月第 N 天,不到两位数的情况下补前导 0,例如 01。
ddd当年第 N 天,例如 214。
e当周第 N 天,例如 4。
w 当年第 N 周,例如 31。
时间段a当天的时间段,例如上午或下午。
时间h 当天的第 N 小时,例如 9。
hh当天的第 N 小时,不到两位数的情况下补前导 0,例如 09。
m当前分钟数,例如 5。
mm当前分钟数,不到两位数的情况下补前导 0,例如 05。
s当前秒数,例如 8。
ss当前秒数,不到两位数的情况下补前导 0,例如 08。
时区z时区偏移量(带冒号),例如 +08:00
zz时区偏移量(不带冒号),例如 +0800

以上时间字段格式可以自由组合使用。

示例:yyyyMMdd ahh:mm:ss 将以如下格式显示当前时间:20240801 下午14:30:00