数据归档与清理功能大幅升级,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 会基于用户反馈持续优化和提升产品,确保十年如一日地提供优质的产品质量和用户体验。

相关推荐
梦想平凡1 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
TianyaOAO1 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong1 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存
码农老起2 小时前
企业如何通过TDSQL实现高效数据库迁移与性能优化
数据库·性能优化
夏木~3 小时前
Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率
数据库·oracle
W21553 小时前
Liunx下MySQL:表的约束
数据库·mysql
黄名富3 小时前
Redis 附加功能(二)— 自动过期、流水线与事务及Lua脚本
java·数据库·redis·lua
言、雲3 小时前
从tryLock()源码来出发,解析Redisson的重试机制和看门狗机制
java·开发语言·数据库
一个程序员_zhangzhen4 小时前
sqlserver新建用户并分配对视图的只读权限
数据库·sqlserver
zfj3214 小时前
学技术学英文:代码中的锁:悲观锁和乐观锁
数据库·乐观锁··悲观锁·竞态条件