掌桥专利:专业的专利平台
掌桥专利
首页

业务数据查询方法、装置、计算机设备和存储介质

文献发布时间:2024-01-17 01:27:33


业务数据查询方法、装置、计算机设备和存储介质

技术领域

本申请涉及金融科技技术领域,特别是涉及一种业务数据查询方法、装置、计算机设备、存储介质和计算机程序产品。

背景技术

现有分布式数据库中间件对于不同场景下的查询支持,往往采用的方法是跨片查询将数据查询语句分发到各个片中进行查询,这种方式将大量消耗中间件的线程消耗,对于目前普遍采用过量分片的设计方式设计分布式数据库往往会带来较大的查询压力,从而减低了业务数据的查询效率。

因此,目前的业务数据查询方式存在数据查询效率较低的问题。

发明内容

基于此,有必要针对上述技术问题,提供一种能够提高业务数据查询效率的业务数据查询方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。

第一方面,本申请提供了一种业务数据查询方法。所述方法包括:

拦截针对业务表的原始数据查询语句;所述原始数据查询语句用于指示从所述业务表中查询出满足查询条件的目标业务数据;

检测所述查询条件所使用的查询字段是否为分片字段;所述分片字段为对所述业务表中的分片进行数据查询所用到的字段;

在所述查询字段不为分片字段的情况下,从目标索引表中查询出与满足所述查询条件的目标分片字段;所述目标索引表用于保存分片字段与当前场景下查询字段的对照关系;

采用所述目标分片字段改写所述原始数据查询语句,得到改写后数据查询语句;所述改写后数据查询语句用于指示从目标分片中查询出满足所述查询条件的所述目标业务数据;所述目标分片为所述业务表中与所述目标分片字段匹配的分片。

在其中一个实施例中,所述采用所述目标分片字段改写所述原始数据查询语句,得到改写后数据查询语句,包括:

获取所述目标分片字段的分片字段列表;所述分片字段列表为包括至少一个分片字段值的列表;

采用所述分片字段列表构建满足预设句法的查询语句要素;

将所述查询语句要素添加至所述原始数据查询语句,得到所述改写后数据查询语句。

在其中一个实施例中,所述方法还包括:

获取所述分片字段列表中分片字段值的数目;

在所述分片字段值的数目大于预设的数据阈值的情况下,采用所述原始数据查询语句执行跨片查询操作。

在其中一个实施例中,在所述查询字段不为分片字段的情况下,在所述从目标索引表中查询出与满足所述查询条件的目标分片字段的步骤之前,所述方法还包括:

发送索引表检查请求至预设的数据库;所述索引表检查请求用于检查所述数据库是否储存有与所述查询字段对应的索引表;

在检查到所述数据库储存有与所述查询字段对应的索引表的情况下,从所述数据库中获取与所述查询字段对应的索引表,得到所述目标索引表。

在其中一个实施例中,所述方法还包括:

在检查到所述数据库未储存有与所述查询字段对应的索引表的情况下,获取跨片查询配置信息;

在所述跨片查询配置信息指示不允许跨片查询操作的情况下,返回数据查询报错信息。

在其中一个实施例中,所述检测所述查询条件所使用的查询字段是否为分片字段,包括:

通过数据查询语句解释程序,解析所述原始数据查询语句所关联的分片信息;

通过所述分片信息,检测所述查询条件所使用的查询字段是否为分片字段。

在其中一个实施例中,所述方法还包括:

在无法从目标索引表中查询出与满足所述查询条件的目标分片字段的情况下,采用所述原始数据查询语句执行跨片查询操作。

第二方面,本申请还提供了一种业务数据查询装置,所述装置包括:

拦截模块,用于拦截针对业务表的原始数据查询语句;所述原始数据查询语句用于指示从所述业务表中查询出满足查询条件的目标业务数据;

检测模块,用于检测所述查询条件所使用的查询字段是否为分片字段;所述分片字段为对所述业务表中的分片进行数据查询所用到的字段;

查询模块,用于在所述查询字段不为分片字段的情况下,从目标索引表中查询出与满足所述查询条件的目标分片字段;所述目标索引表用于保存分片字段与当前场景下查询字段的对照关系;

改写模块,用于采用所述目标分片字段改写所述原始数据查询语句,得到改写后数据查询语句;所述改写后数据查询语句用于指示从目标分片中查询出满足所述查询条件的所述目标业务数据;所述目标分片为所述业务表中与所述目标分片字段匹配的分片。

第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。

第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。

第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。

上述业务数据查询方法、装置、计算机设备、存储介质和计算机程序产品,通过拦截针对业务表的原始数据查询语句,该原始数据查询语句用于指示从业务表中查询出满足查询条件的目标业务数据;在检测查询条件所使用的查询字段不为分片字段的情况下,从目标索引表中查询出与满足查询条件的目标分片字段,该目标索引表用于保存分片字段与当前场景下查询字段的对照关系;采用目标分片字段改写原始数据查询语句,得到改写后数据查询语句;改写后数据查询语句用于指示从目标分片中查询出满足查询条件的目标业务数据;目标分片为业务表中与目标分片字段匹配的分片。如此,在索引表预储存有满足原始数据查询语句的查询条件的目标分片字段的情况下,通过采用该目标分片字段对原始数据查询语句进行改写,使得改写后的数据查询语句可以直接从目标分片中查询出满足查询条件的目标业务数据,而无需采用未使用分片字段的原始数据查询语句进行多次的跨片查询操作,可以有效地较少跨片查询操作的次数,从而有效地减少业务数据查询操作次数,以一个业务表有128片为例子,采用本公开的技术方案,查询两次可以获取目标业务数据,而传统技术中的跨片查询需要查询128次再聚合数据返回,效率提升明显。对于分片越多的情况,效率提升越明显。本公开的技术方案可以运用于IPVS(Information-integratedplatform for value-added customer service,业务信息辅助服务)应用中,每日执行查询30亿次以上,调用量10亿次以上,涉及四个集群,共52个节点中,其中,银行登录日均TPS800以上,有效地保障了IPVS应用的正常运行。

附图说明

图1为一个实施例中一种业务数据查询方法的应用环境图;

图2为一个实施例中一种业务数据查询方法的流程示意图;

图3为一个实施例中一种正式表与索引表的关系示意图;

图4为一个实施例中一种索引表查询后的回表流程图;

图5为一个实施例中一种索引表查询方案整体流程图;

图6为另一个实施例中一种业务数据查询方法的流程示意图;

图7为一个实施例中一种业务数据查询装置的结构框图;

图8为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请实施例提供的业务数据查询方法,可以应用于如图1所示的应用环境中。其中,组件102通过网络与终端104和分布式数据库106进行通信。在终端104通过针对业务表的原始数据查询语句从分布式数据库106中查询目标业务数据的过程中,组件102可以拦截针对业务表的原始数据查询语句;原始数据查询语句用于指示从业务表中查询出满足查询条件的目标业务数据;组件102可以检测查询条件所使用的查询字段是否为分片字段;分片字段为对业务表中的分片进行数据查询所用到的字段;在查询字段不为分片字段的情况下,组件102可以从目标索引表中查询出与满足查询条件的目标分片字段;目标索引表用于保存分片字段与当前场景下查询字段的对照关系;组件102可以采用目标分片字段改写原始数据查询语句,得到改写后数据查询语句;改写后数据查询语句用于指示从目标分片中查询出满足查询条件的目标业务数据;目标分片为业务表中与目标分片字段匹配的分片。其中,终端104可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。组件102可以用独立的服务器或者是多个服务器组成的服务器集群或计算机设备来实现。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

需要说明的是,本申请公开的应用程序的部署方法、装置、计算机设备、存储介质和计算机程序产品可应用于金融科技领域,也可用于除金融科技领域之外的任意领域。

在一个实施例中,如图2所示,提供了一种业务数据查询方法,以该方法应用于图1中的组件为例进行说明,包括以下步骤:

步骤S202,拦截针对业务表的原始数据查询语句。

其中,原始数据查询语句用于指示从业务表中查询出满足查询条件的目标业务数据。实际应用中,原始数据查询语句可以是基于SQL(Structured Query Language,结构化查询语言)的数据查询语句。

举例来说,针对基于文件号码查询卡号的数据查询任务,原始数据查询语句可以表示为“SELECT卡号FROM业务表WHERE文件号码=#{文件号码}”;其中,“文件号码=#{文件号码}”可以是指查询条件;“卡号”可以是指目标业务数据;“业务表A”可以是指业务表;即该数据查询语句“SELECT卡号FROM业务表A WHERE文件号码=#{文件号码}”用于指示从业务表A中查询出文件号码=#{文件号码}的卡号信息。其中,卡号可以是指借记卡卡号。

再举例来说,针对基于对象信息编号查询对象卡号的数据查询任务,原始数据查询语句可以表示为“SELECT卡号FROM业务表B WHERE对象编号=#{对象编号}”;其中,“对象编号=#{对象编号}”可以是指查询条件;“卡号”可以是指目标业务数据;“业务表B”可以是指业务表;即该数据查询语句“SELECT卡号FROM业务表B WHERE对象编号=#{对象编号}”用于指示从业务表B中查询出对象信息编号=#{对象编号}的卡号信息。

具体实现中,在数据查询端通过针对业务表的原始数据查询语句从分布式数据库中查询目标业务数据的过程中,组件可以拦截针对业务表的原始数据查询语句。

步骤S204,检测查询条件所使用的查询字段是否为分片字段。

其中,分片字段为对业务表中的分片进行数据查询所用到的字段。

具体实现中,组件拦截到该原始数据查询语句后,组件可以检测该原始数据查询语句中的查询条件所使用的查询字段是否为针对该业务表的分片字段。即检测该原始数据查询语句是否有使用业务表分片字段进行数据查询。

在其中一个实施例中,组件可以采用数据查询语句解释程序(SQL解释程序),解析原始数据查询语句所关联的分片信息;组件通过分片信息,检测查询条件所使用的查询字段是否为分片字段。

具体来说,组件可以采用SQL解释程序解析原始数据查询语句,确定该原始数据查询语句所要查询的业务表的业务表表名;然后,组件利用该业务表表名从表分片信息表中查询出该业务表所使用到的分片字段(分片信息);然后,组件可以判断该原始数据查询语句的查询条件所使用的查询字段是否为该业务表所使用到的分片字段。在原始数据查询语句的查询条件所使用的查询字段为该业务表所使用到的分片字段中的其中一个分片字段的情况下,组件则确定该查询条件所使用的查询字段为分片字段。在原始数据查询语句的查询条件所使用的查询字段不是该业务表所使用到的分片字段中的任意一个分片字段的情况下,组件则确定该查询条件所使用的查询字段不为分片字段。为了便于本领域技术人员的理解,表1实例性地提供了一种表分片信息表。

表1

其中,分片字段可以是指对业务表中的分片进行数据查询所用到的字段。

步骤S206,在查询字段不为分片字段的情况下,从目标索引表中查询出与满足查询条件的目标分片字段。

其中,目标索引表用于保存分片字段与当前场景下查询字段的对照关系。

具体来说,本公开采用空间获取时间的方案,通过新增索引表的方式,实现精准路由。在正式表的分片字段无法满足业务场景时,针对第一层路由的分片字段增加一个索引表用于第二层路由,索引表包含正式表的唯一索引字段,正式表的分片字段,以及第二层路由需要用于查询的第二分片字段。后续如果继续有第三、第四种查询方式,则继续增加索引表以便支持。为了便于本领域技术人员的理解,表2实例性地提供了一种借记卡介质表字段。

表2

场景1:使用卡号做查询,直接使用正式表分片字段做查数就可以支持

场景2:使用内部介质号做查询,建立索引表:为了便于本领域技术人员的理解,表2实例性地提供了一种借记卡介质表索引表字段。

表3

对于正式表的分片字段选取,需要根据实际业务逻辑,选在访问量大,需求量大,交易重要的场景作为正式表分片字段。

具体来说,可以在在数据持久层,容器启动时,加载表分片信息表数据到内存,后续自动任务定时加载一次。然后,根据表分片信息中保存的表名,使用自动任务查询数据库获取索引信息,并保存好表的唯一索引信息到内存中。为了便于本领域技术人员的理解,图3提供了正式表与索引表的关系示意图;其中,正式表包括多个分片字段;各分片字段可以具有相应的索引表。其中,正式表可以包括分片字段、唯一索引字段和业务字段;索引表n可以包括正式表分片字段、正式表唯一索引字段和索引表n分片字段。

具体实现中,在组件确定查询字段不为分片字段的情况下,组件则从目标索引表中查询出与满足查询条件的目标分片字段。

举例来说,已知某个对象信息表(业务表)包括卡号、证件号码、对象信息编号三个信息。该业务表可以如表4所示:

表4

针对数据查询场景1:通过对象信息编号查询客户卡号,原始数据查询语句可以表示为“SELECT卡号FROM业务表WHERE对象信息编号=#{对象信息编号}”;可以看出,原始数据查询语句的查询条件所采用的查询字段为对象信息编号;由于对象信息编号为分片字段,组件则确定原始数据查询语句的查询条件所使用的查询字段为分片字段。

针对数据查询场景2:通过证件号码查询卡号,原始数据查询语句可以表示为“SELECT卡号FROM业务表WHERE证件号码=#{证件号码}”;可以看出,原始数据查询语句的查询条件所采用的查询字段为证件号码;由于证件号码为普通索引字段,组件则确定原始数据查询语句的查询条件所使用的查询字段不为分片字段。

在确定查询字段不为分片字段的情况下,组件则从目标索引表中查询出与满足查询条件的目标分片字段。接上例,组件可以根据原始数据查询语句,及原业务表的分片字段,组装索引表查询语句,从目标索引表中查询出与满足查询条件的目标分片字段。

其中,索引表查询语句可以表示为“SELECT对象信息编号FROM索引表WHERE证件号码=#{证件号码}”,即从索引表中查询出证件号码=#{证件号码}的对象信息编号,如,对象信息编号1,对象信息编号2,对象信息编号3……,得到目标分片字段。实际应用中,可以限制目标分片字段的数量不超过预设阈值,举例来说,该阈值可以是1000;也就是说,索引表查询语句还可以表示为“SELECT对象信息编号FROM索引表WHERE证件号码=#{证件号码}LIMIT 1000”

步骤S208,采用目标分片字段改写原始数据查询语句,得到改写后数据查询语句,以指示从目标分片中查询出满足查询条件的目标业务数据。

其中,目标分片为业务表中与目标分片字段匹配的分片。

具体实现中,组件可以采用目标分片字段改写原始数据查询语句,得到改写后数据查询语句。具体来说,组件可以基于目标分片字段生成符合预设查询句法的语句,并将该语句与原始数据查询语句拼接,得到改写后数据查询语句。

仍接上例,改写后数据查询语句可以表示为“SELECT卡号FROM业务表WHERE证件号码=#{证件号码}AND对象信息编号IN(对象信息编号1,对象信息编号2,对象信息编号3……)”;从对象信息编号1,对象信息编号2,对象信息编号3匹配的分片上查询证件号码=#{证件号码}的卡号。

假设业务表有128片,针对SQL语句“SELECT卡号FROM业务表WHERE证件号码=#{证件号码}”,需要在128片执行共128次数据查询操作。上述实施例需执行两次查询操作,包括:索引表查询“SELECT对象信息编号FROM索引表WHERE证件号码=#{证件号码}”和分片查询“SELECT卡号FROM业务表WHERE证件号码=#{证件号码}AND对象信息编号IN(对象信息编号1,对象信息编号2,对象信息编号3……)”。

上述业务数据查询方法中,通过拦截针对业务表的原始数据查询语句,该原始数据查询语句用于指示从业务表中查询出满足查询条件的目标业务数据;在检测查询条件所使用的查询字段不为分片字段的情况下,从目标索引表中查询出与满足查询条件的目标分片字段,该目标索引表用于保存分片字段与当前场景下查询字段的对照关系;采用目标分片字段改写原始数据查询语句,得到改写后数据查询语句;改写后数据查询语句用于指示从目标分片中查询出满足查询条件的目标业务数据;目标分片为业务表中与目标分片字段匹配的分片。如此,在索引表预储存有满足原始数据查询语句的查询条件的目标分片字段的情况下,通过采用该目标分片字段对原始数据查询语句进行改写,使得改写后的数据查询语句可以直接从目标分片中查询出满足查询条件的目标业务数据,而无需采用未使用分片字段的原始数据查询语句进行多次的跨片查询操作,可以有效地较少跨片查询操作的次数,从而有效地减少业务数据查询操作次数,以一个业务表有128片为例子,采用本公开的技术方案,查询两次可以获取目标业务数据,而传统技术中的跨片查询需要查询128次再聚合数据返回,效率提升明显。对于分片越多的情况,效率提升越明显。本公开的技术方案可以运用于IPVS应用中,每日执行查询30亿次以上,调用量10亿次以上,涉及四个集群,共52个节点中,其中,银行登录日均TPS 800以上,有效地保障了IPVS应用的正常运行,提高数据查询效率。

在另一个实施例中,采用目标分片字段改写原始数据查询语句,得到改写后数据查询语句,包括:获取目标分片字段的分片字段列表;采用分片字段列表构建满足预设句法的查询语句要素;将查询语句要素添加至原始数据查询语句,得到改写后数据查询语句。

其中,分片字段列表为包括至少一个分片字段值的列表。

具体实现中,组件在采用目标分片字段改写原始数据查询语句,得到改写后数据查询语句的过程中,组件可以获取目标分片字段的分片字段列表:分片字段列表可以表示为:“分片字段值1,分片字段值2,分片字段值3……”然后,组件采用分片字段列表构建满足预设句法的查询语句要素;查询语句要素可以表示为:“IN(分片字段值1,分片字段值2,分片字段值3……)”;将查询语句要素添加至原始数据查询语句,得到改写后数据查询语句。举例来说。改写后数据查询语句可以为“SELECT卡号FROM业务表WHERE证件号码=#{证件号码}AND对象信息编号IN(对象信息编号1,对象信息编号2,对象信息编号3……)”

本实施例的技术方案,通过获取目标分片字段的分片字段列表,并采用分片字段列表构建满足预设句法的查询语句要素,再将查询语句要素添加至原始数据查询语句,得到改写后数据查询语句,使得改写后数据查询语句可以有效指示从分片字段值匹配的分片中查询出满足查询条件的目标业务数据。

在另一个实施例中,方法还包括:获取分片字段列表中分片字段值的数目;在分片字段值的数目大于预设的数据阈值的情况下,采用原始数据查询语句执行跨片查询操作。

具体实现中,组件还可以获取分片字段列表中分片字段值的数目;在分片字段值的数目大于预设的数据阈值的情况下,采用原始数据查询语句执行跨片查询操作。

另外,在无法从目标索引表中查询出与满足查询条件的目标分片字段的情况下,采用原始数据查询语句执行跨片查询操作。

为了便于本领域技术人员的理解,图4实例性地提供了一种索引表查询后回表流程图;如图4所示,组件在解析出数据查询语句SQL没有使用正式表分片字段做查询的情况下,组件构建该据查询语句SQL上送字段(即查询字段)查询索引表;然后,组件可以根据原始数据查询语句,及原业务表的分片字段,组装索引表查询语句,从目标索引表中查询出与满足查询条件的目标分片字段,得到分片字段列表。在组件无法从目标索引表中查询出与满足查询条件的目标分片字段的情况下,组件则采用原始数据查询语句执行跨片查询操作,返回目标索引表的空结果。在组件可以从目标索引表中查询出与满足查询条件的目标分片字段的情况下,则组件可以获取目标分片字段中分片字段值的数目。在分片字段值的数目大于预设的数目阈值的情况下,组件则采用原始数据查询语句执行跨片查询操作。在分片字段值的数目小于预设的数目阈值的情况下,组件则获取索引表中正式表的分片字段,采用IN方式拼接语句,查询正式表。实际应用中,数目阈值可以是指为1000。

本实施例的技术方案,在分片字段列表中分片字段值的数目大于预设的数据阈值,则采用原始数据查询语句执行跨片查询操作,而不是采用目标分片字段改写原始数据查询语句,实现跨片查询兜底机制,避免拼装的改写后数据查询语句过长,同时避免数据漏差的情况下,保障数据查询的准确性。

在另一个实施例中,在查询字段不为分片字段的情况下,在从目标索引表中查询出与满足查询条件的目标分片字段的步骤之前,方法还包括:发送索引表检查请求至预设的数据库;索引表检查请求用于检查数据库是否储存有与查询字段对应的索引表;在检查到数据库储存有与查询字段对应的索引表的情况下,从数据库中获取与查询字段对应的索引表,得到目标索引表。

具体实现中,为了便于本领域技术人员的理解,图5实例性地提供了一种索引表查询方案整体流程图;如图5所示,联机服务组件在联机访问过程中,判断拦截到的针对正式表的数据查询SQL是否使用正式表分片字段;在数据查询SQL使用正式表分片字段的情况下,则直接访问正式表返回数据查询结果。在数据查询SQL未使用正式表分片字段的情况下,则判断是否有对应的索引表;具体来说,组件可以发送索引表检查请求至预设的数据库,采用该索引表检查请求检测数据库是否储存有与查询字段对应的索引表;在检查到数据库储存有与查询字段对应的索引表的情况下,从数据库中获取与查询字段对应的索引表,得到目标索引表,确定数据查询SQL具有对应的索引表。组件则访问该索引表;在索引表有数据的情况下,组件则可以采用上述的方法获取改写后数据查询SQL,采用该改写后数据查询SQL访问正式表;在索引表有没有数据的情况下,组件则执行跨片查询操作,返回数据查询结果。

组件在检查到数据库未储存有与查询字段对应的索引表即数据查询SQL未具有对应的索引表的情况下,组件则可以获取跨片查询配置信息,根据跨片查询配置信息判断是否有配置允许跨片查询;在跨片查询配置信息指示不允许跨片查询操作的情况下,返回数据查询报错信息。在跨片查询配置信息指示允许跨片查询操作的情况下,组件则执行跨片查询操作即跨片访问正式表,返回数据查询结果。

本实施例的技术方案,在索引表预储存有满足原始数据查询语句的查询条件的目标分片字段的情况下,通过采用该目标分片字段对原始数据查询语句进行改写,使得改写后的数据查询语句可以直接从目标分片中查询出满足查询条件的目标业务数据,而无需采用未使用分片字段的原始数据查询语句进行多次的跨片查询操作,可以有效地较少跨片查询操作的次数,从而有效地减少业务数据查询操作次数,有效提高数据查询效率。

在另一个实施例中,如图6所示,提供了一种业务数据查询方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:

步骤S602,拦截针对业务表的原始数据查询语句;原始数据查询语句用于指示从业务表中查询出满足查询条件的目标业务数据。

步骤S604,通过数据查询语句解释程序,解析原始数据查询语句所关联的分片信息。

步骤S606,通过分片信息,检测查询条件所使用的查询字段是否为分片字段;分片字段为对业务表中的分片进行数据查询所用到的字段。

步骤S608,在查询字段不为分片字段的情况下,发送索引表检查请求至预设的数据库;索引表检查请求用于检查数据库是否储存有与查询字段对应的索引表。

步骤S610,在检查到数据库储存有与查询字段对应的索引表的情况下,从数据库中获取与查询字段对应的索引表,得到目标索引表。

步骤S612,从目标索引表中查询出与满足查询条件的目标分片字段;目标索引表用于保存分片字段与当前场景下查询字段的对照关系。

步骤S614,获取目标分片字段的分片字段列表;分片字段列表为包括至少一个分片字段值的列表。

步骤S616,采用分片字段列表构建满足预设句法的查询语句要素。

步骤S618,将查询语句要素添加至原始数据查询语句,得到改写后数据查询语句;改写后数据查询语句用于指示从目标分片中查询出满足查询条件的目标业务数据;目标分片为业务表中与目标分片字段匹配的分片。

需要说明的是,上述步骤的具体限定可以参见上文对一种业务数据查询方法的具体限定,在此不再赘述。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的业务数据查询方法的业务数据查询装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个业务数据查询装置实施例中的具体限定可以参见上文中对于业务数据查询方法的限定,在此不再赘述。

在一个实施例中,如图7所示,提供了一种业务数据查询装置,包括:

拦截模块710,用于拦截针对业务表的原始数据查询语句;所述原始数据查询语句用于指示从所述业务表中查询出满足查询条件的目标业务数据;

检测模块720,用于检测所述查询条件所使用的查询字段是否为分片字段;所述分片字段为对所述业务表中的分片进行数据查询所用到的字段;

查询模块730,用于在所述查询字段不为分片字段的情况下,从目标索引表中查询出与满足所述查询条件的目标分片字段;所述目标索引表用于保存分片字段与当前场景下查询字段的对照关系;

改写模块740,用于采用所述目标分片字段改写所述原始数据查询语句,得到改写后数据查询语句;所述改写后数据查询语句用于指示从目标分片中查询出满足所述查询条件的所述目标业务数据;所述目标分片为所述业务表中与所述目标分片字段匹配的分片。

在其中一个实施例中,所述改写模块740,用于获取所述目标分片字段的分片字段列表;所述分片字段列表为包括至少一个分片字段值的列表;采用所述分片字段列表构建满足预设句法的查询语句要素;将所述查询语句要素添加至所述原始数据查询语句,得到所述改写后数据查询语句。

在其中一个实施例中,所述装置还用于获取所述分片字段列表中分片字段值的数目;在所述分片字段值的数目大于预设的数据阈值的情况下,采用所述原始数据查询语句执行跨片查询操作。

在其中一个实施例中,在所述查询字段不为分片字段的情况下,所述装置还用于发送索引表检查请求至预设的数据库;所述索引表检查请求用于检查所述数据库是否储存有与所述查询字段对应的索引表;在检查到所述数据库储存有与所述查询字段对应的索引表的情况下,从所述数据库中获取与所述查询字段对应的索引表,得到所述目标索引表。

在其中一个实施例中,所述装置还用于在检查到所述数据库未储存有与所述查询字段对应的索引表的情况下,获取跨片查询配置信息;在所述跨片查询配置信息指示不允许跨片查询操作的情况下,返回数据查询报错信息。

在其中一个实施例中,所述检测模块720,用于通过数据查询语句解释程序,解析所述原始数据查询语句所关联的分片信息;通过所述分片信息,检测所述查询条件所使用的查询字段是否为分片字段。

在其中一个实施例中,所述装置还用于在无法从目标索引表中查询出与满足所述查询条件的目标分片字段的情况下,采用所述原始数据查询语句执行跨片查询操作。

上述一种业务数据查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储执行上述业务数据查询方法的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种业务数据查询方法。

本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

拦截针对业务表的原始数据查询语句;所述原始数据查询语句用于指示从所述业务表中查询出满足查询条件的目标业务数据;

检测所述查询条件所使用的查询字段是否为分片字段;所述分片字段为对所述业务表中的分片进行数据查询所用到的字段;

在所述查询字段不为分片字段的情况下,从目标索引表中查询出与满足所述查询条件的目标分片字段;所述目标索引表用于保存分片字段与当前场景下查询字段的对照关系;

采用所述目标分片字段改写所述原始数据查询语句,得到改写后数据查询语句;所述改写后数据查询语句用于指示从目标分片中查询出满足所述查询条件的所述目标业务数据;所述目标分片为所述业务表中与所述目标分片字段匹配的分片。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取所述目标分片字段的分片字段列表;所述分片字段列表为包括至少一个分片字段值的列表;

采用所述分片字段列表构建满足预设句法的查询语句要素;

将所述查询语句要素添加至所述原始数据查询语句,得到所述改写后数据查询语句。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取所述分片字段列表中分片字段值的数目;

在所述分片字段值的数目大于预设的数据阈值的情况下,采用所述原始数据查询语句执行跨片查询操作。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

发送索引表检查请求至预设的数据库;所述索引表检查请求用于检查所述数据库是否储存有与所述查询字段对应的索引表;

在检查到所述数据库储存有与所述查询字段对应的索引表的情况下,从所述数据库中获取与所述查询字段对应的索引表,得到所述目标索引表。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

在检查到所述数据库未储存有与所述查询字段对应的索引表的情况下,获取跨片查询配置信息;

在所述跨片查询配置信息指示不允许跨片查询操作的情况下,返回数据查询报错信息。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

通过数据查询语句解释程序,解析所述原始数据查询语句所关联的分片信息;

通过所述分片信息,检测所述查询条件所使用的查询字段是否为分片字段。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

在无法从目标索引表中查询出与满足所述查询条件的目标分片字段的情况下,采用所述原始数据查询语句执行跨片查询操作。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

拦截针对业务表的原始数据查询语句;所述原始数据查询语句用于指示从所述业务表中查询出满足查询条件的目标业务数据;

检测所述查询条件所使用的查询字段是否为分片字段;所述分片字段为对所述业务表中的分片进行数据查询所用到的字段;

在所述查询字段不为分片字段的情况下,从目标索引表中查询出与满足所述查询条件的目标分片字段;所述目标索引表用于保存分片字段与当前场景下查询字段的对照关系;

采用所述目标分片字段改写所述原始数据查询语句,得到改写后数据查询语句;所述改写后数据查询语句用于指示从目标分片中查询出满足所述查询条件的所述目标业务数据;所述目标分片为所述业务表中与所述目标分片字段匹配的分片。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

拦截针对业务表的原始数据查询语句;所述原始数据查询语句用于指示从所述业务表中查询出满足查询条件的目标业务数据;

检测所述查询条件所使用的查询字段是否为分片字段;所述分片字段为对所述业务表中的分片进行数据查询所用到的字段;

在所述查询字段不为分片字段的情况下,从目标索引表中查询出与满足所述查询条件的目标分片字段;所述目标索引表用于保存分片字段与当前场景下查询字段的对照关系;

采用所述目标分片字段改写所述原始数据查询语句,得到改写后数据查询语句;所述改写后数据查询语句用于指示从目标分片中查询出满足所述查询条件的所述目标业务数据;所述目标分片为所述业务表中与所述目标分片字段匹配的分片。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取所述目标分片字段的分片字段列表;所述分片字段列表为包括至少一个分片字段值的列表;

采用所述分片字段列表构建满足预设句法的查询语句要素;

将所述查询语句要素添加至所述原始数据查询语句,得到所述改写后数据查询语句。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取所述分片字段列表中分片字段值的数目;

在所述分片字段值的数目大于预设的数据阈值的情况下,采用所述原始数据查询语句执行跨片查询操作。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

发送索引表检查请求至预设的数据库;所述索引表检查请求用于检查所述数据库是否储存有与所述查询字段对应的索引表;

在检查到所述数据库储存有与所述查询字段对应的索引表的情况下,从所述数据库中获取与所述查询字段对应的索引表,得到所述目标索引表。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

在检查到所述数据库未储存有与所述查询字段对应的索引表的情况下,获取跨片查询配置信息;

在所述跨片查询配置信息指示不允许跨片查询操作的情况下,返回数据查询报错信息。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

通过数据查询语句解释程序,解析所述原始数据查询语句所关联的分片信息;

通过所述分片信息,检测所述查询条件所使用的查询字段是否为分片字段。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

在无法从目标索引表中查询出与满足所述查询条件的目标分片字段的情况下,采用所述原始数据查询语句执行跨片查询操作。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

拦截针对业务表的原始数据查询语句;所述原始数据查询语句用于指示从所述业务表中查询出满足查询条件的目标业务数据;

检测所述查询条件所使用的查询字段是否为分片字段;所述分片字段为对所述业务表中的分片进行数据查询所用到的字段;

在所述查询字段不为分片字段的情况下,从目标索引表中查询出与满足所述查询条件的目标分片字段;所述目标索引表用于保存分片字段与当前场景下查询字段的对照关系;

采用所述目标分片字段改写所述原始数据查询语句,得到改写后数据查询语句;所述改写后数据查询语句用于指示从目标分片中查询出满足所述查询条件的所述目标业务数据;所述目标分片为所述业务表中与所述目标分片字段匹配的分片。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

拦截针对业务表的原始数据查询语句;所述原始数据查询语句用于指示从所述业务表中查询出满足查询条件的目标业务数据;

检测所述查询条件所使用的查询字段是否为分片字段;所述分片字段为对所述业务表中的分片进行数据查询所用到的字段;

在所述查询字段不为分片字段的情况下,从目标索引表中查询出与满足所述查询条件的目标分片字段;所述目标索引表用于保存分片字段与当前场景下查询字段的对照关系;

采用所述目标分片字段改写所述原始数据查询语句,得到改写后数据查询语句;所述改写后数据查询语句用于指示从目标分片中查询出满足所述查询条件的所述目标业务数据;所述目标分片为所述业务表中与所述目标分片字段匹配的分片。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取所述目标分片字段的分片字段列表;所述分片字段列表为包括至少一个分片字段值的列表;

采用所述分片字段列表构建满足预设句法的查询语句要素;

将所述查询语句要素添加至所述原始数据查询语句,得到所述改写后数据查询语句。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取所述分片字段列表中分片字段值的数目;

在所述分片字段值的数目大于预设的数据阈值的情况下,采用所述原始数据查询语句执行跨片查询操作。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

发送索引表检查请求至预设的数据库;所述索引表检查请求用于检查所述数据库是否储存有与所述查询字段对应的索引表;

在检查到所述数据库储存有与所述查询字段对应的索引表的情况下,从所述数据库中获取与所述查询字段对应的索引表,得到所述目标索引表。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

在检查到所述数据库未储存有与所述查询字段对应的索引表的情况下,获取跨片查询配置信息;

在所述跨片查询配置信息指示不允许跨片查询操作的情况下,返回数据查询报错信息。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

通过数据查询语句解释程序,解析所述原始数据查询语句所关联的分片信息;

通过所述分片信息,检测所述查询条件所使用的查询字段是否为分片字段。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

在无法从目标索引表中查询出与满足所述查询条件的目标分片字段的情况下,采用所述原始数据查询语句执行跨片查询操作。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

技术分类

06120116225465