一种数据分表处理方法、装置、计算机设备及存储介质与流程

文档序号:33622602发布日期:2023-03-25 13:05阅读:31来源:国知局
1.本技术涉及数据处理
技术领域
:,尤其涉及一种数据分表处理方法、装置、计算机设备及存储介质。
背景技术
::2.数据库用于保存用户或设备的相关数据记录,相同类型的数据记录通常保存在数据库的一张数据表中。随着数据量的不断增长,当数据库单表数据量过大,超过最初设计的容量大小时,会导致数据查询、更新效率变低,从而影响系统性能。遇到这种情况时,一般会采用分表方式,将单表水平扩展为多表,或者是多表需要扩展为更多表(例如,10张表扩展为20张),将数据分散存储,减少单表压力。但是,目前的分表方式会产生新数据写入和历史数据同步的问题,如果采用备份库同步的策略,主备数据库切换时,会出现短时间的数据表不可用,影响业务的正常使用。此外,期间与数据表相应的查询数据库功能被阻塞,使得银行系统对应的业务功能处于不可用的状态,不能提供相应的业务服务。因此,对于需要持续不间断的提供业务服务的银行系统来说,显然是不能接受的。技术实现要素:3.本技术实施例的目的在于提出一种数据分表处理方法、装置、计算机设备及存储介质,以解决相关技术中分表造成的新数据写入和历史数据不能实时同步,导致业务不能正常使用数据表数据,进而影响业务执行的技术问题。4.为了解决上述技术问题,本技术实施例提供一种数据分表处理方法,采用了如下所述的技术方案:5.配置同步任务,配置所述同步任务包括配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息;6.根据所述同步表配置信息获取同步表建表语句,根据所述扩展表配置信息生成扩展表表名;7.基于所述扩展表表名和所述同步表建表语句创建扩展表;8.开启同步任务,根据所述同步任务确定待查询的所述同步表,并从所述同步表中获取同步数据;9.基于所述扩展表配置信息确定目标扩展表,将所述同步数据写入所述目标扩展表中,并将同步结果写入预创建的同步记录表中。10.进一步的,所述从所述同步表中获取同步数据的步骤包括:11.根据所述同步表对应的同步表配置信息确定当前同步数据标识;12.基于所述当前同步数据标识,调用数据查询函数从所述同步表中查询到同步数据。13.进一步的,所述基于所述扩展表配置信息确定目标扩展表的步骤包括:14.从所述扩展表配置信息中获取扩展表分表标识字段和分表数量,根据所述扩展表分表标识字段确定标识字段属性值;15.采用哈希算法对所述标识字段属性值进行哈希运算,得到哈希值;16.将所述哈希值和所述分表数量进行取余运算,得到运算结果;17.根据所述运算结果确定目标扩展表的表名。18.进一步的,所述将所述同步数据写入所述目标扩展表中的步骤包括:19.根据所述目标扩展表的表名,调用数据写入函数将所述同步数据写入所述目标扩展表中。20.进一步的,在所述将同步结果写入预创建的同步记录表中的步骤之后还包括:21.接收请求方的数据查询请求,判断是否完成同步;22.当未完成同步时,根据所述数据查询请求分别查询所述同步表和所述扩展表,获得对应的查询结果,将所述查询结果去重后返回至所述请求方;23.当同步完成时,根据所述数据查询请求分别查询所述扩展表,获得对应的查询结果返回至所述请求方。24.进一步的,所述将所述查询结果去重后返回至所述请求方的步骤包括:25.从所述扩展表配置信息中获取去重字段;26.根据所述去重字段对所述查询结果进行去重,得到去重数据;27.将所述去重数据发送给所述请求方。28.进一步的,在所述将同步结果写入预创建的同步记录表中的步骤之后还包括:29.接收到数据更新请求,根据所述数据更新请求获取对应的更新数据;30.判断是否完成同步,当未完成同步时,将所述更新数据分别写入所述同步表和所述扩展表;31.当同步完成时,将所述更新数据写入所述扩展表。32.为了解决上述技术问题,本技术实施例还提供一种数据分表处理装置,采用了如下所述的技术方案:33.配置模块,用于配置同步任务,配置所述同步任务包括配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息;34.第一获取模块,用于根据所述同步表配置信息获取同步表建表语句,根据所述扩展表配置信息生成扩展表表名;35.创建模块,用于基于所述扩展表表名和所述同步表建表语句创建扩展表;36.第二获取模块,用于开启同步任务,根据所述同步任务确定待查询的所述同步表,并从所述同步表中获取同步数据;37.写入模块,用于基于所述扩展表配置信息确定目标扩展表,将所述同步数据写入所述目标扩展表中,并将同步结果写入预创建的同步记录表中。38.为了解决上述技术问题,本技术实施例还提供一种计算机设备,采用了如下所述的技术方案:39.该计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上所述的数据分表处理方法的步骤。40.为了解决上述技术问题,本技术实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:41.所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上所述的数据分表处理方法的步骤。42.与现有技术相比,本技术实施例主要有以下有益效果:43.本技术通过配置同步任务,配置同步任务包括配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息;根据同步表配置信息获取同步表建表语句,根据扩展表配置信息生成扩展表表名;基于扩展表表名和同步表建表语句创建扩展表;开启同步任务,根据同步任务确定待查询的同步表,并从同步表中获取同步数据;基于扩展表配置信息确定目标扩展表,将同步数据写入目标扩展表中,并将同步结果写入预创建的同步记录表中;本技术通过配置同步任务,同步配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息,并在同步任务下将数据由同步表同步至扩展表中,可以在业务无感知的情况下完成数据同步,实现平滑切换,在减小单表压力的同时保证系统业务正常工作,同时,还提高了数据查询和更新的效率。附图说明44.为了更清楚地说明本技术中的方案,下面将对本技术实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。45.图1是本技术可以应用于其中的示例性系统架构图;46.图2是根据本技术的数据分表处理方法的一个实施例的流程图;47.图3是根据本技术的数据分表处理装置的一个实施例的结构示意图;48.图4是根据本技术的数据分表处理装置的另一个实施例的结构示意图;49.图5是根据本技术的计算机设备的一个实施例的结构示意图。具体实施方式50.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的
技术领域
:的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术;本技术的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本技术的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。51.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。52.为了使本
技术领域
:的人员更好地理解本技术方案,下面将结合附图,对本技术实施例中的技术方案进行清楚、完整地描述。53.本技术提供了一种数据分表处理方法,可以应用于如图1所示的系统架构100中,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。54.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。55.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。56.服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。57.需要说明的是,本技术实施例所提供的数据分表处理方法一般由服务器/终端设备执行,相应地,数据分表处理装置一般设置于服务器/终端设备中。58.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。59.继续参考图2,示出了根据本技术的数据分表处理方法的一个实施例的流程图,包括以下步骤:60.步骤s201,配置同步任务,配置同步任务包括配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息。61.在本实施例中,在配置页面进行同步配置,即配置同步任务,具体为,配置同步表t0和对应的同步表配置信息以及扩展表t1和对应的扩展表配置信息。同步表配置信息包括但不限于表名、是否分表、分表数量和同步表分表标识字段等,扩展表配置信息包括但不限于分表数量、扩展表分表标识字段和去重字段等。62.其中,分表分为水平分表和垂直分表,根据不同的需求采取不同的分表策略。水平分表就是指以行为单位对数据进行拆分,分表之后,所有表的结构都是一样的,一般是解决表中的数据量大的问题;垂直分表是把一张表按列分为多张表,多张表通过主键进行关联,从而组成完整的数据,一般情况下,如果查询多,数据变化少,每次查询都不需要取表整行数据,只需要查询分表的某几列数据,采用垂直分表,可以加快查询速度。63.同步表分表标识字段包括表中每条记录的数据标识,可以用于计算表中每条数据记录在哪张分表中;扩展表分表标识字段为非空唯一标识,如用户id、订单id等;去重字段用于去除重复数据,去重字段可以是一个标识字段,也可以是多个字段组合,例如,用户id、卡券id和领取时间可以组成一个去重字段。64.步骤s202,根据同步表配置信息获取同步表建表语句,根据扩展表配置信息生成扩展表表名。65.在本实施例中,配置同步表t0,根据同步表t0的同步表配置信息从数据库中查询到对应的同步表t0建表语句,建表语句为createtablet0(…),并根据扩展表配置信息中的分表数量生成扩展表表名。其中,根据建表语句能获得表结构。66.示例的,假设同步表t0为单表,同步表配置信息中的表名为user、分表数量为1,根据同步表t0的表名user,从数据库中查询到建表语句:createtableuser(‘id’bigint(16)auto_increment,‘user_id’bigint(16),‘name’varchar(16))。67.扩展表t1的分表数量为10,根据分表数量可以生成一系列扩展表表名,可以在同步表t0表名的基础上拼接序号形成,例如,user_01、user_02…user_10。68.示例的,如果同步表t0原本就是分表,其分表数量为10,表名分别为如从user_01…user_10,则从数据库中查询到建表语句:createtableuser_01(‘id’bigint(16)auto_increment,‘user_id’bigint(16),‘name’varchar(16));…;createtableuser_10(‘id’bigint(16)auto_increment,‘user_id’bigint(16),‘name’varchar(16))。69.扩展表t1的分表数量为10,根据分表数量可以生成一系列扩展表表名,可以在同步表t0表名的基础上拼接后缀和序号形成,例如,user_n_001、user_n_002…user_n_100。70.步骤s203,基于扩展表表名和同步表建表语句创建扩展表。71.在本实施例中,将生成的扩展表表名替换建表语句中的同步表表名,则得到扩展表建表语句,基于扩展表建表语句创建扩展表。72.示例的,扩展表t1表名为user_01、user_02…user_10,同步表建表语句为createtableuser(‘id’bigint(16)auto_increment,‘user_id’bigint(16),‘name’varchar(16)),则生成的扩展表建表语句为createtableuser_01(‘id’bigint(16)auto_increment,‘user_id’bigint(16),‘name’varchar(16));…;createtableuser_10(‘id’bigint(16)auto_increment,‘user_id’bigint(16),‘name’varchar(16));扩展表t1表名为user_n_001、user_n_002…user_n_100,则生成的扩展表建表语句为createtableuser_n_001(‘id’bigint(16)auto_increment,‘user_id’bigint(16),‘name’varchar(16));…;createtableuser_n_100(‘id’bigint(16)auto_increment,‘user_id’bigint(16),‘name’varchar(16))。73.步骤s204,开启同步任务,根据同步任务确定待查询的同步表,并从同步表中获取同步数据。74.开启同步任务后,确定同步对应的同步表和扩展表,根据同步配置从同步表中获取到同步数据。75.具体的,根据同步表对应的同步表配置信息确定当前同步数据标识,基于当前同步数据标识,调用数据查询函数从同步表中查询到同步数据。76.在本实施例中,从同步表t0中查询同步数据,查询可以使用mybatis(mybatis是支持普通sql查询,存储过程和高级映射的优秀持久层框架)通用接口tk.mybatis.mapper.common.mapper,其中有模板查询函数,然后通过重写函数tk.mybatis.mapper.mapperhelper.mappertemplate#tablename注入待查询的同步表t0表名,生成数据查询函数,调用数据查询函数查询获取同步数据。77.本实施例通过重写通用接口的模板查询函数得到数据查询函数,调用数据查询函数查询获取同步数据,可以节省开发成本,提高数据获取效率。78.需要强调的是,为进一步保证同步数据的私密和安全性,上述同步数据还可以存储于一区块链的节点中。79.本技术所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。80.步骤s205,基于扩展表配置信息确定目标扩展表,将同步数据写入目标扩展表中,并将同步结果写入预创建的同步记录表中。81.在本实施例中,基于扩展表配置信息可以确定同步数据要写入的目标扩展表,根据目标扩展表的表名生成写入执行语句,执行写入执行语句将同步数据写入目标扩展表中,并将同步结果写入预创建的同步记录表中。82.同步记录表可以在配置同步任务的过程中创建,同步记录表记录的内容包括但不限于同步表表名、当前同步数据标识和是否已同步完成等同步信息。例如,假设当前同步数据正在写入扩展表,是否已同步完成可以为未完成标识,如果已经完成写入,其对应的是否已同步完成可以为完成标识,从同步记录表中就可以查询到数据是否同步完成。83.在本实施例中,上述基于扩展表配置信息确定目标扩展表的步骤包括:84.从扩展表配置信息中获取扩展表分表标识字段和分表数量,根据扩展表分表标识字段确定标识字段属性值;85.采用哈希算法对标识字段属性值进行哈希运算,得到哈希值;86.将哈希值和分表数量进行取余运算,得到运算结果;87.根据运算结果确定目标扩展表的表名。88.其中,扩展表配置信息中包含有扩展表分表标识字段和分表数量,可以直接从扩展表配置信息中进行提取,获取当前同步数据对应的扩展表分表标识字段的标识字段属性值,采用哈希算法计算标识字段属性值的哈希值,然后用哈希值对总表数量进行取余运算(即取模运算),运算结果可以确定目标扩展表。89.需要说明的是,总表数量由同步表的分表数量和扩展表的分表数量确定,假设同步表为单表,分表数量为0,扩展表分表数量为10,则总表数量为10;假设同步表的分表数量为a,扩展表的分表数量为b,则总表数量为a×b,a和b均为大于0的自然数,例如,a=10,b=10,则总表数量为100。90.示例的,根据扩展表分表标识字段(假设是user_id),找到当前记录的user_id属性值,采用murmurhash算法,对user_id取hash,然后对总表数量取余,得到待写入的目标扩展表的表名后缀,进而可以确定目标扩展表,如:user_id=3883214取hash,再对100取余是1,对应到目标扩展表是user_n_001。91.在本实施例中,采用哈希算法确定目标扩展表,可以利用哈希算法的高运算性能,降低碰撞率,让数据更均匀分布到扩展表中。92.本技术通过配置同步任务,同步配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息,并在同步任务下将数据由同步表同步至扩展表中,可以在业务无感知的情况下完成数据同步,实现平滑切换,在减小单表压力的同时保证系统业务正常工作,同时,还提高了数据查询和更新的效率。93.在本实施例的一些可选的实现方式中,上述将同步数据写入目标扩展表中的步骤包括:94.根据目标扩展表的表名,调用数据写入函数将同步数据写入目标扩展表中。95.在本实施例中,数据写入还是通过mybatis通用接口tk.mybatis.mapper.common.mapper,其中有模板insert(写入)方法,通过重写tk.mybatis.mapper.mapperhelper.mappertemplate#tablename方法写入新的目标扩展表表名,生成数据写入函数,调用数据写入函数执行写入执行语句,将同步数据写入目标扩展表中。96.写入成功后,将已同步最新的同步数据标识写入同步记录表,为了防止同步任务中断,可以从最新位置继续同步数据。97.本实施例通过重写通用接口的模板插入方法得到数据写入函数,调用数据写入函数执行写入执行语句,实现数据由同步表至扩展表的插入,可以节省开发成本,提高数据写入效率。98.在一些可选的实现方式中,在上述将同步结果写入预创建的同步记录表中的步骤之后还包括:99.接收请求方的数据查询请求,判断是否完成同步;100.当未完成同步时,根据数据查询请求分别查询同步表和扩展表,获得对应的查询结果,将查询结果去重后返回至请求方;101.当同步完成时,根据数据查询请求分别查询扩展表,获得对应的查询结果返回至请求方。102.在本实施例中,查询数据时,接收请求方的数据查询请求,从数据查询请求中提取数据标识,当开启同步任务时,查询同步记录表中是否有匹配的数据标识,如果有,确定其是否已同步完成,若没有同步完成,则根据从数据查询请求中提取的数据标识分别在同步表和扩展表中进行查询,查询结果需要去重后返回给请求方;若同步完成,则根据数据标识在扩展表中进行查询,将查询结果直接返回至请求方。如果同步记录表中没有查询到对应的数据标识,则说明还没有该数据还没有开始进行同步,可以直接在同步表中进行查询,将查询结果直接返回至请求方。103.需要说明的是,数据标识为同步表分表字段标识或扩展表分表字段标识,可以用于确定其对应的数据在哪张表里。104.例如,请求方查询用户a的领券记录,根据a的用户id(数据标识),取hash后,取模分别对应oldtable2(同步表)和newtable10(扩展表),最后根据用户id分别查询到两张表的数据,得到查询结果,查询结果去重后返回给请求方。105.本实施例中,在数据同步过程中,根据同步情况查询新表(扩展表)和/或旧表(同步表),可以避免数据一致性问题,提高查询的数据准确性。106.在本实施例中,上述将查询结果去重后返回至请求方的步骤包括:107.从扩展表配置信息中获取去重字段;108.根据去重字段对查询结果进行去重,得到去重数据;109.将去重数据发送给请求方。110.具体的,在同步未完成的情况下,分别在两张表中进行数据查询,可能会查询到重复的数据,需要对查询到的数据进行去重。扩展表配置信息中配置有去重字段,根据去重字段对查询结果进行去重。需要说明的是,去重字段扩展表和同步表是一样的。111.例如,还是以上面查询用户a的领券记录为例,去重字段为数据卡券id和领取时间,则根据数据卡券id和领取时间去重,将去重后的数据发送给请求方,112.本实施例中,通过将查询结果进行去重,可以保证数据的唯一性,避免数据繁琐、冗杂。113.在一些可选的实现方式中,在上述将同步结果写入预创建的同步记录表中的步骤之后还包括:114.接收到数据更新请求,根据数据更新请求获取对应的更新数据;115.判断是否完成同步,当未完成同步时,将更新数据分别写入同步表和扩展表;116.当同步完成时,将更新数据写入扩展表。117.在本实施例中,在开启同步任务的情况下,根据数据更新请求获取更新数据标识和对应的更新数据,查询同步记录表中是否有匹配的更新数据标识,如果有,确定其是否已同步完成,若没有同步完成,则将更新数据分别写入同步表和扩展表;若同步完成,则将更新数据写入扩展表。如果同步记录表中没有查询到对应的更新数据标识,可以直接在扩展表中进行更新。118.需要说明的是,没有同步完成时,更新操作需要同步操作新数据表(扩展表)和旧数据表(同步表),更新数据写入需要根据去重字段匹配。119.在本实施例的另一种实现方式中,在开启同步任务的情况下,获取删除数据请求,根据删除数据请求获取删除数据标识,查询同步记录表中是否有匹配的删除数据标识,如果有,确定其是否已同步完成,若没有同步完成,则将根据去重字段同时匹配同步表和扩展表中对应的删除数据,将其进行删除;若同步完成,则只需删除扩展表中对应的删除数据。如果同步记录表中没有查询到对应的删除数据标识,可以直接在同步表中进行匹配删除。120.本实施例中,在数据同步时,根据数据的同步情况进行更新或删除操作,可以避免数据一致性问题。121.在本实施例中,同步完成后,关闭同步状态(即关闭同步任务),删除同步记录表,将当前表改为新表配置,比如未同步前,当前表是user,分表数量0,获取tablename方法只返回user,改为新表配置是分表,表名是user_01~user_10,分表数量10张,分表字段是user_id,获取tablename方法会根据user_id值返回user_01~user_10,后续数据curd操作新表。其中,curd是一个数据库技术中的缩写词,代表创建(create)、更新(update)、读取(read)和删除(delete)操作。122.本技术可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。123.本技术可应用于金融科技领域中,例如,可应用于银行系统中,用于对用户的账户明细数据进行同步、查询、更新和/或删除操作等;还可以应用于保险领域中,用于对用户的保险数据进行处理。124.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等非易失性存储介质,或随机存储记忆体(randomaccessmemory,ram)等。125.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。126.进一步参考图3,作为对上述图2所示方法的实现,本技术提供了一种数据分表处理装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。127.如图3所示,本实施例所述的数据分表处理装置300包括:配置模块301、第一获取模块302、创建模块303、第二获取模块304以及写入模块305。其中:128.配置模块301用于配置同步任务,配置同步任务包括配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息;129.第一获取模块302用于根据同步表配置信息获取同步表建表语句,根据扩展表配置信息生成扩展表表名;130.创建模块303用于基于扩展表表名和同步表建表语句创建扩展表;131.第二获取模块304用于开启同步任务,根据同步任务确定待查询的同步表,并从同步表中获取同步数据;132.写入模块305用于基于扩展表配置信息确定目标扩展表,将同步数据写入目标扩展表中,并将同步结果写入预创建的同步记录表中。133.需要强调的是,为进一步保证同步数据的私密和安全性,上述同步数据还可以存储于一区块链的节点中。134.基于上述数据分表处理装置,通过配置同步任务,同步配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息,并在同步任务下将数据由同步表同步至扩展表中,可以在业务无感知的情况下完成数据同步,实现平滑切换,在减小单表压力的同时保证系统业务正常工作,同时,还提高了数据查询和更新的效率。135.在本实施例中,第二获取模块304包括确定子模块和查询子模块,其中,确定子模块用于根据同步表对应的同步表配置信息确定当前同步数据标识;查询子模块用于基于当前同步数据标识,调用数据查询函数从同步表中查询到同步数据。136.本实施例通过重写通用接口的模板查询函数得到数据查询函数,调用数据查询函数查询获取同步数据,可以节省开发成本,提高数据获取效率。137.在本实施例中,写入模块305包括获取子模块、哈希运算子模块、取余运算子模块和确定子模块,其中:138.从扩展表配置信息中获取扩展表分表标识字段和分表数量,根据扩展表分表标识字段确定标识字段属性值;139.采用哈希算法对标识字段属性值进行哈希运算,得到哈希值;140.将哈希值和分表数量进行取余运算,得到运算结果;141.根据运算结果确定目标扩展表的表名。142.在本实施例中,采用哈希算法确定目标扩展表,可以利用哈希算法的高运算性能,降低碰撞率,让数据更均匀分布到扩展表中。143.在本实施例的一些可选的实现方式中,写入模块305还包括写入子模块,用于根据目标扩展表的表名,调用数据写入函数将同步数据写入目标扩展表中。144.本实施例通过重写通用接口的模板插入方法得到数据写入函数,调用数据写入函数执行写入执行语句,实现数据由同步表至扩展表的插入,可以节省开发成本,提高数据写入效率。145.在本实施例的一些可选的实现方式中,参见图4所示,数据分表处理装置300还包括查询模块306,用于:146.接收请求方的数据查询请求,判断是否完成同步;147.当未完成同步时,根据数据查询请求分别查询同步表和扩展表,获得对应的查询结果,将查询结果去重后返回至请求方;148.当同步完成时,根据数据查询请求分别查询扩展表,获得对应的查询结果返回至请求方。149.本实施例中,在数据同步过程中,根据同步情况查询扩展表和/或同步表,可以避免数据一致性问题,提高查询的数据准确性150.在本实施例中,查询模块306包括去重子模块,用于:151.从扩展表配置信息中获取去重字段;152.根据去重字段对查询结果进行去重,得到去重数据;153.将去重数据发送给请求方。154.本实施例中,通过将查询结果进行去重,可以保证数据的唯一性,避免数据繁琐、冗杂。155.在一些可选的实现方式中,数据分表处理装置300还包括更新模块307,用于:156.接收到数据更新请求,根据数据更新请求获取对应的更新数据;157.判断是否完成同步,当未完成同步时,将更新数据分别写入同步表和扩展表;158.当同步完成时,将更新数据写入扩展表。159.本实施例中,在数据同步时,根据数据的同步情况进行更新操作,可以避免数据一致性问题。160.为解决上述技术问题,本技术实施例还提供计算机设备。具体请参阅图5,图5为本实施例计算机设备基本结构框图。161.所述计算机设备5包括通过系统总线相互通信连接存储器51、处理器52、网络接口53。需要指出的是,图中仅示出了具有组件51-53的计算机设备5,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本
技术领域
:技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。162.所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。163.所述存储器51至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器51可以是所述计算机设备5的内部存储单元,例如该计算机设备5的硬盘或内存。在另一些实施例中,所述存储器51也可以是所述计算机设备5的外部存储设备,例如该计算机设备5上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器51还可以既包括所述计算机设备5的内部存储单元也包括其外部存储设备。本实施例中,所述存储器51通常用于存储安装于所述计算机设备5的操作系统和各类应用软件,例如数据分表处理方法的计算机可读指令等。此外,所述存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。164.所述处理器52在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制所述计算机设备5的总体操作。本实施例中,所述处理器52用于运行所述存储器51中存储的计算机可读指令或者处理数据,例如运行所述数据分表处理方法的计算机可读指令。165.所述网络接口53可包括无线网络接口或有线网络接口,该网络接口53通常用于在所述计算机设备5与其他电子设备之间建立通信连接。166.本实施例通过处理器执行存储在存储器的计算机可读指令时实现如上述实施例数据分表处理方法的步骤,通过配置同步任务,同步配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息,并在同步任务下将数据由同步表同步至扩展表中,可以在业务无感知的情况下完成数据同步,实现平滑切换,在减小单表压力的同时保证系统业务正常工作,同时,还提高了数据查询和更新的效率。167.本技术还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的数据分表处理方法的步骤,通过配置同步任务,同步配置同步表和对应的同步表配置信息以及扩展表和对应的扩展表配置信息,并在同步任务下将数据由同步表同步至扩展表中,可以在业务无感知的情况下完成数据同步,实现平滑切换,在减小单表压力的同时保证系统业务正常工作,同时,还提高了数据查询和更新的效率。168.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。169.显然,以上所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例,附图中给出了本技术的较佳实施例,但并不限制本技术的专利范围。本技术可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本技术的公开内容的理解更加透彻全面。尽管参照前述实施例对本技术进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本技术说明书及附图内容所做的等效结构,直接或间接运用在其他相关的
技术领域
:,均同理在本技术专利保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1