本发明涉及物联网设备数据保存,尤其涉及一种物联网设备上传数据批量保存的方法。
背景技术:
1、基于4g、nb通讯技术的无线数据采集器、智能流量计在物联网的应用中使用越来越多,其特点是采集器定时集中上报数据,数据批量上传至应用系统,在应用系统程序中需要对数据库进行大量的批量写入操作。同时系统运行时间越长累加的数据不断增加,而数据库单表数据超过500万行时写入与查询性能出现严重下降。传统的实现方式是通过直接使用jpa接口,并配置jdbc的batch_size属性来进行数据的批量操作,这种方法只能处理单表的映射关系,如果要处理分表数据,需要重写许多代码,显得很吃力。sharding-jdbc目前作为分库分表的重要组件,功能十分强大,但对于一般的项目过于复杂,无法适用小型的企业应用开发。
2、例如,一种在中国专利文献上公开的“基于mysql数据库分库分表策略中间件的处理方法和装置”,其公告号:cn116414840a。公开了包括基于创建的路由注解类,配置与目标系统业务相关的各项关键参数属性;基于创建的路由切面类,对路由注解类进行拦截处理,以拦截方法参数;基于分库分表路由参数获取对应的路由参数散列值和对应的库表索引,以将库表索引设置到当前线程变量中去;以及根据通过创建的目标拦截器接口所读取的目标系统业务对应的全局配置,确定是否对目标系统业务进行分库分表处理;若根据全局配置,确定对目标系统业务进行分库分表处理,则执行对应的分库分表操作,并返回对应的执行结果;否则,则不执行分库分表操作,但是该方案受限于中间件的稳定性,系统的可用性仍会受到影响。
技术实现思路
1、为了解决现有技术中数据库分表需要预设的中间件或代码量多的问题,本发明提供一种物联网设备上传数据批量保存的方法,实现一个实体类映射多个相同数据结构的数据表,不需要复杂的中间件操作数据库。
2、为了实现上述目的,本发明提供如下技术方案:
3、一种物联网设备上传数据批量保存的方法,包括:将多种任务封装在一起成为批量保存接口,对批量保存接口的实体类进行实体注解;
4、根据实体注解在内存中建立缓存映射,根据批量保存接口将数据表封装为事务接口,在事务接口对数据库进行读写;
5、设置独立的数据表或缓存记录分表的属性和索引信息,根据独立的数据表或缓存记录分表的属性和索引信息将数据表分表,将分表进行映射存储。通过一个实体类映射多个相同数据结构的数据表,将任务封装成批量保存接口,实现根据业务量大小自动创建新的分表而不按照固定的时间分表,避免了复杂的中间件操作数据库,在批量保存接口处完成数据的分表写入。
6、作为优选的,所述的进行实体注解后,根据一个注解对特定字段进行标记,对特定字段的字段类型建立映射关系,得到分表属性。得到字段类型和分表属性的映射关系,使得能够根据字段确定对应的分表属性。
7、作为优选的,所述的对字段类型建立映射通过枚举确定对关系包括,数据表的字段映射关系;得到分表属性后,自动生成插入和查询语句。得到数据表的字段映射关系,自动生成插入语句和查询语句;实现分表插入和查询,避免了复杂中间件的操作。
8、作为优选的,所述的批量保存接口中包括,独立的保存线程和数据队列,保存线程中监听数据队列并执行批量写入数据库。通过独立的保存线程对数据队列进行映射分表并保存,避免复杂中间件操作数据库,使得在实体接口处映射多个相同数据结构的数据表。
9、作为优选的,所述的批量保存接口中,首先判断目标实体类对象,再读取实体类对象的分表属性;
10、判断在当前数据表中保存数据或者在新的数据表中保存数据,最后根据映射关系生成数据表保存sql,所述的当前数据表是指未存满的数据表。通过对不同实体类对象映射对应的数据表,实现多种数据的分表保存。
11、作为优选的,所述的生成数据表保存sql后,调用数据访问层执行数据执行保存操作。实现数据保存。
12、作为优选的,进行批量保存时,首先读取数据表属性获取当前数据表属性与结构,然后生成实时的数据库插入语句。使得对每个数据分表实时生成其对应的数据库插入语句,使得该数据表在被存满后换新的数据表后才能被写入数据库中。
13、作为优选的,包括在当前数据表中保存数据或者在新的数据表中保存数据,当需要保存的数量未超过当前数据表的可保存值时直接保存;
14、当需要保存的数量超过当前数据表时未超过可保存值的数据保存到当前数据表,当需要保存的数据量超过当前数据表时超过可保存值的数据保存到新建数据表中。对新建数据表的属性与当前数据表的属性进行替换,确保批量保存时的数据都可以根据业务量进行分表,确保批量上传的数据一致性。
15、作为优选的,包括在批量保存接口中建立实时滚动的数据队列,数据队列的头部实时推入数据,数据队列的尾部实时读取。使得批量保存接口中的数据可以实时滚动更新,确保批量保存接口中的数据可以实时的被写入数据库中。
16、作为优选的,包括在数据队列的尾部实时读取后,进行数据写入数据库,并在数据写入数据库后更新数据表。实现批量保存接口的数据写入,并在数据写入后更新数据表,使得数据表可以实时更新。
17、本发明具有如下优点:
18、(1)数据表的创建由接口自动完成,便于开发者使用,自动完成实体类与数据库字段的映射转换,一个实体类可以映射多个相同表结构的数据表,提高单个数据表的数据写入性能,在保存多种类型的批量数据时,不需要额外编写多余的代码,简化数据批量插入操作流程,提高了代码的逻辑性和可读性;(2)不需要复杂的中间件操作数据库,据业务量大小自动创建新的分表而不按照固定的时间分表,同时能满足一定的查询性能,同时可降低运维成本。
1.一种物联网设备上传数据批量保存的方法,其特征在于,包括:将多种任务封装在一起成为批量保存接口,对批量保存接口的实体类进行实体注解;
2.根据权利要求1所述的一种物联网设备上传数据批量保存的方法,其特征在于,所述的进行实体注解后,根据一个注解对特定字段进行标记,对特定字段的字段类型建立映射关系,得到分表属性。
3.根据权利要求2所述的一种物联网设备上传数据批量保存的方法,其特征在于,所述的对字段类型建立映射关系包括,通过枚举确定对数据表的字段映射关系;得到分表属性后,自动生成插入和查询语句。
4.根据权利要求2或3所述的一种物联网设备上传数据批量保存的方法,其特征在于,所述的批量保存接口中包括,独立的保存线程和数据队列,保存线程中监听数据队列并执行批量写入数据库。
5.根据权利要求4所述的一种物联网设备上传数据批量保存的方法,其特征在于,所述的批量保存接口中,首先判断目标实体类对象,再读取实体类对象的分表属性;
6.根据权利要求5所述的一种物联网设备上传数据批量保存的方法,其特征在于,所述的生成数据表保存sql后,调用数据访问层执行数据执行保存操作。
7.根据权利要求1或2或3所述的一种物联网设备上传数据批量保存的方法,其特征在于,进行批量保存时,首先读取数据表属性获取当前数据表属性与结构,然后生成实时的数据库插入语句。
8.根据权利要求5所述的一种物联网设备上传数据批量保存的方法,其特征在于,包括在当前数据表中保存数据或者在新的数据表中保存数据,当需要保存的数量未超过当前数据表的可保存值时接接保存;
9.根据权利要求7所述的一种物联网设备上传数据批量保存的方法,其特征在于,包括在批量保存接口中建立实时滚动的数据队列,数据队列的头部实时推入数据,数据队列的尾部实时读取。
10.根据权利要求9所述的一种物联网设备上传数据批量保存的方法,其特征在于,包括在数据队列的尾部实时读取后,进行数据写入数据库,并在数据写入数据库后更新数据表。