CN112131257A - 数据查询方法和装置 - Google Patents
数据查询方法和装置 Download PDFInfo
- Publication number
- CN112131257A CN112131257A CN202010961357.1A CN202010961357A CN112131257A CN 112131257 A CN112131257 A CN 112131257A CN 202010961357 A CN202010961357 A CN 202010961357A CN 112131257 A CN112131257 A CN 112131257A
- Authority
- CN
- China
- Prior art keywords
- data
- data acquisition
- data model
- query
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000013499 data model Methods 0.000 claims abstract description 336
- 238000011156 evaluation Methods 0.000 claims abstract description 37
- 238000004458 analytical method Methods 0.000 claims abstract description 13
- 230000004044 response Effects 0.000 claims description 74
- 230000010354 integration Effects 0.000 claims description 35
- 230000007246 mechanism Effects 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 239000003795 chemical substances by application Substances 0.000 description 30
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 230000033772 system development Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据查询方法和装置,涉及计算机技术领域。该方法包括:在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型;为每个待查询的数据模型分配相应的数据获取线程;在所述查询请求涉及的所有运算逻辑包括第一运算逻辑的情况下,对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中;通过所述数据获取线程执行针对所述数据模型的数据获取子任务;对各个数据获取线程获取的数据进行整合,将整合得到的查询结果数据返回至所述用户终端。通过以上步骤,能够提高数据查询效率,降低数据库查询压力。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据查询方法和装置。
背景技术
现有的报表复杂查询功能开发方式主要有两种:第一种是通过多表关联的结构化查询语句直接从关系型数据库中查询所需数据;第二种是在系统研发阶段设计独立的宽表,以供对应的报表进行数据查询。
在实现本发明的过程中,本发明的发明人发现:第一种方式优势在于开发成本低,不涉及大规模系统设计的改动,但是通过多表关联的复杂结构化查询语句查询报表容易造成数据库压力大,尤其在高并发的情况下容易导致数据库服务器CPU满负荷运行、业务系统核心业务流程不可用等不良影响;同时,由于金融行业主要以关系型数据为主,横向扩展能力较弱,会使这种不良影响扩大,在复杂查询情况下,数据的查询效率成为用户使用体验的瓶颈。第二种方式优势在于可以保证数据查询效率,但是开发成本高,开发人员不可能针对每一个报表从系统设计角度设计独立的宽表进行数据查询。
发明内容
有鉴于此,本发明提供一种数据查询方法和装置,能够提高数据查询效率,降低数据库查询压力,有效解决由于复杂结构化查询语句查询报表所造成的数据库压力大、数据库服务器超负荷运行等问题,同时降低系统开发成本。
为实现上述目的,根据本发明的第一个方面,提供了一种数据查询方法。
本发明的数据查询方法包括:在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型;为每个待查询的数据模型分配相应的数据获取线程;确定所述查询请求涉及的所有运算逻辑,在所述查询请求涉及的所有运算逻辑包括第一运算逻辑的情况下,对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中,其中,所述第一运算逻辑为单个数据模型能够实现的运算逻辑;通过所述数据获取线程执行针对所述数据模型的数据获取子任务;对各个数据获取线程获取的数据进行整合,将整合得到的查询结果数据返回至所述用户终端。
可选地,所述对所述查询请求进行解析,并根据解析结果确定待查询的数据模型包括:从所述查询请求解析出报表查询字段;在所述报表查询字段为原子级别的字段时,将所述报表查询字段与数据模型中的字段进行比对,根据比对结果确定该报表查询字段所属的数据模型;在所述报表查询字段为非原子级别的字段时,根据预先设置的映射表确定该报表查询字段对应的原子级别字段,将所述对应的原子级别字段与数据模型中的字段进行比对,根据比对结果确定该报表查询字段所属的数据模型;根据所有报表查询字段所属的数据模型确定待查询的数据模型。
可选地,所述方法还包括:在所述对各个数据获取线程获取的数据进行整合之前,确认基于闭锁机制监测到所有数据获取线程均已完成数据获取子任务。
可选地,所述对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中包括:确定各个待查询的数据模型的响应指数、以及所述待查询的数据模型中的最大响应指数;其中,所述响应指数用于衡量针对该数据模型进行查询所需的预估时长;若第一运算逻辑对应的数据模型的响应指数与最大响应指数的差值绝对值大于或等于第一阈值,确认将所述第一运算逻辑嵌入到对应的数据获取线程中。
可选地,所述对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中还包括:若第一运算逻辑对应的数据模型的响应指数与最大响应指数的差值绝对值小于第一阈值,判断第一运算逻辑对应的数据模型在所述待查询的数据模型中的数量占比是否大于或等于第二阈值;若是,确认将所述第一运算逻辑嵌入到对应的数据获取线程中。
可选地,所述对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中还包括:若第一运算逻辑对应的数据模型在所述待查询的数据模型中的数量占比小于第二阈值,确定所述第一运算逻辑对应的数据模型对应的参考指数;其中,所述参考指数用于衡量执行第一运算逻辑所需的预估时长;若所述第一运算逻辑对应的数据模型的响应指数与参考指数之和小于或等于其他数据模型的响应指数,则将所述第一运算逻辑嵌入到对应的数据获取线程中。
可选地,所述方法还包括:在评估结果不满足预设条件时将所述第一运算逻辑嵌入到数据整合线程中;以及,在所述查询请求涉及的所有运算逻辑还包括第二运算逻辑的情况下,将所述第二运算逻辑嵌入到数据整合线程中,以通过所述数据整合线程进行数据整合;其中,所述第二运算逻辑为跨数据模型的运算逻辑。
为实现上述目的,根据本发明的第二个方面,提供了一种数据查询装置。
本发明的数据查询装置包括:确定模块,用于在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型;据获取模块,用于为每个待查询的数据模型分配相应的数据获取线程;所述数据获取模块,还用于确定所述查询请求涉及的所有运算逻辑,在所述查询请求涉及的所有运算逻辑包括第一运算逻辑的情况下,对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中,其中,所述第一运算逻辑为单个数据模型能够实现的运算逻辑;所述数据获取模块,还用于通过所述数据获取线程执行针对所述数据模型的数据获取子任务;数据整合模块,用于对各个数据获取线程获取的数据进行整合;发送模块,用于将整合得到的查询结果数据返回至所述用户终端。
为实现上述目的,根据本发明的第三个方面,提供了一种电子设备。
本发明的电子设备,包括:一个或多个处理器;以及,存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明的数据查询方法。
为实现上述目的,根据本发明的第四个方面,提供了一种计算机可读介质。
本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明的数据查询方法。
上述发明中的一个实施例具有如下优点或有益效果:通过在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型,并为每个待查询的数据模型分配相应的数据获取线程,通过对是否将第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中,并通过所述相应的数据获取线程执行针对该数据模型的数据获取子任务,然后对各个数据获取线程获取的数据进行整合,将整合得到的查询结果数据返回至所述用户终端这些处理步骤,能够提高数据查询效率,降低数据库查询压力,有效解决由于复杂结构化查询语句查询报表所造成的数据库压力大、数据库服务器超负荷运行等问题,同时降低系统开发成本。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明第一实施例的数据查询方法的主要流程示意图;
图2是根据本发明第二实施例的数据查询方法的主要流程示意图;
图3是一种对是否将第一运算逻辑嵌入数据获取线程进行评估的可选实施方式示意图;
图4是根据本发明第三实施例的数据查询装置的主要模块示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要指出的是,在不影响本发明实施的情况下,本发明中的各个实施例以及实施例中的技术特征可以相互组合。
在详细介绍本发明的实施例之前,首先对本发明的实施例涉及的部分技术术语进行说明。
闭锁机制:可以延迟线程的进度直到其到达终止状态,用来确保某些活动直到其他活动都完成才继续执行。
图1是根据本发明第一实施例的数据查询方法的主要流程示意图。如图1所示,本发明实施例的数据查询方法包括:
步骤S101:在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型。
在一个示例性场景中,响应于用户在终端设备上触发的报表查询操作(比如用户点击前端页面上的报表查询控件的操作),终端设备将报表查询字段等参数信息组装在查询请求中,并将所述查询请求发送至服务端。服务端在接收到查询请求后,对所述查询请求进行解析,以从所述查询请求中解析出其所携带的参数信息,并根据解析出的参数信息确定待查询的数据模型。示例性地,所述参数信息可包括报表查询字段、用户所属机构等信息。
其中,所述数据模型又可称为数据模块。具体实施时,可根据业务数据类型的不同划分不同的数据模型,不同的数据模型可通过不同的数据库表来体现。例如,在客户分配系统中,可划分出客户数据模型、保单数据模型、保单代理人数据模型、以及客户与代理人分配关系数据模型。进一步,假设某次从用户终端的查询请求中解析出如下报表查询字段:保险保单号、险种数量、客户号、客户姓名、客户等级、客户保费、保险销售员、销售员职级,则可据此确定待查询的数据模型为:保单数据模型、客户数据模型、保单代理人数据模型。
步骤S102:为每个待查询的数据模型分配相应的数据获取线程。在该步骤中,可针对每个待查询的数据模型,为其分配负责查询该数据模型的数据获取线程。例如,假设通过步骤S101确定的待查询数据模型为保单数据模型、客户数据模型和保单代理人数据模型,可为保单数据模型分配一个数据获取线程,为客户数据模型分配一个数据获取线程,为保单代理人数据模型分配一个数据获取线程。
步骤S103:确定所述查询请求涉及的所有运算逻辑,在所述查询请求涉及的所有运算逻辑包括第一运算逻辑的情况下,对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中。
其中,所述查询请求涉及的运算逻辑包括:第一运算逻辑,和/或,第二运算逻辑。第一运算逻辑是指单个数据模型能够实现的运算逻辑,第二运算逻辑是指跨数据模型的运算逻辑。
考虑到不同数据模型的数据量、表索引、查询数据范围等因素的影响,不同数据模型的数据查询效率或者说读取数据所需时间很可能存在差别。为了进一步提高查询效率,可通过步骤S103对是否将单个数据模型能够实现的运算逻辑嵌到相应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中。
步骤S104:通过所述相应的数据获取线程执行针对该数据模型的数据获取子任务。
示例性地,假设为保单数据模型分配了一个数据获取线程,则通过该数据获取线程执行针对保单数据模型的数据获取子任务;假设为客户数据模型分配了一个数据获取线程,则通过该数据获取线程执行针对客户数据模型的数据获取子任务;假设为保单代理人数据模型分配了一个数据获取线程,则通过该数据获取模型执行针对保单代理人数据模型的数据获取子任务。
步骤S105:对各个数据获取线程获取的数据进行整合,将整合得到的查询结果数据返回至所述用户终端。
在一个可选示例中,考虑到不同数据模型的数据量、表索引、查询数据范围等因素的影响,不同数据模型的数据查询效率或者说读取数据所需时间很可能存在差别,因此,可采用闭锁机制协调各个数据读取线程,以确保所有数据读取线程完成数据获取子任务后再进行数据的整合。
在某个数据获取线程完成数据获取子任务后,可将其获取的数据存储至数据容器中进行等待,直至线程池中所有的数据获取线程完成数据获取子任务。在基于闭锁机制监测到所有数据获取线程均已完成数据获取子任务后,从数据容器中获取各个数据获取线程读取的数据,并对其进行数据整合处理。具体实施时,可通过数据整合线程对各个数据获取线程获取的数据进行整合处理。
在本发明实施例中,通过在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型,并为每个待查询的数据模型分配相应的数据获取线程,通过对是否将第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中,并通过所述相应的数据获取线程执行针对该数据模型的数据获取子任务,然后对各个数据获取线程获取的数据进行整合,将整合得到的查询结果数据返回至所述用户终端这些处理步骤,能够提高数据查询效率,降低数据库查询压力,有效解决由于复杂结构化查询语句查询报表所造成的数据库压力大、数据库服务器超负荷运行等问题,同时降低系统开发成本。
图2是根据本发明第二实施例的数据查询方法的主要流程示意图。如图2所示,本发明实施例的数据查询方法包括:
步骤S201:在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型和所述查询请求涉及的所有运算逻辑。
在一示例性场景中,响应于用户在终端设备上触发的报表查询操作(比如用户点击前端页面上的报表查询控件的操作),终端设备将报表查询字段等参数信息组装在查询请求中,并将所述查询请求发送至服务端。服务端在接收到查询请求后,对所述查询请求进行解析,以从所述查询请求中解析出其所携带的参数信息,并根据解析出的参数信息确定待查询的数据模型。示例性地,所述参数信息可包括报表查询字段、用户所属机构、用户标识等信息。
其中,所述数据模型又可称为数据模块。具体实施时,可根据业务数据类型的不同划分不同的数据模型,不同的数据模型可通过不同的数据库表来体现。例如,在客户分配系统中,可划分出客户数据模型、保单数据模型、保单代理人数据模型、以及客户与代理人分配关系数据模型。
在一个可选示例中,所述对所述查询请求进行解析,并根据解析结果确定待查询的数据模型具体包括:从所述查询请求解析出报表查询字段;在所述报表查询字段为原子级别的字段时,将所述报表查询字段与数据模型中的字段进行比对,根据比对结果确定该报表查询字段所属的数据模型;在所述报表查询字段为非原子级别(或者称为高级级别)的字段时,根据预先设置的映射表确定该报表查询字段对应的原子级别字段,将所述对应的原子级别字段与数据模型中的字段进行比对,根据比对结果确定该报表查询字段所属的数据模型;根据所有报表查询字段所属的数据模型确定待查询的数据模型。
其中,所述原子级别的字段可理解为能够直接从数据模型中读取的字段,所述非原子级别的字段可理解为需要对从数据模型中读取到的字段进行运算处理才能得到的字段。也就是说,非原子级别的字段可继续拆分成原子级别的字段。
其中,所述映射表可采用哈希表数据存储格式,且所述哈希表包括以高级级别的字段为键、以对应的原子级别的字段以及该原子级别的字段涉及的运算逻辑为值的键值对。另外,在具体实施时,所述映射表还可以采用其他存储格式,比如可采用map存储格式等。
例如,假设总共有客户数据模型、保单数据模型、保单代理人数据模型、以及客户与代理人分配关系数据模型这四个数据模型,某次从用户终端的查询请求中解析出如下报表查询字段:保险保单号、险种数量、客户号、客户姓名、客户等级、客户保费、保险销售员、销售员职级。其中,保险保单号、客户号、客户姓名、客户等级、保险销售员、销售员职级属于原子级别的字段,险种数量和客户保费属于高级级别的字段。对于原子级别的字段来说,可将该字段在每个数据模型的元数据查询表(look-up table)中进行匹配查询,以根据匹配查询结果确定该字段属于哪一个数据模型;对于高级级别的字段来说,可预先配置相应的映射表,该映射表包括以高级级别的字段为键、以对应的原子级别的字段以及运算逻辑为值的键值对,进而可通过查询映射表确定高级级别的字段对应的原子级别的字段,然后通过调用所述对应的原子级别的字段的运算逻辑定位数据模型。具体到该示例中,通过以上处理步骤可确定各个原子级别的字段所属的数据模型为:保险保单号隶属于保单数据模型,客户号、客户姓名、客户等级属于客户数据模型,保险销售员、销售员职级属于保险代理人数据模型;而对于“险种数量”这个高级级别的字段来说,通过查询映射表可确定其对应的原子字段为险种、运算逻辑为以保险保单号分组求险种的总和,进而可根据其对应的原子字段“险种”确定“险种数量”所属的数据模型为保单数据模型,而对于“客户保费”这个高级级别的字段来说,通过查询映射表可确定其对应的原子字段为客户号、保单号、险种保费、运算逻辑为根据客户分组求保单号下面所有险种保费之和,进而可根据其对应的原子字段“客户号、保单号、险种保费”确定“客户保费”所属的数据模型为保单数据模型和客户数据模型。之后,通过对各个报表查询字段所属的数据模型进行汇总,可确定此次待查询的数据模型为:保单数据模型、客户数据模型、保单代理人数据模型。
此外,在步骤S201中,可通过对查询请求进行解析确定该查询请求涉及的运算逻辑。其中,所述查询请求涉及的运算逻辑可包括:第一运算逻辑,和/或,第二运算逻辑。其中,第一运算逻辑为单个数据模型能够实现的运算逻辑;第二运算逻辑为跨数据模型的运算逻辑。比如,在前一示例中,“险种数量”涉及的运算逻辑为第一运算逻辑,“客户保费”涉及的运算逻辑为第二运算逻辑。
步骤S202:为每个待查询的数据模型分配相应的数据获取线程。
在该步骤中,可针对每个待查询的数据模型,为其分配负责查询该数据模型的数据获取线程。例如,假设通过步骤S201确定的待查询数据模型为保单数据模型、客户数据模型和保单代理人数据模型,可为保单数据模型分配一个数据获取线程,并通过该线程执行针对保单数据模型的数据获取子任务,为客户数据模型分配一个数据获取线程,并通过待线程执行针对客户数据模型的数据获取子任务,为保单代理人数据模型分配一个数据获取线程,并通过该线程执行针对保单代理人数据模型的数据获取子任务。
步骤S203:判断所述查询请求涉及的运算逻辑中是否包括第一运算逻辑。
示例性地,在该步骤中,对于所述查询请求涉及的各个运算逻辑,可逐一判断其是否能够在单个数据模型内实现,若该运算逻辑能够在单个数据模型内实现,则确定其为第一运算逻辑;若该运算逻辑不能在单个数据模型内实现,则确定其为第二运算逻辑。例如,对于“险种数量”这个报表查询字段来说,其对应的数据模型为保单数据模型,而且由于涉及该字段的运算逻辑能够在保单数据模型中实现,因此其属于第一运算逻辑,进而在此次查询中保单数据模型可被称为存在第一运算逻辑的数据模型。
进一步,在步骤S203的判断结果为是的情况下,执行步骤S204;在步骤S203的判断结果为否的情况下,执行步骤S208。
步骤S204:对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估。
步骤S205:判断评估结果是否满足预设条件。
在一个可选实施方式中,步骤S204以及步骤S205包括:确定各个待查询的数据模型的响应指数、以及所述待查询的数据模型中的最大响应指数;将存在第一运算逻辑的数据模型的响应指数与最大响应指数进行比较;若存在第一运算逻辑的数据模型的响应指数与最大响应指数的差值绝对值大于或等于第一阈值,确认评估结果满足预设条件;否则,确认评估结果不满足预设条件。其中,所述第一阈值为正数,其具体取值可根据实际需求灵活设置。
其中,所述响应指数用于衡量针对该数据模型进行查询所需的预估时长。响应指数越大,表示查询该数据模型需要的时间越长。在上述可选实施方式中,可在相应的存储模块(比如数据库)维护各个数据模型的响应指数;在执行步骤S204时,可根据各个待查询的数据模型的标识查询存储模块,以获取该数据模型的响应指数。例如,假设待查询的数据模型为保单数据模型,则可根据保单数据模型的标识查询数据库,以查询出保单数据模型的响应指数。
进一步,在上述可选实施方式中,可通过以下示例性方式维护各个数据模型的响应指数:在初次查询时,为存储模块中各个数据模型的响应指数设置初始值;在每次针对数据模型进行查询后,将此次查询该数据模型所需的实际时长与预先存储的该数据模型的响应指数进行比较,如果此次查询该数据模型所需的实际时长大于预先存储的该数据模型的响应指数,则将此次查询该数据模型所需的实际时长作为该数据模型的响应指数,以实现该数据模型的响应指数的更新。例如,在初次查询时,可将每个数据模型的第一次查询预估时间设置成1min,并且以该数据模型的表空间与库空间的比值作为权重因子,令权重因子与每个数据模型的第一次查询预估时间相乘,以得到该数据模型的响应指数的初始值。
此外,在上述可选实施方式中,还可在执行步骤S204时实时计算各个待查询的数据模型的响应指数。
在另一个可选实施方式中,步骤S204以及步骤S205包括:确定各个待查询的数据模型的响应指数、以及存在第一运算逻辑的数据模型对应的参考指数;计算存在第一运算逻辑的数据模型的响应指数与参考指数之和;若所述存在第一运算逻辑的数据模型的响应指数与参考指数之和小于或等于其他数据模型的响应指数,则确认评估结果满足预设条件;否则,确认评估结果不满足预设条件。其中,所述响应指数用于衡量针对该数据模型进行查询所需的预估时长;所述参考指数用于衡量执行第一运算逻辑所需的预估时长。
进一步,在上述可选实施方式中,可在相应的存储模块(比如数据库)维护响应指数以及参考指数;在执行步骤S204时,可根据各个待查询的数据模型的标识查询存储模块,以获取该数据模型的响应指数;根据第一运算逻辑的标识查询存储模块,以获取对应的参考指数。例如,假设待查询的数据模型为保单数据模型,则可根据保单数据模型的标识查询数据库,以查询出保单数据模型的响应指数;假设针对保单数据模型的第一运算逻辑为险种数量计算的处理逻辑,则根据该运算逻辑的标识查询存储模块,以获取对应的参考指数。
在再一个实施方式中,可根据图3所示流程对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估。
进一步,在步骤S205之后,若评估结果满足预设条件,执行步骤S206;若评估结果不满足预设条件,执行步骤S207。
步骤S206:将所述第一运算逻辑嵌入到对应的数据获取线程中。
例如,假设在进行某次查询时,待查询的数据模型为保单数据模型、客户数据模型和保单代理人数据模型。进一步,假设其中的保单数据模型为存在第一运算逻辑的模型、且通过步骤S204和S205判断出评估结果满足预设条件,则将该第一运算逻辑嵌入到保单数据模型对应的数据获取线程中。
在本发明实施例中,通过步骤S204至步骤S205对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估、判断评估结果是否符合预设条件,并在评估结果符合预设条件时将第一运算逻辑嵌入到数据获取线程中,能够在某些数据获取线程读取完数据后,并且在其他数据获取线程还没有结束的时候开始针对该独立数据模型相关的计算,从而进一步节省了查询时间,提高了查询效率。
步骤S207:将所述第一运算逻辑嵌入到数据整合线程中。
例如,假设在进行某次查询时,待查询的数据模型为保单数据模型、客户数据模型和保单代理人数据模型。进一步,假设其中的保单数据模型为存在第一运算逻辑的模型、且通过步骤S204和S205判断出评估结果不满足预设条件,则将该第一运算逻辑嵌入到数据整合线程中。
步骤S208:通过多个数据获取线程并行执行针对数据模型的数据获取子任务。
例如,假设通过前述步骤确定的待查询数据模型为保单数据模型、客户数据模型和保单代理人数据模型,可为保单数据模型分配一个数据获取线程,并通过该线程执行针对保单数据模型的数据获取子任务,为客户数据模型分配一个数据获取线程,并通过待线程执行针对客户数据模型的数据获取子任务,为保单代理人数据模型分配一个数据获取线程,并通过该线程执行针对保单代理人数据模型的数据获取子任务。
步骤S209:在基于闭锁机制监测到所有数据获取线程均已完成数据获取子任务后,通过数据整合线程对各个数据获取线程获取的数据进行整合。
考虑到不同数据模型的数据量、表索引、查询数据范围等因素的影响,不同数据模型的数据查询效率或者说读取数据所需时间很可能存在差别。鉴于此,本发明的发明人想到,可采用闭锁机制协调各个数据读取线程,以确保所有数据读取线程完成数据获取子任务后再进行数据的整合。
在某个数据获取线程完成数据获取子任务后,可将其获取的数据存储至数据容器中进行等待,直至线程池中所有的数据获取线程完成数据获取子任务。在基于闭锁机制监测到所有数据获取线程均已完成数据获取子任务后,从数据容器中获取各个数据获取线程读取的数据,并通过数据整合线程对各个数据获取线程获取的数据进行整合处理。
在一个可选示例中,数据查询所涉及的运算逻辑又可分为以下两类:清单类型的运算逻辑、统计类型的运算逻辑。在该可选示例中,如果嵌入数据整合线程的运算逻辑是清单类型,则可通过行计算的方式进行数据整合;如果嵌入数据整合线程的运算逻辑是统计类型,则可根据列计算的方式进行数据整合。其中,所述行计算,可理解为对同一字段值对应的不同信息进行拼接。例如,假设字段为客户名,针对客户名的行计算可以是对同一客户名(例如“张三”)的信息进行拼接。所述列计算,可理解为对同一字段的不同取值进行统计。例如,假设字段为客户名,针对客户名的计算可以是对客户名总数进行统计。
进一步,在以行计算方式进行数据整合时可将客户数据作为数据基线。比如,在拼接客户的保单数据时,可先读取一个客户数据,然后通过客户号遍历保单数据,可以很快地找到该客户对应的保单数据,直到保单数据中下一条数据不为该客户号,则默认该客户的保单数据全部拼接完毕。通过上述处理可以快速高效地完成数据的拼接。
在本发明实施例中,通过以上步骤能够提高复杂查询的数据查询效率,降低数据库查询压力,有效解决由于复杂结构化查询语句查询报表所造成的数据库压力大、数据库服务器超负荷运行等问题,同时降低系统开发成本。
图3是一种对是否将第一运算逻辑嵌入数据获取线程进行评估的可选实施方式示意图。如图3所示,所述对是否将第一运算逻辑嵌入数据获取线程进行评估包括:
步骤S301:确定各个待查询的数据模型的响应指数、以及所述待查询的数据模型中的最大响应指数。
其中,所述响应指数用于衡量针对该数据模型进行查询所需的预估时长。响应指数越大,表示查询该数据模型需要的时间越长。
在一个可选实施方式中,可在相应的存储模块(比如数据库)维护各个数据模型的响应指数;在执行步骤S301时,可根据各个待查询的数据模型的标识查询存储模块,以获取该数据模型的响应指数,然后通过比较各个待查询的数据模型的响应指数确定其中的最大响应指数。例如,假设待查询的数据模型为保单数据模型和客户数据模型,则可根据保单数据模型的标识查询数据库,以查询出保单数据模型的响应指数,根据客户数据模型的标识查询数据库,以查询出客户数据模型的响应指数。
进一步,在上述可选实施方式中,可通过以下示例性方式维护各个数据模型的响应指数:在初次查询时,为存储模块中各个数据模型的响应指数设置初始值;在每次针对数据模型进行查询后,将此次查询该数据模型所需的实际时长与预先存储的该数据模型的响应指数进行比较,如果此次查询该数据模型所需的实际时长大于预先存储的该数据模型的响应指数,则将此次查询该数据模型所需的实际时长作为该数据模型的响应指数,以实现该数据模型的响应指数的更新。例如,在初次查询时,可将每个数据模型的第一次查询预估时间设置成1min,并且以该数据模型的表空间与库空间的比值作为权重因子,令权重因子与每个数据模型的第一次查询预估时间相乘,以得到该数据模型的响应指数的初始值。
在另一个可选实施方式中,还可在执行步骤S301时实时计算各个待查询的数据模型的响应指数,然后通过比较各个待查询的数据模型的响应指数确定其中的最大响应指数。
步骤S302:将存在第一运算逻辑的数据模型的响应指数与最大响应指数作差。
步骤S303:判断差值绝对值是否大于或等于第一阈值。
其中,所述第一阈值为正数,其具体取值可根据实际需求灵活设置。在步骤S303的判断结果为是的情况下,执行步骤S309;在步骤S303的判断结果为否的情况下,执行步骤S304。
步骤S304:计算存在第一运算逻辑的数据模型在所述待查询的数据模型中的数量占比。
示例性地,对于查询请求涉及的各个运算逻辑,可逐一判断其是否能够在单个数据模型内实现,若该运算逻辑能够在单个数据模型内实现,则确定其为第一运算逻辑,进而,该运算逻辑所对应的数据模型为“存在第一运算逻辑的数据模型”;若该运算逻辑不能在单个数据模型内实现,则确定其为第二运算逻辑。例如,对于“险种数量”这个报表查询字段来说,其对应的数据模型为保单数据模型,而且由于涉及该字段的运算逻辑能够在保单数据模型中实现,因此其属于第一运算逻辑,进而在此次查询中保单数据模型可被称为“存在第一运算逻辑的数据模型”。
在该步骤中,可统计存在第一运算逻辑的数据模型的数量、以及待查询的数据模型的数量,然后将两者的比值作为存在第一运算逻辑的数据模型在所述待查询的数据模型中的数量占比。
步骤S305:判断数量占比是否大于或等于第二阈值。
其中,所述第二阈值的具体取值可根据实际需求灵活设置。比如,可将第二阈值设置为0.5、0.7或者其他值。在步骤S305的判断结果为是的情况下,执行步骤S309;在步骤S305的判断结果为否的情况下,执行步骤S306。
步骤S306:确定所述存在第一运算逻辑的数据模型对应的参考指数。
其中,所述参考指数用于衡量执行第一运算逻辑所需的预估时长。在一个可选实施方式中,可在相应的存储模块(比如数据库)维护参考指数;在执行步骤S306时,可根据第一运算逻辑的标识查询存储模块,以获取对应的参考指数。例如,假设针对保单数据模型的第一运算逻辑为险种数量计算的处理逻辑,则根据该运算逻辑的标识查询存储模块,以获取对应的参考指数。
步骤S307:计算所述存在第一运算逻辑的数据模型的响应指数与参考指数之和,并将其与其他数据模型的响应指数进行比较。
步骤S308:判断响应指数与参考指数之和是否小于或等于其他数据模型的响应指数。
在步骤S308的判断结果为是的情况下,执行步骤S309;在步骤S308的判断结果为否的情况下,执行步骤S310。
步骤S309:将所述第一运算逻辑嵌入到对应的数据获取线程中。
例如,假设在进行某次查询时,待查询的数据模型为保单数据模型、客户数据模型和保单代理人数据模型。进一步,假设其中的保单数据模型为存在第一运算逻辑的模型、且通过前述步骤判断出评估结果满足预设条件,则将该第一运算逻辑嵌入到保单数据模型对应的数据获取线程中。
步骤S310:将所述第一运算逻辑嵌入到数据整合线程中。
例如,假设在进行某次查询时,待查询的数据模型为保单数据模型、客户数据模型和保单代理人数据模型。进一步,假设其中的保单数据模型为存在第一运算逻辑的模型、且通过前述步骤判断出评估结果不满足预设条件,则将该第一运算逻辑嵌入到数据整合线程中。
在本发明实施例中,通过基于以上处理步骤对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估、判断评估结果是否符合预设条件,能够进一步提高评估效果,进而有助于进一步节省查询时间,提高查询效率。
图4是根据本发明第三实施例的数据查询装置的主要模块示意图。如图4所示,本发明实施例的数据查询装置400包括:确定模块401、数据获取模块402、数据整合模块403、发送模块404。
确定模块401,用于在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型。
在一个示例性场景中,响应于用户在终端设备上触发的报表查询操作(比如用户点击前端页面上的报表查询控件的操作),终端设备将报表查询字段等参数信息组装在查询请求中,并将所述查询请求发送至服务端。服务端的数据查询装置在接收到查询请求后,对所述查询请求进行解析,以从所述查询请求中解析出其所携带的参数信息,并根据解析出的参数信息确定待查询的数据模型。示例性地,所述参数信息可包括报表查询字段、用户所属机构等信息。
其中,所述数据模型又可称为数据模块。具体实施时,可根据业务数据类型的不同划分不同的数据模型,不同的数据模型可通过不同的数据库表来体现。例如,在客户分配系统中,可划分出客户数据模型、保单数据模型、保单代理人数据模型、以及客户与代理人分配关系数据模型。进一步,假设某次从用户终端的查询请求中解析出如下报表查询字段:保险保单号、险种数量、客户号、客户姓名、客户等级、客户保费、保险销售员、销售员职级,则可据此确定待查询的数据模型为:保单数据模型、客户数据模型、保单代理人数据模型。
数据获取模块402,用于为每个待查询的数据模型分配相应的数据获取线程。
具体来说,数据获取模块402可针对每个待查询的数据模型,为其分配负责查询该数据模型的数据获取线程。例如,假设通过确定模块401确定的待查询数据模型为保单数据模型、客户数据模型和保单代理人数据模型,数据获取模块402可为保单数据模型分配一个数据获取线程,为客户数据模型分配一个数据获取线程,,为保单代理人数据模型分配一个数据获取线程。
数据获取模块402,还用于确定所述查询请求涉及的所有运算逻辑,在所述查询请求涉及的所有运算逻辑包括第一运算逻辑的情况下,对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中。
其中,所述查询请求涉及的运算逻辑包括:第一运算逻辑,和/或,第二运算逻辑。第一运算逻辑是指单个数据模型能够实现的运算逻辑,第二运算逻辑是指跨数据模型的运算逻辑。
考虑到不同数据模型的数据量、表索引、查询数据范围等因素的影响,不同数据模型的数据查询效率或者说读取数据所需时间很可能存在差别。为了进一步提高查询效率,可通过数据获取模块对是否将单个数据模型能够实现的运算逻辑嵌到相应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中。
数据获取模块402,还用于通过所述相应的数据获取线程执行针对该数据模型的数据获取子任务。
示例性地,假设为保单数据模型分配了一个数据获取线程,则数据获取模块402可通过该数据获取线程执行针对保单数据模型的数据获取子任务;假设为客户数据模型分配了一个数据获取线程,则数据获取模块402可通过该数据获取线程执行针对客户数据模型的数据获取子任务;假设为保单代理人数据模型分配了一个数据获取线程,则数据获取模块402可通过该数据获取模型执行针对保单代理人数据模型的数据获取子任务。
数据整合模块403,用于对各个数据获取线程获取的数据进行整合。
在一个可选示例中,考虑到不同数据模型的数据量、表索引、查询数据范围等因素的影响,不同数据模型的数据查询效率或者说读取数据所需时间很可能存在差别,因此,可采用闭锁机制协调各个数据读取线程,以确保所有数据读取线程完成数据获取子任务后再进行数据的整合。
在某个数据获取线程完成数据获取子任务后,可将其获取的数据存储至数据容器中进行等待,直至线程池中所有的数据获取线程完成数据获取子任务。在基于闭锁机制监测到所有数据获取线程均已完成数据获取子任务后,数据整合模块403可从数据容器中获取各个数据获取线程读取的数据,并对其进行数据整合处理。具体实施时,数据整合模块403可通过数据整合线程对各个数据获取线程获取的数据进行整合处理。
发送模块404,用于将整合得到的查询结果数据返回至所述用户终端。
在本发明实施例中,通过确定模块对查询请求进行解析、并根据解析结果确定待查询的数据模型,通过数据获取模块为每个待查询的数据模型分配相应的数据获取线程、并通过所述相应的数据获取线程执行针对该数据模型的数据获取子任务,通过数据整合模块在基于闭锁机制监测到所有数据获取线程均已完成数据获取子任务后,对各个数据获取线程获取的数据进行整合,通过发送模块将整合得到的查询结果数据返回至所述用户终端,能够提高复杂查询的数据查询效率,降低数据库查询压力,有效解决由于复杂结构化查询语句查询报表所造成的数据库压力大、数据库服务器超负荷运行等问题,同时降低系统开发成本。
图5示出了可以应用本发明实施例的数据查询方法或数据查询装置的示例性系统架构500。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如金融类应用、购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所发出的数据查询请求提供支持的后台管理服务器。后台管理服务器可以在接收到数据查询请求后,进行数据查询操作,并将数据查询结果返回至终端设备。
需要说明的是,本发明实施例所提供的数据查询方法可以由服务器505执行,相应地,数据查询装置设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本发明实施例的电子设备的计算机系统600的结构示意图。图6示出的计算机系统仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括确定模块、数据获取模块、数据整合模块和发送模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,确定模块还可以被描述为“对查询请求进行解析,并根据解析结果确定待查询的数据模型的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备执行以下流程:在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型;为每个待查询的数据模型分配相应的数据获取线程;确定所述查询请求涉及的所有运算逻辑,在所述查询请求涉及的所有运算逻辑包括第一运算逻辑的情况下,对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中,其中,所述第一运算逻辑为单个数据模型能够实现的运算逻辑;通过所述数据获取线程执行针对所述数据模型的数据获取子任务;对各个数据获取线程获取的数据进行整合,将整合得到的查询结果数据返回至所述用户终端。
根据本发明实施例的技术方案,能够提高数据查询效率,降低数据库查询压力,有效解决由于复杂结构化查询语句查询报表所造成的数据库压力大、数据库服务器超负荷运行等问题,同时降低系统开发成本。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种数据查询方法,其特征在于,所述方法包括:
在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型;
为每个待查询的数据模型分配相应的数据获取线程;
确定所述查询请求涉及的所有运算逻辑,在所述查询请求涉及的所有运算逻辑包括第一运算逻辑的情况下,对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中,其中,所述第一运算逻辑为单个数据模型能够实现的运算逻辑;
通过所述数据获取线程执行针对所述数据模型的数据获取子任务;
对各个数据获取线程获取的数据进行整合,将整合得到的查询结果数据返回至所述用户终端。
2.根据权利要求1所述的方法,其特征在于,所述对所述查询请求进行解析,并根据解析结果确定待查询的数据模型包括:
从所述查询请求解析出报表查询字段;
在所述报表查询字段为原子级别的字段时,将所述报表查询字段与数据模型中的字段进行比对,根据比对结果确定该报表查询字段所属的数据模型;
在所述报表查询字段为非原子级别的字段时,根据预先设置的映射表确定该报表查询字段对应的原子级别字段,将所述对应的原子级别字段与数据模型中的字段进行比对,根据比对结果确定该报表查询字段所属的数据模型;
根据所有报表查询字段所属的数据模型确定待查询的数据模型。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述对各个数据获取线程获取的数据进行整合之前,确认基于闭锁机制监测到所有数据获取线程均已完成数据获取子任务。
4.根据权利要求1所述的方法,其特征在于,所述对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中包括:
确定各个待查询的数据模型的响应指数、以及所述待查询的数据模型中的最大响应指数;其中,所述响应指数用于衡量针对该数据模型进行查询所需的预估时长;
若第一运算逻辑对应的数据模型的响应指数与最大响应指数的差值绝对值大于或等于第一阈值,确认将所述第一运算逻辑嵌入到对应的数据获取线程中。
5.根据权利要求4所述的方法,其特征在于,所述对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中还包括:
若第一运算逻辑对应的数据模型的响应指数与最大响应指数的差值绝对值小于第一阈值,判断第一运算逻辑对应的数据模型在所述待查询的数据模型中的数量占比是否大于或等于第二阈值;若是,确认将所述第一运算逻辑嵌入到对应的数据获取线程中。
6.根据权利要求5所述的方法,其特征在于,所述对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中还包括:
若第一运算逻辑对应的数据模型在所述待查询的数据模型中的数量占比小于第二阈值,确定所述第一运算逻辑对应的数据模型对应的参考指数;其中,所述参考指数用于衡量执行第一运算逻辑所需的预估时长;
若所述第一运算逻辑对应的数据模型的响应指数与参考指数之和小于或等于其他数据模型的响应指数,则将所述第一运算逻辑嵌入到对应的数据获取线程中。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在评估结果不满足预设条件时将所述第一运算逻辑嵌入到数据整合线程中;以及
在所述查询请求涉及的所有运算逻辑还包括第二运算逻辑的情况下,将所述第二运算逻辑嵌入到数据整合线程中,以通过所述数据整合线程进行数据整合;其中,所述第二运算逻辑为跨数据模型的运算逻辑。
8.一种数据查询装置,其特征在于,所述装置包括:
确定模块,用于在接收到用户终端的查询请求后,对所述查询请求进行解析,并根据解析结果确定待查询的数据模型;
数据获取模块,用于为每个待查询的数据模型分配相应的数据获取线程;所述数据获取模块,还用于确定所述查询请求涉及的所有运算逻辑,在所述查询请求涉及的所有运算逻辑包括第一运算逻辑的情况下,对是否将所述第一运算逻辑嵌入到对应的数据获取线程中进行评估,并在评估结果满足预设条件时将所述第一运算逻辑嵌入到对应的数据获取线程中,其中,所述第一运算逻辑为单个数据模型能够实现的运算逻辑;所述数据获取模块,还用于通过所述数据获取线程执行针对所述数据模型的数据获取子任务;
数据整合模块,用于对各个数据获取线程获取的数据进行整合;
发送模块,用于将整合得到的查询结果数据返回至所述用户终端。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010961357.1A CN112131257B (zh) | 2020-09-14 | 2020-09-14 | 数据查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010961357.1A CN112131257B (zh) | 2020-09-14 | 2020-09-14 | 数据查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112131257A true CN112131257A (zh) | 2020-12-25 |
CN112131257B CN112131257B (zh) | 2023-10-27 |
Family
ID=73845755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010961357.1A Active CN112131257B (zh) | 2020-09-14 | 2020-09-14 | 数据查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112131257B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749192A (zh) * | 2021-01-24 | 2021-05-04 | 武汉卓尔信息科技有限公司 | 一种数据集成服务系统及数据处理方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103379127A (zh) * | 2012-04-12 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 服务器与客户端间的数据交互方法及装置 |
US20180203924A1 (en) * | 2017-01-18 | 2018-07-19 | Google Inc. | Systems and methods for processing a natural language query in data tables |
CN108628986A (zh) * | 2018-04-27 | 2018-10-09 | 深圳市牛鼎丰科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN109254966A (zh) * | 2018-08-23 | 2019-01-22 | 平安科技(深圳)有限公司 | 数据表查询方法、装置、计算机设备及存储介质 |
CN110019308A (zh) * | 2017-12-28 | 2019-07-16 | 中国移动通信集团海南有限公司 | 数据查询方法、装置、设备及存储介质 |
CN110851465A (zh) * | 2019-11-15 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 数据查询方法及系统 |
WO2020042804A1 (zh) * | 2018-08-31 | 2020-03-05 | 阿里巴巴集团控股有限公司 | 一种数据库查询优化方法、装置、及计算机设备 |
CN110990400A (zh) * | 2019-11-20 | 2020-04-10 | 浙江大搜车软件技术有限公司 | 数据库查询方法、装置、计算机设备和存储介质 |
CN111382174A (zh) * | 2018-12-28 | 2020-07-07 | 百度在线网络技术(北京)有限公司 | 多方数据联合查询方法、装置、服务器和存储介质 |
-
2020
- 2020-09-14 CN CN202010961357.1A patent/CN112131257B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103379127A (zh) * | 2012-04-12 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 服务器与客户端间的数据交互方法及装置 |
US20180203924A1 (en) * | 2017-01-18 | 2018-07-19 | Google Inc. | Systems and methods for processing a natural language query in data tables |
CN110019308A (zh) * | 2017-12-28 | 2019-07-16 | 中国移动通信集团海南有限公司 | 数据查询方法、装置、设备及存储介质 |
CN108628986A (zh) * | 2018-04-27 | 2018-10-09 | 深圳市牛鼎丰科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN109254966A (zh) * | 2018-08-23 | 2019-01-22 | 平安科技(深圳)有限公司 | 数据表查询方法、装置、计算机设备及存储介质 |
WO2020042804A1 (zh) * | 2018-08-31 | 2020-03-05 | 阿里巴巴集团控股有限公司 | 一种数据库查询优化方法、装置、及计算机设备 |
CN111382174A (zh) * | 2018-12-28 | 2020-07-07 | 百度在线网络技术(北京)有限公司 | 多方数据联合查询方法、装置、服务器和存储介质 |
CN110851465A (zh) * | 2019-11-15 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 数据查询方法及系统 |
CN110990400A (zh) * | 2019-11-20 | 2020-04-10 | 浙江大搜车软件技术有限公司 | 数据库查询方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
王德广;张军卒;李文;: "基于数据字典的通用查询平台的设计", 科学技术与工程, no. 19, pages 5849 - 5843 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749192A (zh) * | 2021-01-24 | 2021-05-04 | 武汉卓尔信息科技有限公司 | 一种数据集成服务系统及数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112131257B (zh) | 2023-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109492053B (zh) | 用于访问数据的方法和装置 | |
CN111427971B (zh) | 用于计算机系统的业务建模方法、装置、系统和介质 | |
US9251227B2 (en) | Intelligently provisioning cloud information services | |
CN109542935A (zh) | 一种规则引擎的执行方法、存储介质和服务器 | |
CN111104426B (zh) | 一种数据查询方法及系统 | |
CN113515549B (zh) | 财务数据查询方法、装置及可读存储介质 | |
CN110706093A (zh) | 一种账务处理方法和装置 | |
CN110909022A (zh) | 一种数据查询方法和装置 | |
WO2021191702A1 (en) | Offloading statistics collection | |
CN114281663A (zh) | 测试处理方法、装置、电子设备和存储介质 | |
CN105431815A (zh) | 用于数据库工作负荷的输入-输出优先化 | |
CN112947919A (zh) | 构建业务模型和处理业务请求的方法和装置 | |
CN112131257B (zh) | 数据查询方法和装置 | |
CN111008767B (zh) | 互联网金融技术架构评估方法、装置、电子设备和介质 | |
CN114185941A (zh) | 报表数据查询的方法、装置、电子设备和存储介质 | |
CN111581431B (zh) | 基于动态评估的数据探查方法和装置 | |
CN110895761A (zh) | 一种售后服务申请信息的处理方法和装置 | |
CN115858905A (zh) | 数据处理的方法、装置、电子设备和存储介质 | |
US8868485B2 (en) | Data flow cost modeling | |
CN110858199A (zh) | 一种单据数据分布式计算的方法和装置 | |
CN114817347A (zh) | 业务审批方法、装置、电子设备和存储介质 | |
CN114020789A (zh) | 账单数据查询方法、系统、设备及存储介质 | |
CN112862554A (zh) | 一种订单数据的处理方法和装置 | |
CN113778657B (zh) | 一种数据处理方法和装置 | |
CN114238411A (zh) | 交易数据的处理方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |