数据归档与清理功能大幅升级,NineData重磅升级!

NineData 的数据归档与清理功能已经发布将近半年时间,在这段时间里,解决了一大批企业在过期数据处理方面的大麻烦,可以相对自动化地定期执行如下数据归档与清理工作。

识别业务库中的归档数据→移动到归档库→清理业务库的已归档数据→整理业务库表空间。

这样一来,在磁盘容量的管理上,基本就可以当甩手掌柜了,除了无需再花时间精力检查哪些数据需要清理之外,也不用再担心误将有效数据当无效数据清理,以及无效数据堆积导致数据库访问缓慢等等问题了。

这种情况下,如果你的数据库出现了容量不足告警,那就说明磁盘空间真的无法再满足当前业务了,直接踏踏实实扩容就行。

NineData数据归档与清理功能

尽管数据归档与清理功能完成度已经非常高了,但是在应对各种五花八门的场景时,仍然可能会有一些磕绊,笔者花了几个月的时间收集用户的实际使用反馈,大致整理出了如下一些需求:

  • 不支持时区配置:海外业务的数据库使用的时区和国内不一致,用户在配置该海外业务的数据归档与清理的执行时间后,NineData 会在中国时间的该时间点执行任务,而此时该海外业务正处在繁忙阶段,可能影响该数据库的存取性能。因此,需要手动将目标地域的归档时间换算成中国时间,然后将换算后的时间设置为数据归档与清理的执行时间。

  • 时间字段支持不全面:NineData 需要基于用户表里的某个时间字段作为归档与清理的依据,该时间字段的数据类型需要是 DATETIME 类型,然而由于数据库配置的多样性,并不是所有时间字段都使用了 DATETIME 类型,也可能是 CHAR、VARCHAR 等,导致配置的时候 NineData 没有认出该时间字段。

  • 数据冲突策略不灵活:经实测发现归档操作遇到数据冲突的情况下,系统直接忽略当前操作,有些需要直接做覆盖更新的场景无法配置。

  • 没有预览 SQL:对于归档和清理操作,虽然页面提供了示例 SQL 语句,但是没有根据当前的配置提供系统实际会执行的 SQL 语句,因此无法在执行前验证 SQL 是否符合预期。

截至今日,上述这些需求已经全面交付完成,NineData 在最近的一期迭代中,发布了针对数据归档与清理功能的一系列优化,除了修复已知问题外,还为该功能锦上添花,增加了不少实用的新能力。

1. 增加时区选择

在配置数据归档与清理任务时,可以在配置任务启动时间之前,先选择目标数据源所在地域的时区,无需再费脑子换算成中国时间,不仅增加了效率,还避免了换算失误的可能性。

2. 支持多种时间字段类型

在原来的 DATETIME 类型的基础上,新增了 INT、BIGINT、CHAR、VARCHAR 字段类型的支持,基本满足了大部分企业的不同时间字段类型场景。

3. 支持预览 SQL

在基本配置完归档和清理所需的参数后,可以通过预览 SQL,清晰查看到 NineData 即将对数据库执行的归档和清理操作,由此判断 SQL 是否符合预期。

4. 增加系统变量配置

新增 bizdate 系统变量,可自动获取当前系统时间,支持自定义系统时间的格式。可用于归档时自动在目标新建表时,取当前系统时间作为表名,同时,还适用于 WHERE 条件书写等场景。

5. 增加 Optimize 策略

在数据库中执行清理数据操作后,通常需要手动执行 Optimize 操作释放存储空间,虽然定义存储过程可以自动在数据库执行某些操作后执行,但由于黑屏操作门槛较高无法轻松实现。通过 NineData 的 Optimize 策略选项,轻松配置让 NineData 代替您操作回收表空间。

6. 增加数据冲突处理策略

支持用户在配置任务阶段,即可根据业务要求选择数据归档时的数据冲突处理策略,支持忽略和覆盖两种选项。

7. 增加执行时长选项

在创建数据归档任务时,对周期性任务提供了执行时长选项,通过该选项给任务限制执行时长,避免任务执行时间超出预期时长给业务库带来不良影响。例如,可以设置归档任务于业务低峰期的 0 点开始执行,执行时长设置为 6 小时,则早上 6 点时,即使任务没有执行完成,也会自动停止,避免影响业务。

新能力配置演示

时区:时区可以在任务的首个配置页面就选定,该任务的所有后续操作都将基于该时区执行。

Optimize 策略:选择多少次清理操作之后自动执行 Optimize 操作释放表空间。

执行时长:选择当前任务所允许的最长执行时长,超过后无论任务是否执行完成,都将被停止,避免高峰期间对业务库产生不良影响。

数据冲突处理策略 :选择归档时,目标库中存在相同数据时的处理策略,支持忽略覆盖

系统变量:设置 bizdate 变量的格式,默认为 yyyyMMdd,例如 20240617。您也可以根据自身需求进行配置,例如 yyyy-MM-dd,则最终效果为 2024-06-17。

根据系统变量新增表名:示例中,使用了 customers$(bizdate),则新建的表名格式为 customers<当前时间>,例如 customers20240617。

时间字段:已经支持将 INT、BIGINT、CHAR、VARCHAR 字段类型的列作为时间字段进行选择。

预览 SQL :在配置完成后,单击预览 SQL 可以显示系统即将对数据库做的归档和清理操作。

总结

通过这次大更新,已经基本解决了大部分的问题。即便如此,NineData 仍然不是完美的,仍然可能存在一些细微的点没有被察觉,因此用户的声音至关重要。NineData 会基于用户反馈持续优化和提升产品,确保十年如一日地提供优质的产品质量和用户体验。

相关推荐
huazhixuthink24 分钟前
PostgreSQL三种关闭方式的区别
数据库·postgresql
阿里小阿希5 小时前
Vue3 + Element Plus 项目中日期时间处理的最佳实践与数据库设计规范
数据库·设计规范
白鹭6 小时前
MySQL源码部署(rhel7)
数据库·mysql
666和7776 小时前
Struts2 工作总结
java·数据库
还听珊瑚海吗6 小时前
SpringMVC(一)
数据库
星期天要睡觉8 小时前
MySQL 综合练习
数据库·mysql
Y4090018 小时前
数据库基础知识——聚合函数、分组查询
android·数据库
JosieBook9 小时前
【数据库】MySQL 数据库创建存储过程及使用场景详解
数据库·mysql