数据处理系统和方法
文献发布时间:2024-01-17 01:27:33
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理系统和方法。
背景技术
在实际应用中,通常用数据库来存储业务系统的数据,利用数据库可以高效的对数据进行管理,包括数据的有效组织、查询、修改等。随着业务系统的运行,产生的数据量不断增长。可以理解的是,随着数据量的增长,数据库的数据读写性能也会受到影响。
因此,如何在业务系统运行期间,保持数据操作的高效率是亟待解决的问题。
发明内容
本申请提出一种数据处理系统和方法。具体方案如下:
本申请一方面实施例提出了一种数据处理系统,包括:判别装置和业务系统;
所述判别装置,用于获取数据库信息,其中,所述数据库信息是与业务系统启用的数据库相关的信息;根据所述数据库信息,确定所述业务系统对应的分库分表信息,其中,所述分库分表信息用于表征所述业务系统是否开启分库分表;将所述分库分表信息提供给所述业务系统;
所述业务系统,用于根据所述分库分表信息,对所述启用的数据库进行数据操作。
可选地,所述判别装置,用于在所述数据库信息满足预设条件的情况下,确定所述分库分表信息为第一标识符;在所述数据库信息未满足预设条件的情况下,确定所述分库分表信息为第二标识符。
可选地,所述业务系统,用于响应于所述分库分表信息为所述第一标识符,通过分库分表中间件,根据数据库配置文件对所述启用的数据库中的目标数据库进行数据操作;响应于所述分库分表信息为第二标识符,直接对所述启用的数据库进行数据操作。
可选地,所述业务系统,用于响应于所述分库分表信息为所述第一标识符,通过所述分库分表中间件对操作语句进行解析,以获取所述操作语句中的数据库标识和数据表标识;根据所述数据库标识、所述数据表标识及所述数据库配置文件,从所述启用的数据库中确定出目标数据库及从所述目标数据库中确定出目标数据表;根据所述目标数据库的标识和所述目标数据表的标识,对所述操作语句进行改写,以获取改写后的操作语句;执行所述改写后的操作语句。
可选地,所述业务系统,用于通过分库分表中间件,获取多个数据库的信息、每个数据库上每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则;根据每个数据库的信息、每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则,生成所述数据库配置文件。
可选地,所述数据库信息包括以下至少一项:所述启用的数据库的数量;所述启用的数据库的总数据量;数据操作响应时间。
可选地,所述判别装置,用于在所述启用的数据库的数量大于预设数量的情况下,确定所述分库分表信息为所述第一标识符;或者,
所述判别装置,用于在所述启用的数据库的数据为所述预设数量且所述总数据量大于第二阈值的情况下,确定所述分库分表信息为所述第一标识符;或者,
所述判别装置,用于在所述启用的数据库的数量为所述预设数量且所述响应时间大于第三阈值的情况下,确定所述分库分表信息为所述第一标识符。
可选地,所述判别装置,用于在所述启用的数据库的数量大于预设数量且所述总数据量大于第四阈值的情况下,生成增加数据库的提示信息。本申请另一方面实施例提出了一种数据处理方法,应用于业务系统,该方法包括:
获取判别装置提供的分库分表信息,其中,所述分库分表信息用于表征所述业务系统是否开启分库分表;
根据所述分库分表信息,对所述启用的数据库进行数据操作。
本申请实施例的数据处理方法,通过获取判别装置提供的分库分表信息,根据分库分表信息,对业务系统对应的数据库进行数据操作。由此,实现了根据数据库信息动态开启分库分表,从而在业务系统运行期间,可以保持数据操作的高效率。
本申请另一方面实施例提出了一种数据处理方法,应用于判别装置,该方法包括:
获取数据库信息,其中,所述数据库信息是与业务系统启用的数据库相关的信息;
根据所述数据库信息,确定分库分表信息,其中,所述分库分表信息用于表征所述业务系统是否开启分库分表;
将所述分库分表信息提供给所述业务系统。
本申请实施例的数据处理方法,通过根据数据库信息动态确定是否开启分库分表方案,并提供给业务系统,可以避免在业务系统运行前期数据规模不大的场景下使用分库分表造成的性能影响,在数据规模达到开启条件后,开启分库分表可以提升大数据量下的数据操作效率,从而在业务系统运行期间,可以保持数据操作的高效率。
本申请另一方面实施例提出了一种计算机设备,包括处理器和存储器;
其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如上述一方面实施例所述的方法。
本申请另一方面实施例提出了一种性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一方面实施例所述的方法。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例提供的一种数据处理方法的流程示意图;
图2为本申请实施例提供的另一种数据处理方法的流程示意图;
图3为本申请实施例提供的另一种数据处理方法的流程示意图;
图4为本申请实施例提供的一种数据处理系统的结构示意图;
图5为本申请实施例提供的一种数据处理的过程示意图;
图6为本申请实施例提供的一种数据处理装置的结构示意图;
图7为本申请实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的数据处理系统、方法、装置、计算机设备和存储介质。
图1为本申请实施例提供的一种数据处理方法的流程示意图。
本申请实施例的数据处理方法,可以由业务系统执行,以通过判别装置基于与业务系统启用的数据库对应的数据库信息确定的分库分表信息,对业务系统启用的数据库进行数据操作,达到了根据数据库信息动态开启分库分表方案的目的,从而在业务系统运行期间,可以保持数据操作的高效率。
如图1所示,该数据处理方法包括:
步骤101,获取判别装置提供的分库分表信息,其中,分库分表信息用于表征业务系统是否开启分库分表。
分库分表是数据库进行数据分片的有效手段,可以通过分库和分表进行数据的拆分来使得各个表的数据量保持在阈值以下。
本申请中,业务系统可以每隔预设时长获取判别装置提供的分库分表信息。其中,分库分表信息可以是判别装置基于业务系统启动的数据库的数据库信息确定的,分库分表信息可以用于表征业务系统是否开启分库分表。这里的预设时长可以根据实际需要确定,本申请对此不作限定。
在获取分库分表信息时,业务系统可以每隔预设时间向判别装置发送请求,以获取分库分表信息。判别装置获取请求后,可以将分库分表信息发送给业务系统,由此业务系统可以获取分库分表信息。
步骤102,根据分库分表信息,启用的数据库进行数据操作。
本申请中,如果分库分表信息为开启分库分表,那么业务系统可以开启分库分表方案,通过分布式数据库中间件,对启用的数据库进行数据操作;如果分库分表信息为不开启分库分表,那么业务系统不使用分库分表方案,直接对启用的数据库进行数据操作。
其中,对启用数据库进行的数据操作可以是增加数据、删除数据、更新数据、查询数据等。
本申请实施例中,由于分库分表信息是判别装置基于业务系统启用的数据库的数据库信息确定的,业务系统通过获取判别装置提供的分库分表信息,根据分库分表信息,对业务系统对应的数据库进行数据操作。由此,实现了根据数据库信息动态开启分库分表,从而在业务系统运行期间,可以保持数据操作的高效率。
在本申请的一个实施例中,可以利用标识符表示分库分表信息。响应于分库分表信息为第一标识符,通过分库分表中间件,根据数据库配置文件对启用的数据库中的目标数据库进行数据操作。也就是说,在分库分表信息为第一标识的情况下,可以认为业务系统可以开启分库分表,通过分库分表中间件,可以根据数据库配置文件对启用的数据库中的目标数据库进行数据操作。
由于开启分开分表的情况下,底层数据库或者数据表标识对用户是不可见的,比如,用户输入的操作语句中数据表标识为tableA,但是随着数据量增加对tableA进行分表,得到了三个数据表tableA01、tableA02、tableA03,可见底层数据库中并没有tableA,因此在开启分库分表的情况下,需要将操作语句中的数据库数据表改写为待操作数据所在的数据库和数据表。
基于此,在分库分表信息为第一标识的情况下,业务系统可以响应于分库分表信息为第一标识符,通过分库分表中间件对操作语句进行解析,以获取操作语句中的数据库标识和数据表标识,之后根据数据库标识、数据表标识及数据库配置文件,从启用的数据库中确定出目标数据库及从目标数据库中确定出目标数据表,并根据目标数据库的标识和目标数据表的标识,对操作语句进行改写,以获取改写后的操作语句,执行改写后的操作语句,从而获取执行结果。
响应于分库分表信息为第二标识符,可以认为业务系统不使用分库分表,业务系统可以直接对启用的数据库进行数据操作。
比如,第一标识符为1,第二标识符为0,或者,第一标识符为true,第二标识符为false等。这里第一标识符和第二标识符仅为示例,可以根据实际需要确定。
本申请实施例中,业务系统在根据分库分表信息,对业务系统对应的数据库进行数据操作时,响应于分库分表信息为第一标识符,通过分库分表中间件,根据数据库配置文件对数据库进行数据操作;响应于分库分表信息为第二标识符,直接对数据库进行数据操作。由此,可以根据获取的标识符,确定是否通过分库分表中间件对启用的数据库进行数据操作,达到了根据数据库信息动态开启分库分表方案的目的,从而在业务系统运行期间,可以保持数据操作的高效率。
图2为本申请实施例提供的另一种数据处理方法的流程示意图。
如图2所示,上述数据库配置文件的生成方法包括:
步骤201,获取多个数据库的信息、每个数据库上每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则。
本申请中,可以启动多个数据库服务器,多个数据库服务器创建多个数据库,每个数据库中可以创建至少一个数据表。业务系统可获取多个数据库的信息、每个数据库上每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则。
其中,每个数据库对应的分片规则中包括数据库存放数据的规则,每张数据表对应的分片规则中可以包括数据表存放数据的规则。
比如,某数据库对应的分片规则可以为根据对该数据库拆分得到的数据库的编号进行取模,根据取模结果确定数据要放入的数据库。
步骤202,根据每个数据库的信息、每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则,生成数据库配置文件。
在获取多个数据库的信息和多张数据表的信息,及对应的分片规则后,可以根据数据库信息和分片规则,生成数据库配置文件。由此,业务系统在使用分库分表方案时,分库分表中间件可以利用数据库配置文件,对业务系统发起的操作语句进行解析、优化、路由、改写操作语句、执行,并将执行结果返回给业务系统。
在实际应用中,数据库或者数据表对应的分片规则,可以随着数据库的拆分或者数据表的拆分发生变化。比如,数据库对应的分片规则为根据对该数据库拆分得到的数据库的编号进行取模,根据取模结果确定数据要放入的数据库,若数据库由3个变为6个,那么为了使得数据可以存放入新的数据库中,那么分片规则需要变化。
本申请实施例中,还可通过获取多个数据库的信息、每个数据库上每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则;根据每个数据库的信息、每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则,生成数据库配置文件。由此,业务系统在利用分库分表中间件对启用的数据库进行操作时,分库分表中间件可以基于数据库配置文件中的数据库的信息和分片规则进行数据操作。
图3为本申请实施例提供的另一种数据处理方法的流程示意图。该数据处理方法可以由判别装置执行,通过根据业务系统启用的数据库信息,确定分库分表开启信息,以实现通过分析当前数据库信息来动态开启业务系统的分库分表方案。
如图3所示,该数据处理方法包括:
步骤301,获取数据库信息,其中,数据库信息是与业务系统启用的数据库相关的信息。
本申请中,判别装置可以每隔预设时长获取数据库信息,其中,数据库信息是与业务系统启用的数据库相关的信息。其中,数据库信息可以包括但不限于启用的数据库的数量、启用的数据库的总数据量、数据操作响应时间、启用的数据库中每个数据表的平均数据量等。
本申请中,业务系统启用的数据库可以是一个或多个,业务系统的数据可以存放在这些数据库中。
步骤302,根据数据库信息,确定分库分表信息,其中,分库分表信息用于表征业务系统是否开启分库分表。
本申请中,判别装置可以根据数据库信息,确定分库分表信息。其中,分库分表信息可以用于表征业务系统是否开启分库分表。
在确定分库分表信息时,判断装置可以判断数据库信息,是否满足预设条件,若数据库信息满足预设条件,则确定分库分表信息为第一标识符。若数据库信息未满足预设条件,则确定分库分表信息为第二标识符。其中,第一标识符用于表示开启分库分表,第二标识符用于表示不开启分库分表。
比如,第一标识符可以为1,第二标识符可以0,或者,第一标识符为true,第二标识符为false等。需要说明的是,这里第一标识符和第二标识符仅为示例,可以根据实际需要确定,本申请对此不作限定。
本申请中,可以判断启用的数据库的数量是否大于预设数量。若大于预设数量,则确定分库分表信息为第一标识符。若启用的数据库的数量为预设数量,则确定分库分表信息为第二标识符。
比如,某业务系统m初始化时,默认开启一个数据库A,随着业务系统的运行数据量增加,需要使用分库分表,又开启数据库B和数据C,可以确定分库分表信息为第一标识符。某时刻该业务系统m需要存储的数据量比较少,而业务系统n需要存储大量的数据,这时可以将数据B和数据C中的数据导入数据库A中,数据库B和数据库C供业务系统n使用,那么业务系统启用的数据库为数据库A,不需要开启分库分表,则确定分库分表信息为第二标识符。
进一步地,在启用的数据库的数量为预设数量的情况下,若数据库启用的时间超过预设时长后,还可以判断启用的数据库的总数据量是否大于第二阈值,若大于第二阈值,可以认为启用的数据库的性能下降,需要启用新的数据库,则确定分库分表信息为第一标识符,即开启分库分表。
或者,在启用的数据库的数量为预设数量的情况下,若数据库启用的时间超过预设时长后,还可以判断数据操作响应时间是否大于第三阈值,也即判断执行一次数据操作的时间。若响应时间大于第三阈值,说明响应速度比较慢,需要启用新的数据库,则确定分库分表信息为第一标识符。
本申请中,预设数量可以是业务系统初始化时,启用的数据库的数量。
比如,预设数量为一个,判别装置可以每24小时执行一次,若启用的数据库的数量为一个,说明不需要开启分库分表,则确定分库分表信息为第二标识符,若启用的数据库数量大于一个,需要开启分库分表,则确定分库分表信息为第一标识符。
若启用的数据库数量为一个,随着数据库的数据量增加,那么还可以判断数据库的总数据量,或者执行一次数据操作的响应时间,若数据库的总数据量大于第二阈值,或者响应时间大于第三阈值,说明需要开启新的数据库,则确定分库分表信息为第一标识符,以开启新的数据库。若开启的数据库数量大于一个,说明需要开启分库分表,则确定分库分表信息为第一标识符。
可以理解的是,数据库中数据表的分表方案与上述类似,故在此不再赘述。
比如,业务系统启用了一个数据库,数据库中有两个数据表,两个数据表的总数据量超过了设定阈值,判别装置可以确定对数据表进行拆分,开启分库分表。
步骤303,将分库分表信息提供给业务系统。
判别装置在确定分库分表信息之后,将分库分表信息提供给业务系统,以使业务系统根据分库分表信息,对启用的数据库进行数据操作。
本申请实施例中,通过获取数据库信息;根据数据库信息,确定业务系统对应的分库分表信息;将分库分表信息提供给业务系统。由此,通过根据数据库信息动态确定是否开启分库分表方案,并提供给业务系统,可以避免在业务系统运行前期数据规模不大的场景下使用分库分表造成的性能影响,在数据规模达到开启条件后,开启分库分表可以提升大数据量下的数据操作效率,从而在业务系统运行期间,可以保持数据操作的高效率。
在本申请的一个实施例中,在启用的数据库的数量大于预设数量的情况下,随着业务系统的运行,数据库的总数量逐渐增加,因此,还可以判断总数据量是否大于第四阈值。若启用的数据库的数量大于预设数量且总数据量大于第四阈值,说明需要开启新的数据库,则判别装置可以生成增加数据库的提示信息,以提示运维人员开启新的数据库。
比如,业务系统启用了三个数据库,某时刻三个数据库的总容量大于第四阈值,可以认为数据库的性能开始下降,需要开启新的数据库,则可以向运维人员发送启用新的数据库的提示信息。
本申请实施例中,还可以在启用的数据库的数量大于预设数量且总数据量大于第四阈值的情况下,生成增加数据库的提示信息,以提示运维人员开启新的数据库,以保持数据操作的高效率。
为了实现上述实施例,本申请实施例还提出一种数据处理系统。图4为本申请实施例提供的一种数据处理系统的结构示意图。
如图4所示,该数据处理系统400包括:判别装置410和业务系统420。
本申请中,判别装置410可以每隔预设时长获取数据库信息,其中,数据库信息是与业务系统启用的数据库相关的信息。其中,数据库信息可以包括但不限于启用的数据库的数量、启用的数据库的总数据量、数据操作响应时间、启用的数据库中每个数据表的平均数据量等。
本申请中,判别装置510可以根据数据库信息,确定业务系统420对应的分库分表信息。其中,分库分表信息用于表征业务系统420是否开启分库分表
判断装置410在确定分库分表信息时,可以判断数据库信息,是否满足预设条件,若数据库信息满足预设条件,则确定分库分表信息为第一标识符。若数据库信息未满足预设条件,则确定分库分表信息为第二标识符。其中,第一标识符用于表示开启分库分表,第二标识符用于表示不开启分库分表。
比如,第一标识符可以为1,第二标识符可以0,或者,第一标识符为true,第二标识符为false等。需要说明的是,这里第一标识符和第二标识符仅为示例,可以根据实际需要确定,本申请对此不作限定。
本申请中,可以判断启用的数据库的数量是否大于预设数量。若大于预设数量,则确定分库分表信息为第一标识符。若启用的数据库的数量为预设数量,则确定分库分表信息为第二标识符。
比如,某业务系统m初始化时,默认开启一个数据库A,随着业务系统的运行数据量增加,需要使用分库分表,又开启数据库B和数据C,可以确定分库分表信息为第一标识符。某时刻该业务系统m需要存储的数据量比较少,而业务系统n需要存储大量的数据,这时可以将数据B和数据C中的数据导入数据库A中,数据库B和数据库C供业务系统n使用,那么业务系统启用的数据库为数据库A,不需要开启分库分表,则确定分库分表信息为第二标识符。
进一步地,在启用的数据库的数量为预设数量的情况下,若数据库启用的时间超过预设时长后,还可以判断启用的数据库的总数据量是否大于第二阈值,若大于第二阈值,可以认为启用的数据库的性能下降,需要启用新的数据库,则确定分库分表信息为第一标识符,即开启分库分表。
或者,在启用的数据库的数量为预设数量的情况下,若数据库启用的时间超过预设时长后,还可以判断数据操作响应时间是否大于第三阈值,也即判断执行一次数据操作的时间。若响应时间大于第三阈值,说明响应速度比较慢,需要启用新的数据库,则确定分库分表信息为第一标识符。
本申请中,预设数量可以是业务系统初始化时,启用的数据库的数量。
比如,预设数量为一个,判别装置可以每24小时执行一次,若启用的数据库的数量为一个,说明不需要开启分库分表,则确定分库分表信息为第二标识符,若启用的数据库数量大于一个,需要开启分库分表,则确定分库分表信息为第一标识符。
若启用的数据库数量为一个,随着数据库的数据量增加,那么还可以判断数据库的总数据量,或者执行一次数据操作的响应时间,若数据库的总数据量大于第二阈值,或者响应时间大于第三阈值,说明需要开启新的数据库,则确定分库分表信息为第一标识符,以开启新的数据库。若开启的数据库数量大于一个,说明需要开启分库分表,则确定分库分表信息为第一标识符。
可以理解的是,数据库中数据表的分表方案与上述类似,故在此不再赘述。
比如,业务系统启用了一个数据库,数据库中有两个数据表,两个数据表的总数据量超过了设定阈值,判别装置可以确定对数据表进行拆分,开启分库分表。
判别装置410在确定分库分表信息之后,将分库分表信息提供给业务系统420,业务系统420可以根据分库分表信息,对启用的数据库进行数据操作。
本申请中,如果分库分表信息为开启分库分表,那么业务系统420可以开启分库分表方案,通过分布式数据库中间件,对启用的数据库进行数据操作;如果分库分表信息为不开启分库分表,那么业务系统420不使用分库分表方案,直接对启用的数据库进行数据操作。
其中,对启用数据库进行的数据操作可以是增加数据、删除数据、更新数据、查询数据等。
在本申请的一个实施例中,在启用的数据库的数量大于预设数量的情况下,随着业务系统的运行,数据库的总数量逐渐增加,因此,判别装置410还可以判断总数据量是否大于第四阈值。若启用的数据库的数量大于预设数量且总数据量大于第四阈值,说明需要开启新的数据库,则判别装置410可以生成增加数据库的提示信息,以提示运维人员开启新的数据库。
比如,业务系统启用了三个数据库,某时刻三个数据库的总容量大于第四阈值,可以认为数据库的性能开始下降,需要开启新的数据库,则可以向运维人员发送启用新的数据库的提示信息。
本申请实施例中,判别装置还可以在启用的数据库的数量大于预设数量且总数据量大于第四阈值的情况下,生成增加数据库的提示信息,以提示运维人员开启新的数据库,以保持数据操作的高效率。
在本申请的一个实施例中,可以利用标识符表示分库分表信息。响应于分库分表信息为第一标识符,业务系统420可以通过分库分表中间件,根据数据库配置文件对启用的数据库中的目标数据库进行数据操作。也就是说,在分库分表信息为第一标识的情况下,可以认为业务系统420可以开启分库分表,通过分库分表中间件,可以根据数据库配置文件对启用的数据库中的目标数据库进行数据操作。
由于开启分开分表的情况下,底层数据库或者数据表标识对用户是不可见的,比如,用户输入的操作语句中数据表标识为tableA,但是随着数据量增加对tableA进行分表,得到了三个数据表tableA01、tableA02、tableA03,可见底层数据库中并没有tableA,因此在开启分库分表的情况下,需要将操作语句中的数据库数据表改写为待操作数据所在的数据库和数据表。
基于此,在分库分表信息为第一标识的情况下,业务系统420可以响应于分库分表信息为第一标识符,通过分库分表中间件对操作语句进行解析,以获取操作语句中的数据库标识和数据表标识,之后根据数据库标识、数据表标识及数据库配置文件,从启用的数据库中确定出目标数据库及从目标数据库中确定出目标数据表,并根据目标数据库的标识和目标数据表的标识,对操作语句进行改写,以获取改写后的操作语句,执行改写后的操作语句,从而获取执行结果。
响应于分库分表信息为第二标识符,可以认为业务系统420不使用分库分表,业务系统420可以直接对启用的数据库进行数据操作。
比如,第一标识符为1,第二标识符为0,或者,第一标识符为true,第二标识符为false等。这里第一标识符和第二标识符仅为示例,可以根据实际需要确定。
由此,业务系统可以根据获取的标识符,确定是否通过分库分表中间件对启用的数据库进行数据操作。
在本申请的一个实施例中,业务系统420还可以获取多个数据库的信息、每个数据库上每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则,并根据每个数据库的信息、每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则,生成数据库配置文件。
本申请中,可以启动多个数据库服务器,多个数据库服务器创建多个数据库,每个数据库中可以创建至少一个数据表。业务系统420可获取多个数据库的信息、每个数据库上每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则。
其中,每个数据库对应的分片规则中包括数据库存放数据的规则,每张数据表对应的分片规则中可以包括数据表存放数据的规则。
比如,某数据库对应的分片规则可以为根据对该数据库拆分得到的数据库的编号进行取模,根据取模结果确定数据要放入的数据库。
在获取多个数据库的信息和多张数据表的信息,及对应的分片规则后,可以根据数据库信息和分片规则,生成数据库配置文件。由此,业务系统在使用分库分表方案时,分库分表中间件可以利用数据库配置文件,对业务系统发起的操作语句进行解析、优化、路由、改写操作语句、执行,并将执行结果返回给业务系统。
在实际应用中,数据库或者数据表对应的分片规则,可以随着数据库的拆分或者数据表的拆分发生变化。比如,数据库对应的分片规则为根据对该数据库拆分得到的数据库的编号进行取模,根据取模结果确定数据要放入的数据库,若数据库由3个变为6个,那么为了使得数据可以存放入新的数据库中,那么分片规则需要变化。
本申请实施例中,还可通过获取多个数据库的信息、每个数据库上每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则;根据每个数据库的信息、每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则,生成数据库配置文件。由此,业务系统在利用分库分表中间件对启用的数据库进行操作时,分库分表中间件可以基于数据库配置文件中的数据库的信息和分片规则进行数据操作。
为了进一步说明上述实施例,下面结合图5进行说明,图5为本申请实施例提供的一种分库分表的过程示意图。
本申请中,可以启动多个数据库服务器,数据库服务器创建多个数据库和多张数据表。业务系统可以根据创建的数据库和数据表的信息,在配置文件中添加全部的数据库信息,并为每个数据库配置对应的分片规则和为每张数据表配置对应的分片规则。
如图5所示,判别装置可以定时进行判断,比如每24小时执行一次,根据业务系统启用的数据库的数据库信息判断是否满足预设条件。如果满足预设条件,则将开启分库分表设置为true,否则设置为false。由此,在业务系统运行前期,数据量达不到预设条件的情况下,不使用分库分表方案,随着数据量的增长,达到预设条件,从而开启分库分表方案。
如图5所示,业务系统可以定时刷新标记位。其中,标记位可以理解为上述的标识符,用于指示是否开启分库分表。比如,如果为ture,则开启分库分表,如果为false,则不使用分库分表。假设,图4中业务系统初始化时,默认使用数据库DB1,如果数据库DB1的数据量小于阈值,不需要开启分库分表,可直接访问DB1,如果某时刻数据库DB1的数据量大于设定值,确定需要再启用新的数据,比如启用了DB2和DB3,则需要启用分库分表,那么可以通过分库分表中间件访问数据库DB1、DB2和DB3。
根据配置的数据库信息和分片规则,分库分表中间件可以对业务系统发起的结构化查询语言(Structured Query Language,SQL)操作,进行SQL解析、优化、路由、改写、执行,归并得到的结果返回给业务系统。
为了实现上述实施例,本申请实施例还提出一种数据处理装置。该装置可应用于业务系统。图6为本申请实施例提供的一种数据处理装置的结构示意图。
如图6所示,该数据处理装置600包括:
第一获取模块610,用于获取判别装置发送的分库分表信息,其中,所述分库分表信息用于表征所述业务系统是否开启分库分表;
数据操作模块620,用于根据所述分库分表信息,对所述启用的数据库进行数据操作。
在本申请实施例一种可能的实现方式中,数据操作模块620,用于:
响应于分库分表信息为第一标识符,通过分库分表中间件,根据数据库配置文件对所述启用的数据库中的目标数据库进行数据操作;
响应于分库分表信息为第二标识符,直接对启用的数据库进行数据操作。
在本申请实施例一种可能的实现方式中,数据操作模块620,用于:
通过分库分表中间件,获取多个数据库的信息、每个数据库上每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则;根据每个数据库的信息、每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则,生成所述数据库配置文件。
在本申请实施例一种可能的实现方式中,第一获取模块610,还用于:
获取多个数据库的信息、每个数据库上每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则;
该装置还可包括:生成模块,用于根据每个数据库的信息、每张数据表的信息、每个数据库对应的分片规则及每张数据表对应的分片规则,生成数据库配置文件。
需要说明的是,上述对数据处理方法实施例的解释说明,也适用于该实施例的数据处理装置,故在此不再赘述。
本申请实施例中,通过获取判别装置提供的分库分表信息,根据分库分表信息,对业务系统对应的数据库进行数据操作。由此,实现了根据数据库信息动态开启分库分表,从而在业务系统运行期间,可以保持数据操作的高效率。
为了实现上述实施例,本申请实施例还提出一种数据处理装置。该装置可应用于判别装置。图7为本申请实施例提供的另一种数据处理装置的结构示意图。
如图7所示,该数据处理装置700包括:
第二获取模块710,用于获取数据库信息,其中,所述数据库信息是与业务系统启用的数据库相关的信息;
确定模块720,用于根据所述数据库信息,确定所述业务系统对应的分库分表信息,其中,所述分库分表信息用于表征所述业务系统是否开启分库分表;
发送模块730,用于将分库分表信息提供给业务系统。
在本申请实施例一种可能的实现方式中,确定模块720,用于:
在数据库信息满足预设条件的情况下,确定分库分表信息为第一标识符;
在数据库信息未满足预设条件的情况下,确定分库分表信息为第二标识符。
在本申请实施例一种可能的实现方式中,所述数据库信息包括以下至少一项:所述启用的数据库的数量;所述启用的数据库的总数据量;数据操作响应时间。
在本申请实施例一种可能的实现方式中,确定模块720,用于:
在所述启用的数据库的数量大于预设数量的情况下,确定所述分库分表信息为所述第一标识符;或者,
在所述启用的数据库的数据为所述预设数量且所述总数据量大于第二阈值的情况下,确定所述分库分表信息为所述第一标识符;或者,
在所述启用的数据库的数量为所述预设数量且所述响应时间大于第三阈值的情况下,确定所述分库分表信息为所述第一标识符。
在本申请实施例一种可能的实现方式中,该装置还可以包括:
生成模块,用于在所述启用的数据库的数量大于预设数量且所述总数据量大于第四阈值的情况下,生成增加数据库的提示信息。
需要说明的是,上述对数据处理方法实施例的解释说明,也适用于该实施例的数据处理装置,故在此不再赘述。
本申请实施例中,通过获取数据库信息;根据数据库信息,确定分库分表信息,其中,分库分表信息用于表征业务系统是否开启分库分表;将分库分表信息提供给业务系统。由此,通过根据数据库信息动态确定是否开启分库分表方案,并提供给业务系统,可以避免在业务系统运行前期数据规模不大的场景下使用分库分表造成的性能影响,在数据规模达到开启条件后,开启分库分表可以提升大数据量下的数据操作效率,从而在业务系统运行期间,可以保持数据操作的高效率。
为了实现上述实施例,本申请实施例还提出一种计算机设备,包括处理器和存储器;
其中,处理器通过读取存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如上述实施例所述的数据处理方法。
为了实现上述实施例,本申请实施例还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例所述的数据处理方法。
在本说明书的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
- 数据处理系统及数据处理系统的处理方法
- 操作数据处理系统的方法、数据处理系统