数据分片分库方法、装置、计算机设备及存储介质与流程

未命名 09-12 阅读:91 评论:0
1.本技术涉及大数据
技术领域
:,尤其涉及一种数据分片分库方法、装置、计算机设备及存储介质。
背景技术
::2.数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。当前基于海量用户的海量业务数据,通常采用单数据库对海量交易数据进行保存,其中,海量业务数据是指海量企业内部的经营交易信息,主要包括联机交易数据和联机分析数据,是结构化的、通过关系数据库进行管理和访问的静态、历史数据。3.然而,发明人发现,由于海量业务数据的庞大,并且单数据库承载能力有上限,因此,将海量业务数据在单数据库中进行操作处理,将会导致单数据库因读写压力过大导致运行效率缓慢,甚至异常宕机的情况发生。技术实现要素:4.本技术提供一种数据分片分库方法、装置、计算机设备及存储介质,用以解决当前的将海量业务数据在单数据库中进行操作处理,将会导致单数据库因读写压力过大导致运行效率缓慢,甚至异常宕机的情况发生的问题。5.第一方面,本技术提供一种数据分片分库方法,包括:6.接收业务数据,对所述业务数据进行分片处理得到至少一个逻辑分片,根据所述逻辑分片中的要素字符串确定所述逻辑分片的逻辑分片号;其中,所述业务数据是用于输入到数据集群的数据信息,所述要素字符串用于描述逻辑分片中的子数据的属性特征,所述要素字符串由至少一个业务要素或至少一个业务时间构成,所述业务要素是用于描述所述子数据的元数据,所述业务时间是指所述子数据的生成时间;7.拦截与所述逻辑分片对应的代理对象信息,提取所述代理对象信息中的sql语句,其中,所述代理对象信息用于对所述逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理;8.根据预置的分库分表规则得到与所述逻辑分片号对应的数据库名称和物理表名,将所述数据集群中与所述数据库名称对应的数据库设为目标数据库,并将所述sql语句中的逻辑表名修改为所述物理表名得到改写sql语句,其中,所述逻辑表名是所述sql语句中指示的数据表名,所述物理表名是所述逻辑表名在所述目标数据库中定义的数据表名;9.在所述目标数据库中执行所述改写sql语句,以在所述目标数据库中对所述逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。10.上述方案中,所述对所述业务数据进行分片处理得到至少一个逻辑分片,包括:11.识别所述业务数据中各业务要素的要素类型,将要素类型一致的至少一个业务要素汇总成一个要素集合,其中,所述要素类型表征了业务要素的类别;12.分别提取所述业务数据中与每一所述要素集合中的业务要素对应的列数据,得到与每一所述要素集合对应的逻辑分片,其中,列数据是所述业务数据中每一业务要素对应的子数据。13.上述方案中,所述对所述业务数据进行分片处理得到至少一个逻辑分片,包括:14.根据行数据的业务时间对所述业务数据中的至少一个行数据进行升序或降序排列,得到业务序列,其中,所述行数据是所述业务数据中在不同时间生成的子数据;15.根据位于所述业务序列的首位的业务时间,和位于所述业务序列的末位的业务时间,得到业务数据的时间跨度信息;16.根据预置的分片数量对所述时间跨度信息进行切分,得到相应于所述分片数量的时间段;17.从获取每一所述行数据的业务时间,并汇总属于同一时间段的业务时间得到至少一个时间集合;18.分别提取所述业务数据中与每一所述时间集合中业务时间对应的行数据,得到与每一所述时间集合对应的逻辑分片。19.上述方案中,所述根据所述逻辑分片中的要素字符串确定所述逻辑分片的逻辑分片号,包括:20.提取所述逻辑分片中的至少一个业务要素,拼接至少一个所述业务要素得到要素字符串;或提取所述逻辑分片中的至少一个业务时间,拼接至少一个所述业务时间得到要素字符串;21.根据预置的分片拆分规则对所述要素字符串进行运算,得到库分片号和表分片号,拼接所述库分片号和所述表分片号得到逻辑分片号;或22.根据预置的哈希算法对所述要素字符串进行运算得到哈希值,根据预置的库表运算规则对所述哈希值进行运算,得到库分片号和表分片号,拼接所述库分片号和所述表分片号得到逻辑分片号。23.上述方案中,所述拦截与所述逻辑分片对应的代理对象信息,包括:24.若监听到映射接口被调用,则拦截所述映射接口中接收到的代理对象信息并提取所述代理对象信息中的代理分片号,其中,所述映射接口是用于根据代理对象信息将与所述代理对象信息对应的业务数据进行处理的计算机接口;25.将代理分片号与逻辑分片的逻辑分片号一致的代理对象信息,设为与所述逻辑分片对应的代理对象信息。26.上述方案中,所述根据预置的分库分表规则得到与所述逻辑分片号对应的数据库名称和物理表名,包括:27.提取所述逻辑分片号中的库分片号,从所述分库分表规则中获得与所述库分片号匹配的数据库名称;28.提取所述逻辑分片号中的表分片号,从所述分库分表规则中与所述数据库名称对应的至少一个物理表名中,获得与所述表分片号对应的物理表名。29.上述方案中,所述将所述数据集群中与所述数据库名称对应的数据库设为目标数据库,包括:30.获取所述数据集群中的数据清单,所述数据清单中记载有至少一个数据库的源名称;31.遍历所述数据清单,并将源名称与所述数据库名称一致的数据库设为目标数据库;32.创建与所述目标数据库之间的通信连接,所述通信连接是用于访问所述目标数据库的通信线路。33.上述方案中,所述将所述sql语句中的逻辑表名修改为所述物理表名得到改写sql语句,包括:34.对所述sql语句进行解析得到具有至少一个指令词汇的抽象语法树,其中,所述解析是指对所述sql语句进行语法分析和/或语义分析得到语句逻辑,并根据所述语句逻辑对所述sql语句进行拆解,得到至少一个具有具体含义的指令的计算机规则;35.识别所述抽象语法树中的逻辑表名,并将所述逻辑表名修改为所述物理表名,根据具有所述物理表名的抽象语法树生成改写sql语句。36.上述方案中,所述识别所述抽象语法树中的逻辑表名,并将所述逻辑表名修改为所述物理表名,根据具有所述物理表名的抽象语法树生成改写sql语句,包括:37.通过预置的表名正则识别所述抽象语法树中每一节点,得到记载有逻辑表名的节点,其中,表名正则中具有表征逻辑表名的关键词;38.将所述逻辑表名修改为物理表名得到具有物理表名的抽象语法树,根据抽象语法树的语法逻辑,将具有物理表名的抽象语法树转为改写sql语句。39.上述方案中,所述接收业务数据之前,所述方法还包括:40.获取至少一个数据库,对每一所述数据库进行命名得到至少一个源名称;41.创建数据中心服务器,将至少一个所述数据库分别与所述数据中心服务器连接得到数据集群;42.汇总每一所述数据库的源名称形成数据清单,将所述数据清单录入所述数据中心服务器的配置文件中。43.上述方案中,所述将所述数据清单录入所述数据中心服务器的配置文件中之后,所述方法还包括:44.获取配置文件,所述配置文件中记载了至少一个所述数据库名称,以及对各所述数据库名称对应的数据库分配逻辑分片的规则信息;45.对所述配置文件进行解析得到分库分表规则,所述分库分表规则是所述规则信息的可执行文件。46.第二方面,本技术提供一种数据分片分库装置,包括:47.数据分片模块,用于接收业务数据,对所述业务数据进行分片处理得到至少一个逻辑分片,根据所述逻辑分片中的要素字符串确定所述逻辑分片的逻辑分片号;其中,所述业务数据是用于输入到数据集群的数据信息,所述业务要素用于表征所述逻辑分片的属性特征;48.输入拦截模块,用于拦截与所述逻辑分片对应的代理对象信息,提取所述代理对象信息中的sql语句,其中,所述代理对象信息用于对所述逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理;49.分库分表模块,用于根据预置的分库分表规则得到与所述逻辑分片号对应的数据库名称和物理表名,将所述数据集群中与所述数据库名称对应的数据库设为目标数据库,并将所述sql语句中的逻辑表名修改为所述物理表名得到改写sql语句,其中,所述逻辑表名是所述sql语句中指示的数据表名,所述物理表名是所述逻辑表名在所述目标数据库中定义的数据表名;50.语句执行模块,用于在所述目标数据库中执行所述改写sql语句,以在所述目标数据库中对所述逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。51.第三方面,本技术提供一种计算机设备,包括:处理器,以及与所述处理器通信连接的存储器;52.所述存储器存储计算机执行指令;53.所述处理器执行所述存储器存储的计算机执行指令,以实现上述的方法。54.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述的方法。55.第五方面,本技术提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述的方法。56.本技术提供的一种数据分片分库方法、装置、计算机设备及存储介质,通过对业务数据进行分片处理,实现通过切分业务数据实现降低业务数据大小,并得到逻辑分片的效果;通过确定每一逻辑分片的逻辑分片号,以便于将每一逻辑分片保存在相应的数据库和数据表之中,为实现对数据进行分布式存储提供了基础。57.通过拦截与所述逻辑分片对应的代理对象信息,以便于在数据库中执行新增处理、和/或删除处理、和/或修改处理、和/或查询处理的操作。58.通过将所述数据集群中与所述数据库名称对应的数据库设为目标数据库,锁定应当保存该逻辑分片的数据库;通过将所述sql语句中的逻辑表名修改为所述物理表名得到改写sql语句,以准确获得sql语句进行数据处理的物理表,即所述数据表,同时,通过在sql语句中设置逻辑表名,以便于客户端按照其使用习惯和使用逻辑生成sql语句,为客户度提供了便利。59.通过在所述目标数据库中执行所述改写sql语句,以在所述目标数据库中对所述逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理,实现了采用多个数据库处理海量业务数据的效果,降低了每一数据库的读写压力,消除了数据库运行效率缓慢的风险,避免了数据库出现异常宕机的情况发生。60.同时,当需要在数据集群中进行扩容时,仅需通过对分库分表规则中逻辑分片号与数据库名称和物理表名之间的对应关系进行修改,使分库分表规则中部分逻辑分片号与数据集群中新增的数据库之间构建映射关系,即可将数据集群中原数据库中的部分逻辑分片号对应的业务数据迁移至新增的数据库,极大的降低了数据集群扩容时的数据迁移量,为数据集群扩容提供了极大的便利。附图说明61.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。62.图1为本技术一种数据分片分库方法的应用场景示意图;63.图2为本技术一种数据分片分库方法的实施例1的流程图;64.图3为本技术一种数据分片分库方法的实施例2的流程图;65.图4为本技术一种数据分片分库装置的实施例3的结构示意图;66.图5为本发明计算机设备中计算机设备的硬件结构示意图。67.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。具体实施方式68.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。69.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。70.需要说明的是,本技术一种数据分片分库方法、装置、计算机设备及存储介质可用于大数据
技术领域
:,也可用于除大数据
技术领域
:之外的任意领域,本技术数据分片分库方法、装置、计算机设备及存储介质的应用领域不做限定。71.请参阅图1,本技术的具体应用场景是:72.运行有一种数据分片分库方法的服务器11,数据集群12连接,数据集群12中具有至少一个数据库121,服务器11接收业务数据,对业务数据进行分片处理得到至少一个逻辑分片,根据逻辑分片中的要素字符串确定逻辑分片的逻辑分片号;73.服务器11拦截与逻辑分片对应的代理对象信息,提取代理对象信息中的sql语句,其中,代理对象信息用于对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理;74.服务器11根据预置的分库分表规则得到与逻辑分片号对应的数据库名称和物理表名,将数据集群12中与数据库名称对应的数据库121设为目标数据库122,并将sql语句中的逻辑表名修改为物理表名得到改写sql语句;75.服务器11在目标数据库122中执行改写sql语句,以在目标数据库122中对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。76.本技术提供的数据分片分库方法,通过在理财机构联盟内,客户只要完成一次风险测评,整个联盟链即可共享该客户的风险测评信息。而且应用大数据的技术,保证了客户风险测评具有不可篡改的特性,保证了信息的准确性,提高了风险控制的效率。由于采用加密技术,客户信息不易泄露和破解。旨在解决现有技术的如上技术问题。77.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。78.实施例1:79.请参阅图2,本技术提供一种数据分片分库方法,包括:80.s201:接收业务数据,对业务数据进行分片处理得到至少一个逻辑分片,根据逻辑分片中的要素字符串确定逻辑分片的逻辑分片号;其中,业务数据是用于输入到数据集群的数据信息,要素字符串用于描述逻辑分片中的子数据的属性特征,要素字符串由至少一个业务要素或至少一个业务时间构成,业务要素是用于描述子数据的元数据,业务时间是指子数据的生成时间。81.本步骤中,通过对业务数据进行分片处理,以通过切分业务数据实现降低业务数据大小,并得到逻辑分片的效果;通过确定每一逻辑分片的逻辑分片号,以便于将每一逻辑分片保存在相应的数据库和数据表之中,为实现对数据进行分布式存储提供了基础。82.在一个优选的实施例中,对业务数据进行分片处理得到至少一个逻辑分片,包括:83.识别业务数据中各业务要素的要素类型,将要素类型一致的至少一个业务要素汇总成一个要素集合,其中,要素类型表征了业务要素的类别;84.分别提取业务数据中与每一要素集合中的业务要素对应的列数据,得到与每一要素集合对应的逻辑分片,其中,列数据是业务数据中每一业务要素对应的子数据。85.示例性地,业务要素是描述业务数据中每一子数据的元数据,要素类型是业务要素的元数据,例如:要素类型包括:用户基本信息,用户交易信息,用户关系信息;业务要素包括:姓名、性别、年龄;股票交易、债券交易、存款交易;投资企业、任职公司;那么,姓名、性别、年龄的要素类型为用户基本信息,股票交易、债券交易、存款交易的要素类型为用户交易信息,投资企业、任职公司的要素类型为用户关系信息。因此,提取业务数据中用户基本信息下的姓名、性别、年龄的列数据为一个逻辑分片,提取业务数据中用户基本信息下的股票交易、债券交易、存款交易的列数据为另一个逻辑分片,提取业务数据中用户基本信息下的投资企业、任职公司的列数据为再一个逻辑分片。86.可选的,业务要素还可为业务数据中各元数据的编号,例如:id1,id2,id3,id4;还可根据预置的计算规则确定各业务要素是否属于同一要素类型,例如:计算规则为id%2,那么,业务要素id1和id3是同一个要素类型,id2和id4是同一个要素类型,进而,业务数据中id1和id3对应的数据将被拆分成一个逻辑分片,业务数据中id2和id4对应的数据将被拆分成一个逻辑分片。在一个优选的实施例中,对业务数据进行分片处理得到至少一个逻辑分片,包括:87.根据行数据的业务时间对业务数据中的至少一个行数据进行升序或降序排列,得到业务序列,其中,行数据是业务数据中在不同时间生成的子数据;88.根据位于业务序列的首位的业务时间,和位于业务序列的末位的业务时间,得到业务数据的时间跨度信息;89.根据预置的分片数量对时间跨度信息进行切分,得到相应于分片数量的时间段;90.从获取每一行数据的业务时间,并汇总属于同一时间段的业务时间得到至少一个时间集合;91.分别提取业务数据中与每一时间集合中业务时间对应的行数据,得到与每一时间集合对应的逻辑分片。92.示例性地,假设业务数据中的行数据包括:行数据1-9:00,行数据2-10:30,行数据3-11:20,行数据4-12:40,行数据5-13:10,行数据6-14:50,行数据7-15:30,行数据8-16:10,行数据9-17:00,行数据10-18:00。因此,得到的时间跨度信息为9小时。如果分片数量为3,那么将获得以下时间段:【9:00,12:00】,【12:01,15:00】,【15:01,18:00】;因此,将行数据1-9:00,行数据2-10:30,行数据3-11:20一个逻辑分片,将行数据4-12:40,行数据5-13:10,行数据6-14:50设为另一个逻辑分片,行数据7-15:30,行数据8-16:10,行数据9-17:00,行数据10-18:00设为再一个逻辑分片。93.在一个优选的实施例中,根据逻辑分片中的要素字符串确定逻辑分片的逻辑分片号,包括:94.提取逻辑分片中的至少一个业务要素,拼接至少一个业务要素得到要素字符串;或提取逻辑分片中的至少一个业务时间,拼接至少一个业务时间得到要素字符串;95.根据预置的分片拆分规则对要素字符串进行运算,得到库分片号和表分片号,拼接库分片号和表分片号得到逻辑分片号;或96.根据预置的哈希算法对要素字符串进行运算得到哈希值,根据预置的库表运算规则对哈希值进行运算,得到库分片号和表分片号,拼接库分片号和表分片号得到逻辑分片号。97.示例性地,如果一个逻辑分片是根据提取不同的业务要素所获得的,例如:逻辑分片1中的业务要素包括:姓名、性别和年龄;将姓名、性别和年龄进行拼接得到要素字符串姓名性别年龄对应的二进制值,或者与姓名性别年龄对应的编码,例如:101102103。98.如果一个逻辑分片是根据提取不同的业务时间所获得的,例如:逻辑分片2中的业务时间包括:9:00,10:30和11:20,那么,将9:00,10:30和11:20进行拼接得到要素字符串090010301120。99.分片拆分规则包括库规则和表规则。100.库规则包括:将要素字符串中的每一数字相加得到库总和,以库数值为被除数对库总和进行取余运算得到库余数,将库余数作为库分片号;库数值可设置为任一正整数。101.表规则包括:将要素字符串中的每一数字相加得到表总和,以表数值为被除数对表总和进行取余运算得到表余数,将表余数作为表分片号;表数值可设置为任一正整数。102.例如:根据分片拆分规则得到的库分片号为1,表分片号为3,则得到逻辑分片号1-3,其表征将逻辑分片保存至数据库1的数据表3中。103.通过哈希算法对姓名性别年龄对应的二进制值,或者与姓名性别年龄对应的编码进行哈希运算得到哈希值。哈希算法是将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。104.库表运算规则包括库规则和表规则。105.库规则包括:以库数值为被除数对哈希值进行取余运算得到库余数,将库余数作为库分片号;库数值可设置为任一正整数。106.表规则包括:以表数值为被除数对哈希值进行取余运算得到表余数,将表余数作为表分片号;表数值可设置为任一正整数。107.s202:拦截与逻辑分片对应的代理对象信息,提取代理对象信息中的sql语句,其中,代理对象信息用于对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。108.本步骤中,代理对象信息中记载了对逻辑分片进行处理的方法,如:sql语句,进而,实现在数据库中对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。109.通过mapper接口拦截与逻辑分片对应的代理对象信息,mapper接口是使用jdk动态代理生成的一个代理类,其内部设置有映射文件,以便于在数据库中执行新增处理、和/或删除处理、和/或修改处理、和/或查询处理的操作。110.在一个优选的实施例中,拦截与逻辑分片对应的代理对象信息,包括:111.若监听到映射接口被调用,则拦截映射接口中接收到的代理对象信息并提取代理对象信息中的代理分片号,其中,映射接口是用于根据代理对象信息将与代理对象信息对应的业务数据进行处理的计算机接口;112.将代理分片号与逻辑分片的逻辑分片号一致的代理对象信息,设为与逻辑分片对应的代理对象信息。113.示例性地,采用mapper接口作为映射接口,该接口被调用时用于在数据库中进行操作处理,然而,当前无法获知该代理对象信息对哪一逻辑分片对应,因此,通过拦截映射接口中接收到的代理对象信息并提取代理对象信息中的代理分片号的方式,实现确定逻辑分片和操作处理之间的对应关系的效果。114.s203:根据预置的分库分表规则得到与逻辑分片号对应的数据库名称和物理表名,将数据集群中与数据库名称对应的数据库设为目标数据库,并将sql语句中的逻辑表名修改为物理表名得到改写sql语句,其中,逻辑表名是sql语句中指示的数据表名,物理表名是逻辑表名在目标数据库中定义的数据表名。115.本步骤中,逻辑表名是sql语句中指示的数据表名,物理表名是逻辑表名在目标数据库中定义的数据表名。116.分库分表规则中记载有逻辑分片号与数据库名称和物理表名称之间的映射关系,通过根据预置的分库分表规则得到与逻辑分片号对应的数据库名称和物理表名。117.通过将数据集群中与数据库名称对应的数据库设为目标数据库,锁定应当保存该逻辑分片的数据库;通过将sql语句中的逻辑表名修改为物理表名得到改写sql语句,以准确获得sql语句进行数据处理的物理表,即数据表。同时,通过在sql语句中设置逻辑表名,以便于客户端按照其使用习惯和使用逻辑生成sql语句,为客户度提供了便利。118.逻辑表名是sql语句中指示的数据表名,例如:逻辑表名表征一个虚拟的逻辑表,逻辑表可以理解为数据中的视图,是一张虚拟表。可以映射到一张物理表,也可以由多张物理表组成,这些物理表可以来自不同数据库。逻辑表示具有相同逻辑和数据表结构表的总和。例如:t_order拆分为t_order_0....t_order_9等10张表。此时数据库中已经不存在t_order这张表了,但是我们代码中写的sql还是按照t_order来写,此时t_order就是这些拆分表的逻辑表。119.物理表名是逻辑表名在目标数据库中定义的数据表名,例如:物理表名表征一个真实的物理表,物理表是具体某个数据库中真实存在的表。例如上面提到的t_order_0....t_order_9。物理表名还可以是物理表的存放路径。120.在一个优选的实施例中,根据预置的分库分表规则得到与逻辑分片号对应的数据库名称和物理表名,包括:121.提取逻辑分片号中的库分片号,从分库分表规则中获得与库分片号匹配的数据库名称;122.提取逻辑分片号中的表分片号,从分库分表规则中与数据库名称对应的至少一个物理表名中,获得与表分片号对应的物理表名。123.通过依次获得与库分片号匹配的数据库名称,及在该数据库名称下获得与表分片号对应的物理表名,极大的提高了物理表的获取效率。124.在一个优选的实施例中,将数据集群中与数据库名称对应的数据库设为目标数据库,包括:125.获取数据集群中的数据清单,数据清单中记载有至少一个数据库的源名称;126.遍历数据清单,并将源名称与数据库名称一致的数据库设为目标数据库;127.创建与目标数据库之间的通信连接,通信连接是用于访问目标数据库的通信线路。128.通过与目标数据库之间构建通信线路,以实现访问目标数据库的效果。129.在一个优选的实施例中,将sql语句中的逻辑表名修改为物理表名得到改写sql语句,包括:130.对sql语句进行解析得到具有至少一个指令词汇的抽象语法树,其中,解析是指对sql语句进行语法分析和/或语义分析得到语句逻辑,并根据语句逻辑对sql语句进行拆解,得到至少一个具有具体含义的指令的计算机规则;131.识别抽象语法树中的逻辑表名,并将逻辑表名修改为物理表名,根据具有物理表名的抽象语法树生成改写sql语句。132.示例性地,对sql语句进行语法分析和/或语义分析得到具有至少一个指令词汇的抽象语法树(abstractsyntaxtree,ast),抽象语法树是sql语句的抽象语法结构的树状表示,树上的每个节点都记载有sql语句中的一个指令词汇,抽象语法树整体表征了sql语句的语句逻辑。133.识别抽象语法树中记载逻辑表名的节点,并将该节点中的逻辑表名转为物理表名,得到具有物理表名的抽象语法树,根据按照抽象语法树的语法逻辑,对抽象语法树中的各节点进行还原,形成改写sql语句。134.进一步地,识别抽象语法树中的逻辑表名,并将逻辑表名修改为物理表名,根据具有物理表名的抽象语法树生成改写sql语句,包括:135.通过预置的表名正则识别抽象语法树中每一节点,得到记载有逻辑表名的节点,其中,表名正则中具有表征逻辑表名的关键词;136.将逻辑表名修改为物理表名得到具有物理表名的抽象语法树,根据抽象语法树的语法逻辑,将具有物理表名的抽象语法树转为改写sql语句。137.示例性地,表名正则中的关键词是可包括:order,db,数据,数据库等,通过表名正则识别抽象语法树中记载有逻辑表名的节点。138.逻辑物理映射表中记载了逻辑表名和物理表名之间的映射关系,根据逻辑物理映射表将抽象语法树中记载有逻辑表名的节点中的逻辑表名修改为物理表名,得到作为改写清单的抽象语法树。139.进一步地,当前的数据集群在通过新增数据库,实现扩容时,需要将构建新的映射规则,将原数据集群中的所有数据库中的数据进行打乱和重新拆分,得到新的分片,并将新的分片保存至新的数据集群中的所有的数据库中,例如:原来数据集群中有3个数据库,采用id%3的规则对数据进行拆分,并将拆分得到的分片分别保存在3个数据库中。一旦数据集群扩容至4个,则需要将id%3的规则改为id%4,那么就需要将原数据集群中所有数据重新按照id%4的规则进行分片,再将得到的分片分别保存在4个数据库中。140.本技术则是在当需要在数据集群中进行扩容时,仅需通过对分库分表规则中逻辑分片号与数据库名称和物理表名之间的对应关系进行修改,使分库分表规则中部分逻辑分片号与数据集群中新增的数据库之间构建映射关系,即可将数据集群中原数据库中的部分逻辑分片号对应的业务数据迁移至新增的数据库,极大的降低了数据集群扩容时的数据迁移量,为数据集群扩容提供了极大的便利。例如:原数据集群包括:数据库1,数据库2,数据库3;通过调整分库分表规则中的映射规则,使得将逻辑分片号为数据库1-表3,数据库2-表1,数据库3-表2,迁移至新增的数据库4,那么,数据集群仅需将数据库1-表3,数据库2-表1,数据库3-表2迁移至数据库4,而无需迁移其他的数据,进而极大的降低了数据迁移量。141.s204:在目标数据库中执行改写sql语句,以在目标数据库中对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。142.本步骤中,通过在目标数据库中执行改写sql语句,以在目标数据库中对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理,实现了采用多个数据库处理海量业务数据的效果,降低了每一数据库的读写压力,消除了数据库运行效率缓慢的风险,避免了数据库出现异常宕机的情况发生。143.并且,本技术通过将数据表拆分为逻辑分片,然后将逻辑分片存放到多个不同的数据库,可以有效的缓解单个数据库或单个表的读写压力,提升单元内承载用户和数据的能力。每个单元承载数据的能力提升,整个系统的单元规模就会相应减少。144.同时,一旦某一数据库内的数据达到存储上限时,则需要接入一个新的数据库时,可通过修改分库分表规则中的逻辑分片号及其对应的数据库名称和物理表名,将新的数据库纳入到分库分表规则的管理之中,极大的降低了数据集群的扩容难度。145.单数据库对海量业务数据进行保存还将导致若要从存储海量业务数据的多个数据库获取需要的数据,只能采用遍历多个数据库内数据的方式进行查询,极大的降低了数据查询效率。相比于单数据库对海量业务数据进行保存的方式,本技术可通过分库分表规则得到查询请求对应的业务数据的逻辑分片所在的数据库,并从各数据库中获取逻辑分片并整合,得到与该查询请求对应的业务数据,因此,极大的提高了数据查询效率。146.可选的,在目标数据库中执行改写sql语句包括:147.检查改写sql语句拼写是否正确,如果不正确,目标数据库会报语法错误。148.检查改写sql语句中的访问对象是否存在。比如我们在写select语句的时候,列名写错了,系统就会提示错误。语法检查和语义检查的作用是保证改写sql语句没有错误。149.看用户是否具备访问该数据的权限。150.共享池(sharedpool)是一块内存池,最主要的作用是缓存改写sql语句和该语句的执行计划。目标数据库通过检查共享池是否存在改写sql语句的执行计划,来判断进行软解析,还是硬解析。在共享池中,目标数据库首先对改写sql语句进行hash运算,然后根据hash值在库缓存(librarycache)中查找,如果存在改写sql语句的执行计划,就直接拿来执行,直接进入“执行器”的环节,这就是软解析。如果没有找到改写sql语句和执行计划,目标数据库就需要创建解析树进行解析,生成执行计划,进入“优化器”这个步骤,这就是硬解析。优化器中就是要进行硬解析,也就是决定怎么做,比如创建解析树,生成执行计划。当有了解析树和执行计划之后,执行器将根据执行计划执行解析数,以实现在目标数据库中执行改写sql语句的效果。151.具体地,在目标数据库中执行改写sql语句,包括:152.将逻辑分片输入至目标数据库;153.调用预置的持久层框架在目标数据库执行改写sql语句,以在目标数据库中对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。154.示例性地,采用mybatis作为持久层框架,mybatis是一款优秀的持久层框架,它支持自定义sql、存储过程以及高级映射。mybatis免除了几乎所有的jdbc代码以及设置参数和获取结果集的工作。mybatis可以通过简单的xml或注解来配置和映射原始类型、接口和javapojo(plainoldjavaobjects,普通老式java对象)为数据库中的记录。因此155.实施例2:156.请参阅图3,本技术提供一种数据分片分库方法,包括:157.s301:获取至少一个数据库,对每一数据库进行命名得到至少一个源名称;158.创建数据中心服务器,将至少一个数据库分别与数据中心服务器连接得到数据集群;159.汇总每一数据库的源名称形成数据清单,将数据清单录入数据中心服务器的配置文件中。160.本步骤中,通过预置的命名规则对每一数据库进行命名得到至少一个源名称,通过创建与每一数据库连接的数据中心服务器,数据中心服务器用于管理和控制每一数据库。161.通过根据每一数据库的源名称形成数据清单,以便于后续对各数据库进行管理和控制。通过将数据清单录入配置文件中,以便于数据中心服务器提取和调用数据清单。其中,与数据中心服务器连接的每一数据库均为分片数据库,数据库拆分之前对应用而言的逻辑数据库,数据库拆分之后是多个物理数据库的集合。162.s302:获取配置文件,配置文件中记载了至少一个数据库名称,以及对各数据库名称对应的数据库分配逻辑分片的规则信息;163.对配置文件进行解析得到分库分表规则,分库分表规则是规则信息的可执行文件。164.本步骤中,配置文件(英语:configurationfile)是一种计算机文件,可以为一些计算机程序配置参数和初始设置。165.优选地,配置文件为sdk,(软件开发工具包,softwaredevelopmentkit)是为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。通过运行配置文件实现将配置文件中的分库分表规则安装在运行有数据分片分库方法的服务器中,并使分库分表规则能够在该服务器中运行并成为可执行文件。166.可选地,对配置文件进行解析得到分库分表规则包括:实例化loader,loader是configfileapplicationlistener的一个内部类,看一下loader对象实例化的过程:在实例化loader对象的过程中,再次通过spi扩展的方式加载了两个属性文件加载器,其中的yamlpropertysourceloader就和后面的yml文件的加载、解析密切关联,而另一个propertiespropertysourceloader则负责properties文件的加载。创建完loader实例后,接下来会调用它的load方法。在loadforfileextension方法中,首先将yml(配置文件)加载为resource文件,接下来准备正式开始,调用了之前创建好的yamlpropertysourceloader对象的load方法。在load方法中,开始准备进行配置文件的解析与数据封装:load方法中调用了origintrackedymlloader对象的load方法,调用origintrackingconstructor对象的getdata接口,来解析yml(配置文件)并封装成对象。在解析yml的过程中实际使用了composer构建器来生成节点,在它的getnode方法中,通过解析器事件来创建节点。通常来说,它会将yml中的一组数据封装成一个mappingnode节点,它的内部实际上是由至少一个nodetuple组成的list,该mappingnode节点中的list记载有分库分表规则的内容,nodetuple和map的结构类似,由一对对应的keynode和valuenode构成。通过将mappingnode节点转为可执行文件exe,得到作为可执行文件的分库分表规则。167.于本实施例中,可使用py2exe、cx_freeze或pyinstaller生成可执行文件,可执行文件(executablefile)指的是可以由操作系统进行加载执行的文件。168.s303:接收业务数据,对业务数据进行分片处理得到至少一个逻辑分片,根据逻辑分片中的要素字符串确定逻辑分片的逻辑分片号;其中,业务数据是用于输入到数据集群的数据信息,要素字符串用于描述逻辑分片中的子数据的属性特征,要素字符串由至少一个业务要素或至少一个业务时间构成,业务要素是用于描述子数据的元数据,业务时间是指子数据的生成时间。169.本步骤与实施例1中的s201一致,故在此不做赘述。170.s304:拦截与逻辑分片对应的代理对象信息,提取代理对象信息中的sql语句,其中,代理对象信息用于对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。171.本步骤与实施例1中的s202一致,故在此不做赘述。172.s305:根据预置的分库分表规则得到与逻辑分片号对应的数据库名称和物理表名,将数据集群中与数据库名称对应的数据库设为目标数据库,并将sql语句中的逻辑表名修改为物理表名得到改写sql语句,其中,逻辑表名是sql语句中指示的数据表名,物理表名是逻辑表名在目标数据库中定义的数据表名。173.本步骤与实施例1中的s203一致,故在此不做赘述。174.s306:在目标数据库中执行改写sql语句,以在目标数据库中对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。175.本步骤与实施例1中的s204一致,故在此不做赘述。176.实施例3:177.请参阅图4,本技术提供一种数据分片分库装置4,包括:178.数据分片模块43,用于接收业务数据,对业务数据进行分片处理得到至少一个逻辑分片,根据逻辑分片中的要素字符串确定逻辑分片的逻辑分片号;其中,业务数据是用于输入到数据集群的数据信息,业务要素用于表征逻辑分片的属性特征;179.输入拦截模块44,用于拦截与逻辑分片对应的代理对象信息,提取代理对象信息中的sql语句,其中,代理对象信息用于对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理;180.分库分表模块45,用于根据预置的分库分表规则得到与逻辑分片号对应的数据库名称和物理表名,将数据集群中与数据库名称对应的数据库设为目标数据库,并将sql语句中的逻辑表名修改为物理表名得到改写sql语句,其中,逻辑表名是sql语句中指示的数据表名,物理表名是逻辑表名在目标数据库中定义的数据表名;181.语句执行模块46,用于在目标数据库中执行改写sql语句,以在目标数据库中对逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。182.可选的,数据分片分库装置4,包括:183.创建模块41,用于获取至少一个数据库,对每一数据库进行命名得到至少一个源名称;创建数据中心服务器,将至少一个数据库分别与数据中心服务器连接得到数据集群;汇总每一数据库的源名称形成数据清单,将数据清单录入数据中心服务器的配置文件中。184.配置模块42,用于获取配置文件,配置文件中记载了至少一个数据库名称,以及对各数据库名称对应的数据库分配逻辑分片的规则信息;对配置文件进行解析得到分库分表规则,分库分表规则是规则信息的可执行文件。185.实施例4:186.图5是根据一示例性实施例示出的一种计算机设备的框图,该计算机设备5可以是信息管理系统1中的控制电路,该控制电路是指信息管理系统中的一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行数据分片分库方法。187.具体地,计算机设备5,包括:处理器52以及与处理器52通信连接的存储器51;存储器存储计算机执行指令;188.处理器执行存储器51存储的计算机执行指令,以实现上述的数据分片分库方法,其中,数据分片分库装置的组成部分可分散于不同的计算机设备中,计算机设备5可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个应用服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器51、处理器52,如图5所示。需要指出的是,图5仅示出了具有组件-的计算机设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。本实施例中,存储器51(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器51可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,存储器51也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,存储器51还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,存储器51通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例三的数据分片分库装置的程序代码等。此外,存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。处理器52在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制计算机设备的总体操作。本实施例中,处理器52用于运行存储器51中存储的程序代码或者处理数据,例如运行数据分片分库装置,以实现上述实施例的数据分片分库方法。189.上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本技术各个实施例方法的部分步骤。应理解,上述处理器可以是中央处理单元(centralprocessingunit,简称cpu),还可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。190.为实现上述目的,本技术还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机执行指令,程序被处理器52执行时实现相应功能。本实施例的计算机可读存储介质用于存储实现数据分片分库方法的计算机执行指令,被处理器52执行时实现上述实施例的数据分片分库方法。191.上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。192.一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(applicationspecificintegratedcircuits,简称asic)中。当然,处理器和存储介质也可以作为分立组件存在于计算机设备或主控设备中。193.本技术提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述的数据分片分库方法。194.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。195.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。196.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。当前第1页12当前第1页12
技术特征:
1.一种数据分片分库方法,其特征在于,包括:接收业务数据,对所述业务数据进行分片处理得到至少一个逻辑分片,根据所述逻辑分片中的要素字符串确定所述逻辑分片的逻辑分片号;其中,所述业务数据是用于输入到数据集群的数据信息,所述要素字符串用于描述逻辑分片中的子数据的属性特征,所述要素字符串由至少一个业务要素或至少一个业务时间构成,所述业务要素是用于描述所述子数据的元数据,所述业务时间是指所述子数据的生成时间;拦截与所述逻辑分片对应的代理对象信息,提取所述代理对象信息中的sql语句,其中,所述代理对象信息用于对所述逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理;根据预置的分库分表规则得到与所述逻辑分片号对应的数据库名称和物理表名,将所述数据集群中与所述数据库名称对应的数据库设为目标数据库,并将所述sql语句中的逻辑表名修改为所述物理表名得到改写sql语句,其中,所述逻辑表名是所述sql语句中指示的数据表名,所述物理表名是所述逻辑表名在所述目标数据库中定义的数据表名;在所述目标数据库中执行所述改写sql语句,以在所述目标数据库中对所述逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。2.根据权利要求1所述的数据分片分库方法,其特征在于,对所述业务数据进行分片处理得到至少一个逻辑分片,包括:识别所述业务数据中各业务要素的要素类型,将要素类型一致的至少一个业务要素汇总成一个要素集合,其中,所述要素类型表征了业务要素的类别;分别提取所述业务数据中与每一所述要素集合中的业务要素对应的列数据,得到与每一所述要素集合对应的逻辑分片,其中,列数据是所述业务数据中每一业务要素对应的子数据。3.根据权利要求1所述的数据分片分库方法,其特征在于,对所述业务数据进行分片处理得到至少一个逻辑分片,包括:根据行数据的业务时间对所述业务数据中的至少一个行数据进行升序或降序排列,得到业务序列,其中,所述行数据是所述业务数据中在不同时间生成的子数据;根据位于所述业务序列的首位的业务时间,和位于所述业务序列的末位的业务时间,得到业务数据的时间跨度信息;根据预置的分片数量对所述时间跨度信息进行切分,得到相应于所述分片数量的时间段;从获取每一所述行数据的业务时间,并汇总属于同一时间段的业务时间得到至少一个时间集合;分别提取所述业务数据中与每一所述时间集合中业务时间对应的行数据,得到与每一所述时间集合对应的逻辑分片。4.根据权利要求1所述的数据分片分库方法,其特征在于,根据所述逻辑分片中的要素字符串确定所述逻辑分片的逻辑分片号,包括:提取所述逻辑分片中的至少一个业务要素,拼接至少一个所述业务要素得到要素字符串;或提取所述逻辑分片中的至少一个业务时间,拼接至少一个所述业务时间得到要素字符串;
根据预置的分片拆分规则对所述要素字符串进行运算,得到库分片号和表分片号,拼接所述库分片号和所述表分片号得到逻辑分片号;或根据预置的哈希算法对所述要素字符串进行运算得到哈希值,根据预置的库表运算规则对所述哈希值进行运算,得到库分片号和表分片号,拼接所述库分片号和所述表分片号得到逻辑分片号。5.根据权利要求1所述的数据分片分库方法,其特征在于,拦截与所述逻辑分片对应的代理对象信息,包括:若监听到映射接口被调用,则拦截所述映射接口中接收到的代理对象信息并提取所述代理对象信息中的代理分片号,其中,所述映射接口是用于根据代理对象信息将与所述代理对象信息对应的业务数据进行处理的计算机接口;将代理分片号与逻辑分片的逻辑分片号一致的代理对象信息,设为与所述逻辑分片对应的代理对象信息。6.根据权利要求1所述的数据分片分库方法,其特征在于,根据预置的分库分表规则得到与所述逻辑分片号对应的数据库名称和物理表名,包括:提取所述逻辑分片号中的库分片号,从所述分库分表规则中获得与所述库分片号匹配的数据库名称;提取所述逻辑分片号中的表分片号,从所述分库分表规则中与所述数据库名称对应的至少一个物理表名中,获得与所述表分片号对应的物理表名。7.根据权利要求1所述的数据分片分库方法,其特征在于,将所述数据集群中与所述数据库名称对应的数据库设为目标数据库,包括:获取所述数据集群中的数据清单,所述数据清单中记载有至少一个数据库的源名称;遍历所述数据清单,并将源名称与所述数据库名称一致的数据库设为目标数据库;创建与所述目标数据库之间的通信连接,所述通信连接是用于访问所述目标数据库的通信线路。8.根据权利要求1所述的数据分片分库方法,其特征在于,将所述sql语句中的逻辑表名修改为所述物理表名得到改写sql语句,包括:对所述sql语句进行解析得到具有至少一个指令词汇的抽象语法树,其中,所述解析是指对所述sql语句进行语法分析和/或语义分析得到语句逻辑,并根据所述语句逻辑对所述sql语句进行拆解,得到至少一个具有具体含义的指令的计算机规则;识别所述抽象语法树中的逻辑表名,并将所述逻辑表名修改为所述物理表名,根据具有所述物理表名的抽象语法树生成改写sql语句。9.根据权利要求8所述的数据分片分库方法,其特征在于,识别所述抽象语法树中的逻辑表名,并将所述逻辑表名修改为所述物理表名,根据具有所述物理表名的抽象语法树生成改写sql语句,包括:通过预置的表名正则识别所述抽象语法树中每一节点,得到记载有逻辑表名的节点,其中,表名正则中具有表征逻辑表名的关键词;将所述逻辑表名修改为物理表名得到具有物理表名的抽象语法树,根据抽象语法树的语法逻辑,将具有物理表名的抽象语法树转为改写sql语句。10.根据权利要求1-9中任一项所述的数据分片分库方法,其特征在于,接收业务数据
之前,所述方法还包括:获取至少一个数据库,对每一所述数据库进行命名得到至少一个源名称;创建数据中心服务器,将至少一个所述数据库分别与所述数据中心服务器连接得到数据集群;汇总每一所述数据库的源名称形成数据清单,将所述数据清单录入所述数据中心服务器的配置文件中。11.根据权利要求10所述的数据分片分库方法,其特征在于,将所述数据清单录入所述数据中心服务器的配置文件中之后,所述方法还包括:获取配置文件,所述配置文件中记载了至少一个所述数据库名称,以及对各所述数据库名称对应的数据库分配逻辑分片的规则信息;对所述配置文件进行解析得到分库分表规则,所述分库分表规则是所述规则信息的可执行文件。12.一种数据分片分库装置,其特征在于,包括:数据分片模块,用于接收业务数据,对所述业务数据进行分片处理得到至少一个逻辑分片,根据所述逻辑分片中的要素字符串确定所述逻辑分片的逻辑分片号;其中,所述业务数据是用于输入到数据集群的数据信息,所述业务要素用于表征所述逻辑分片的属性特征;输入拦截模块,用于拦截与所述逻辑分片对应的代理对象信息,提取所述代理对象信息中的sql语句,其中,所述代理对象信息用于对所述逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理;分库分表模块,用于根据预置的分库分表规则得到与所述逻辑分片号对应的数据库名称和物理表名,将所述数据集群中与所述数据库名称对应的数据库设为目标数据库,并将所述sql语句中的逻辑表名修改为所述物理表名得到改写sql语句,其中,所述逻辑表名是所述sql语句中指示的数据表名,所述物理表名是所述逻辑表名在所述目标数据库中定义的数据表名;语句执行模块,用于在所述目标数据库中执行所述改写sql语句,以在所述目标数据库中对所述逻辑分片进行新增处理、和/或删除处理、和/或修改处理、和/或查询处理。13.一种计算机设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至11任一项所述的方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至11任一项所述的方法。

技术总结
本申请提供一种数据分片分库方法、装置、计算机设备及存储介质,可适用于大数据技术领域,包括:对业务数据进行分片处理得到至少一个逻辑分片,根据逻辑分片中的要素字符串确定逻辑分片的逻辑分片号;拦截与逻辑分片对应的代理对象信息,提取代理对象信息中的SQL语句;根据分库分表规则得到与逻辑分片号对应的数据库名称和物理表名,将数据集群中与数据库名称对应的数据库设为目标数据库,并将SQL语句中的逻辑表名修改为物理表名得到改写SQL语句;在目标数据库中执行改写SQL语句。本申请实现了降低每一数据库的读写压力,消除了数据库运行效率缓慢的风险,避免了数据库出现异常宕机的情况发生,并且为数据集群的扩容提供了便利。利。利。


技术研发人员:杨林 王丹 杨涛 朱伟 秦璐琪 张煌辉 王静 李小平 杨硕
受保护的技术使用者:中国银行股份有限公司
技术研发日:2023.05.30
技术公布日:2023/9/9
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐