数据归档与清理
NineData 支持数据归档功能,您可以将不再使用的数据归档到另一个数据库中进行备份,以空出业务库的存储空间,优化性能。本功能支持一次性执行和周期性自动执行。
背景信息
在线数据运行一段时间后,随着数据量的显著增加,业务数据的写入、更新和查询性能可能会受到一定影响。同时,过去一段时间内的数据通常不再被频繁查询使用,但在数据库中却占用着存储空间。为了满足性能优化和在线存储空间的需求,我们经常需要对符合一定条件的数据进行归档管理,同时对已经归档的数据进行清理。
NineData 的数据归档功能支持一次性或周期性的归档和清理功能,让您的业务库永远保持高性能稳定运行。
前提条件
- 已创建或加入组织,并且该组织已开通,同时请确保您的包年包月订阅未过期。
- 当前账号已切换到目标组织。更多信息,请参见切换到组织。
- 需要归档的表中必须有时间字段。
- 目标数据库类型为 MySQL、PostgreSQL。
提交数据归档或归档+清理任务
登录 NineData 控制台。
在左侧导航栏单击 >。
在页面,单击页面中的。
在页面,按照下表进行配置。
参数 说明 输入数据归档任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。 (可选) 输入备注信息,例如针对该数据归档任务的用途描述。 选择数据归档任务的策略,此处选择或。支持如下三种: - :对目标数据执行归档任务,将源库需要归档的数据复制到目标库保存。
- :先对目标数据执行归档,然后再删除源库中已归档的数据。
- :该操作仅删除目标数据,不做归档处理。
需要归档的数据所在的数据源和库(Schema)。 需要存储归档数据的数据源和库(Schema)。的情况下不可见。 选择任务的执行频率。 - :仅执行一次。
- :创建周期性任务,根据您选定的周期循环执行。
选择您数据源所在地域的时区。 周期性任务需要选择,可或选择在每周的星期几或每月的几号执行任务。勾选代表每天执行一次。 周期性任务需要选择,选择周期性任务在所选周期的几点执行任务。单击此刻将当前时间点设置为任务执行时间。 仅在任务包含清理操作时可选。源数据源在进行数据清理后,存储空间不会自动释放,配置该选项可定期执行 Optimize 操作回收表空间。
选择执行多少次清理后,自动执行 Optimize 操作。限制任务的执行时长,单位为小时。例如,您可以设置归档任务于业务低峰期的 0 点开始执行,执行时长设置为 6 小时,则早上 6点时,即使任务没有执行完成,也会自动停止,避免影响业务。 (仅 MySQL) 配置数据归档至目标端时,遇到数据冲突时的处理策略。 - :忽略当前造成冲突的操作,继续往下执行。
- :覆盖目标数据。
单击,跳转至页面,配置需要归档的数据。
参数 说明 定义系统变量, $bizdate
变量将自动获取当前系统时间,您可以自定义该系统时间的格式。时间格式的定义方法,请参见本文附录。
该功能主要用于数据归档与清理任务中新建表的表名、WHERE 条件的书写等场景。例如,将设置为yyyyMMdd
,在目标创建一个新表用于储存归档数据时,将表名设置为new_table_${bizdate}
,当前日期为 2024-05-10,则表名会变成new_table_20240510
。选择源表中归档数据所在的表。 选择目标表中,存储归档数据的表。该表的表结构需要和源表一致,如果不一致,您也可以单击右侧的手动进行表名和列名的映射。
单击右侧的图标,可以在目标库中新建一个表,您无需进行表名和列名的映射,系统会按照原表的表结构自动将归档数据存于该新表中。在指定表名时,您可以使用上面定义的,例如new_table_${bizdate}
。选择一个时间字段,作为判断数据是否需要归档的依据,该字段通常反映了该行数据生成的时间。例如,您订单表中的订单创建时间。 如果中选择的时间字段数据类型为数值(BIGINT、INT)或字符串(CHAR、VARCHAR),则您需要在这里自定义时间格式,以确保 NineData 顺利读取这些数据类型的字段。时间格式的定义方法,请参见本文附录。 基于前面选择的,选择需要归档多少天以前的数据,可选值为 1~3650 天。例如,您需要归档或清理一年以前的数据,则在此处输入 365。 - :数据归档场景下,手动进行表名和列名的映射。例如将源表中某个列的数据存储到目标表中指定的列。
- :预览当前配置下,系统即将执行的归档、清理语句。
- :删除当前记录。
新增一条记录。 单击。在节点,等待任务状态更改为,然后单击页面右上角的,在弹出的窗口中选择流程审批人员,单击,进入节点。在节点中,您还可以执行如下操作:
- 单击页面右上角的图标,刷新任务状态。
- 单击页面右上角的,直接撤回任务或重新编辑任务并提交。
- 单击页面右上角的,复制出一个配置相同的新任务。
任务状态变更为,在审批通过之前,您可以进行如下操作:
- 单击页面右上角的图标,刷新任务状态。
- 单击页面右上角的,直接撤回任务或重新编辑任务并提交。
- 单击页面右上角的,更改该任务的审批人。
- 单击页面中的,可以查看本次任务的执行对象。
任务状态变更为,任务的单击页面右上角的,选择,并单击。
- :马上执行任务。
- (仅一次性任务可选):选择一个时间执行任务。
等待任务状态变更为即可。
提交数据清理任务
登录 NineData 控制台。
在左侧导航栏单击 >。
在页面,单击页面中的。
在页面,按照下表进行配置。
参数 说明 输入任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。 (可选) 输入备注信息,例如针对该任务的用途描述。 选择数据归档任务的策略,此处选择。支持如下三种: - :对目标数据执行归档任务,将源库需要归档的数据复制到目标库保存。
- :先对目标数据执行归档,然后再删除源库中已归档的数据。
- :该操作仅删除目标数据,不做归档处理。
需要清理的数据所在的数据源和库。 选择任务的执行频率。 - :仅执行一次。
- :创建周期性任务,根据您选定的周期循环执行。
周期性任务需要选择,选择您目标所在地域的时区。 周期性任务需要选择,可或选择在每周的星期几或每月的几号执行任务。勾选代表每天执行一次。 周期性任务需要选择,选择周期性任务在所选周期的几点执行任务。单击此刻将当前时间点设置为任务执行时间。 单击,跳转至页面,配置需要清理的数据。
参数 说明 选择源表中需清理数据所在的表。 选择一个时间字段,作为判断数据是否需要清理的依据,该字段通常反映了该行数据生成的时间。例如,您的订单表中的订单创建时间字段。 基于前面选择的,选择需要清理多少天以前的数据,可选值为 1~3650 天。例如,您需要清理一年以前的数据,则在此处输入 365。 (可选) 设置过滤条件,仅符合过滤条件的数据会被清理。不设置则默认清理所有符合条件的数据。以测试数据 employees 表为例,将过滤条件设置为 emp_no>=10005
,则 emp_no 列中小于 10005 的数据均不会被清理。:删除当前记录。 新增一条记录。 单击。在节点,等待任务状态更改为,然后单击页面右上角的,在弹出的窗口中选择流程审批人员,单击,进入节点。在节点中,您还可以执行如下操作:
- 单击页面右上角的图标,刷新任务状态。
- 单击页面右上角的,直接撤回任务或重新编辑任务并提交。
- 单击页面右上角的,复制出一个配置相同的新任务。
任务状态变更为,在审批通过之前,您可以进行如下操作:
- 单击页面右上角的图标,刷新任务状态。
- 单击页面右上角的,直接撤回任务或重新编辑任务并提交。
- 单击页面右上角的,更改该任务的审批人。
- 单击页面中的,可以查看本次任务的执行对象。
任务状态变更为,任务的单击页面右上角的,选择,并单击。
- :马上执行任务。
- (仅一次性任务可选):选择一个时间执行任务。
等待任务状态变更为即可。
审批任务
前提条件
- 当前任务的状态为。
- 您是或当前任务的。
操作步骤
登录 NineData 控制台。
在左侧导航栏单击 >。
在页面,找到目标任务,单击任务 ID 或任务右侧列的。
提示您也可以将鼠标放置在页面上方的图标上,在页签中单击目标任务。
在页面,审批工单内容,根据实际情况选择、或。
操作 说明 将任务转交给其他用户审批。 批准申请,单击后,您可以按需输入,并单击。 驳回申请,单击后,您还需要输入,并单击。
附录:时间字段说明
类别 | 时间字段 | 说明 |
---|---|---|
年份 | 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