docker版jxTMS使用指南:周期性自动分表

本文介绍了4.0版jxTMS中的自动分表功能,该功能允许在数据类定义中添加`rename`指示,例如`renameday`,以实现按天、周、月或年进行周期性分表。在Docker环境下,用户可以通过更新data文件并进行热机刷新来启用此功能。文章提到了数据类修改的注意事项,并详细阐述了renamePeriod的定义和不同周期的表名格式。此外,还讨论了预先创建新表以减少表改名的空窗期的策略。
摘要由CSDN通过智能技术生成

本文讲解4.0版jxTMS的周期性自动分表,整个系列的文章请查看:docker版jxTMS使用指南:4.0版升级内容

docker版本的使用,请参考:docker版jxTMS使用指南

考虑到简化管控的需要,自动分表功能放到了数据类定义中:在data文件中定义数据类时,增加了一个rename指示。然后做热机刷新即可实现周期性的自动分表。

可查看tms容器的【/var/chroot/home/demoOrg_2255/codeDefine/demo2/main/data】中VRS20Data数据类的定义:

class VRS20Data rename day:

相比之前的数据类定义,多了【rename day】指示。其中的rename指示VRS20Data数据表要执行周期性分表,day指示是以天为周期。则每天凌晨零点,前一天的VRS20Data会被命名为

VRS20Data_2023_05_18

同时会生成完全相同的VRS20Data表,同样的列定义、同样的索引。

注1:rename可以添加给已经定义好的任何数据类,更新data文件后,热机刷新后即生效;新表自动创建后,自动分表也自动生效。即分表功能是读取数据类后保存相关信息,然后每天零点来做的,不管是已经建立的数据表,还是新增加的数据表

注2:之前介绍data文件中定义的数据类时曾指出过,热机刷新后就会创建对应的数据表;之后再修改数据类的定义,数据表不会同步修改。但由于rename分表后会创建新表【创建表会使用从data文件中读到的数据类定义】,所以对数据类的修改就会反应到新表中。但如果对数据列的数据类型有调整,甚至增删了数据列,有可能导致相应的代码出现异常,所以笔者还是不建议利用rename分表来调整数据类的定义

数据类的定义语法:

CLASS VARIABLE canDel? renamePeriod? supClass? Colon classField+ indexDefine*

参考:jxTMS使用示例–数据库操作

其中的renamePeriod就是一个可选的周期性分表定义。其具体定义为:

rename [day | week | month | year]
其中:
day:每天零点做分表,表名为:{数据类名}_{年}_{月}_{日},日期基准为前天
week:每周一零点做分表,表名为:{数据类名}_week{年内星期顺序号},日期基准为前一周
month:每月1号的零点做分表,表名为:{数据类名}_{年}_{月},日期基准为上一个月
year:每年1月1号零点做分表,表名为:{数据类名}_{年},日期基准为上一年

由于mysql中,表改名是自动提交的,所以为了尽可能的减少表改名的空窗期,新表是预先建好然后以一个临时名存放。需要分表时,就是执行两个改名操作而就不需要了再临时创建新表了。

注:数据类指定了周期性分表后,如果重启,系统日志会报错提示某表已经创建,忽略即可。因为自动分表功能会提前为该表创建一个临时表用于分表时的快速改名

版本的docker镜像中发布

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值