CN110580258B - 大数据自由查询方法及装置 - Google Patents
大数据自由查询方法及装置 Download PDFInfo
- Publication number
- CN110580258B CN110580258B CN201910889884.3A CN201910889884A CN110580258B CN 110580258 B CN110580258 B CN 110580258B CN 201910889884 A CN201910889884 A CN 201910889884A CN 110580258 B CN110580258 B CN 110580258B
- Authority
- CN
- China
- Prior art keywords
- query
- free
- session
- database server
- user
- 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.)
- Active
Links
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/2453—Query optimisation
-
- 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
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- 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/2457—Query processing with adaptation to user needs
Abstract
本发明提供了一种大数据自由查询方法及装置,该方法包括:接收客户端发送的自由查询请求;根据已存储的用户Id与会话Id的关系确定是否存在与用户Id相对应的会话Id,若不存在,则为所述用户Id配置会话Id,根据待访问数据库服务器标识,与待访问数据库服务器建立jdbc连接,若存在,则将该对应的会话Id已存在的前查询任务删除,并使用该对应的会话Id连接待访问数据库服务器;将所述自由查询请求发送至相应的数据库服务器;接收相应的数据库服务器返回的查询结果;并将查询结果返回至客户端。上述方案通过对连接的使用优化来提高查询效率,满足大数量、实时查询场景下的查询效率与一致性问题,支持匹配各类数据库服务器。
Description
技术领域
本发明涉及数据查询技术领域,特别是指一种大数据自由查询的方法及装置。
背景技术
当前BI系统从数据库读取数据时,从建立连接到查询结果,每一次的查询都是一个新查询且会快速消耗系统资源。而BI系统短时间内的查询会急速增长,导致系统运行一段时间后会出现连接无法建立等各种情况。
BI系统读取数据时,由于资源限制,从数据库读取数据每次只会读取几行到几十行,同时会使用分页功能查询后续数据。使用此种方法时的每一次翻页都是触发一次新的查询,当查询复杂且数据量大时,如果单次查询的时间过长会导致系统响应时间过长。此外触发了多次查询,如果在两次查询中原表数据有变动,则查询结果不能保证数据与前次查询数据的一致性。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种大数据自由查询的方法及装置,该方法解决了现有技术中针对每一次的查询都是一个新查询且会快速消耗系统资源的技术问题。
本发明实施例提供了一种大数据自由查询的方法,该方法包括:
接收客户端发送的自由查询请求,所述自由查询请求中包括用户Id、待访问数据库服务器标识;
根据已存储的用户Id与会话Id的关系确定是否存在与用户Id相对应的会话Id,若不存在,则为所述用户Id配置会话Id,根据待访问数据库服务器标识,与待访问数据库服务器建立jdbc连接,若存在,则将该对应的会话Id已存在的前查询任务删除,并使用该对应的会话Id连接待访问数据库服务器;
将所述自由查询请求发送至相应的数据库服务器;
接收相应的数据库服务器返回的查询结果;
并将查询结果返回至客户端;
所述自由查询请求中还包括会话Id和查询结果Id;
还包括:
根据会话Id和查询结果Id,至已执行查询且并未关闭的查询任务中查找相应会话Id和查询结果Id,若存在,则将查询结果Id对应的查询结果返回,若不存在,则使用该会话Id与数据库服务器建立jdbc连接,向数据库服务器提交查询指令;
本发明实施例还提供了一种大数据自由查询的装置,该装置包括:
自由查询请求接收模块,用于接收客户端发送的自由查询请求,所述自由查询请求中包括用户Id、待访问数据库服务器标识;
查询分析执行模块,用于根据已存储的用户Id与会话Id的关系确定是否存在与用户Id相对应的会话Id,若不存在,则为所述用户Id配置会话Id,根据待访问数据库服务器标识,与待访问数据库服务器建立jdbc连接,若存在,则将该对应的会话Id已存在的前查询任务删除,并使用该对应的会话Id连接待访问数据库服务器;
提交至数据库模块,用于将所述自由查询请求发送至相应的数据库服务器;
结果接收模块,用于接收相应的数据库服务器返回的查询结果;
结果返回模块,用于获得并返回查询结果。
存储模块,用于存储用户Id与会话Id的关系、前查询任务;
所述自由查询请求中包括会话Id和查询结果Id;
查询分析执行模块还用于:根据会话Id和查询结果Id,至已执行查询并未关闭的查询任务中查找相应会话Id和查询结果Id;若不存在,则使用该会话Id与数据库服务器建立jdbc连接,执行查询操作;
结果返回模块还用于:若存在,则将查询结果Id对应的查询结果返回。
本发明实施例还提供了一种大数据自由查询系统,
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述所述方法的计算机程序。
在本发明实施例中,与现有的针对每一次的查询都是一个新查询且快速消耗系统资源相比较,本发明在根据自由查询请求中包括的用户Id查询到不存在与该用户Id对应的会话Id时会为该用户Id配置会话Id,使用该会话Id与数据库服务器建立jdbc连接,执行查询操作,当存在与该用户Id对应的会话Id时,直接使用该对应的会话Id连接数据库服务器提交查询指令,无需重新建立连接,这样不存在每一次的查询都是一个新查询,不会快速消耗系统资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中提供的一种大数据自由查询系统的结构示意图;
图2是本发明实施例中提供的一种大数据自由查询方法的流程示意图;
图3是本发明实施例中提供的一种大数据自由查询方法的会话Id查询分析的流程示意图;
图4是本发明实施例中提供的一种大数据自由查询方法的返回查询结果的流程示意图;
图5是本发明实施例中提供的一种大数据自由查询装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中,图1是本发明实施例中大数据自由查询系统的结构示意图,如图1所示,本发明实施例中大数据自由查询系统可分为五个部分:客户端、大数据自由查询装置(下面图5所示)、数据库服务器(可以是多种类型的,比如各类关系数据库以及分布式数据库)、数据服务器、Mysql数据库。
Mysql数据库是做为配置数据库存在,存储如数据库服务器信息(主要是数据库服务器的接口信息)、用户信息、表视图权限信息、记录用户查询记录等,并不记录查询结果,Mysql数据库服务器基于数据库服务器信息、表视图权限信息对大数据自由查询装置进行配置,用于设定大数据自由查询装置可以访问哪些数据库,可以访问哪些数据表,配置信息并不需要读取,系统启动时已初始进内存中。Mysql数据库服务器中只存储已执行完毕或正在执行的描述信息,用于展示,不存储具体的任务信息如对应的jdbc信息。Mysql数据库不会存储会话上关联的实时信息,只是做为配置出现。所有涉及任务的创建、清理、删除、识别是否存在均在内存中,不涉及mysql数据库的操作。所有涉及的操作都在装置中实现。Mysql服务器只是存储系统用户信息、数据库连接信息(IP,用户名,密码)及权限信息。Mysql数据库服务器也可以是大数据自由查询装置本身的一个存储设置模块,存储如数据库服务器信息(主要是数据库服务器的接口信息)、用户信息、表视图权限信息、记录用户查询记录等,基于数据库服务器信息、表视图权限信息对大数据自由查询装置进行配置,用于设定大数据自由查询装置可以访问哪些数据库,可以访问哪些数据表。
而数据服务器在本发明中为Redis缓存,其用来缓存查询数据。
自由查询装置是指实现针对不同数据库、不同系统的查询的通用功能。执行查询过程中实时自动数据库用户切换、数据库切换、权限控制等(如根据系统配置用户可用的数据库类型、数据库用户执行查询),是支持sql查询方式的一种扩展,本身不提供数据结果存储功能。支持各类关系数据库以及分布式数据库。
该自由查询系统运行流程为:自由查询装置接收客户端的查询指令,在Mysql数据库中调用涉及该查询的信息,然后向数据库服务器提交相应的查询指令,并接收数据库服务器查询的数据结果,将其反馈至客户端,并将数据结果缓存于Redis缓存中。查询操作是在数据库服务器上完成。本装置是提交到数据库服务器上执行前的流程限制及优化。
在本发明实施例中,图2是本发明实施例中大数据自由查询方法的流程示意图,如图2所示,该方法包括:
步骤201:接收客户端发送的自由查询请求,所述自由查询请求中包括用户Id、待访问数据库服务器标识;
步骤202:根据已存储的用户Id与会话Id的关系确定是否存在与用户Id相对应的会话Id,若不存在,则为所述用户Id配置会话Id,根据待访问数据库服务器标识,与待访问数据库服务器建立jdbc连接,若存在,则将该对应的会话Id已存在的前查询任务删除,并使用该对应的会话Id连接待访问数据库服务器;
步骤203:将所述自由查询请求发送至相应的数据库服务器;
步骤204:接收相应的数据库服务器返回的查询结果;
步骤205:并将查询结果返回至客户端。
为了更好地解释本发明的实施例,下面将对本实施例中涉及的专有名词进行解释:
自由查询,在本发明中是指当前各类数据仓库系统包含数据量越来越大,使用系统的用户也逐渐从专业开发人员至业务人员直接使用过渡。与数据仓库相应的BI系统也从传统CS结构逐步转向BS架构。在BI前端功能中,用户在日常数据查询中需要对各类数据进行灵活查询,此时一般采用预定义查询及编写sql语句的方式来实现,sql语法简单、用法自由灵活,大大提高了数据获取的效率、降低获取数据的开发难度。针对此类系统上进行的自定义sql操作称为自由查询。
数据库标识,用来指定使用哪个数据库用户(非用户ID)访问数据库。
下面结合附图3至图5,对本发明实例涉及的各个步骤进行详细介绍如下。
在本实施例中,还包括:对所述自由查询请求进行分析,判断该自由查询请求中是否包括多个请求,若是,则将多个请求生成组合查询任务。
具体的,当该查询语句是多语句查询时,进行解析语句列表生成组合查询任务(groupTask),自由查询装置接收反馈得到组合查询Id(groupId),并直接提交至线程池执行该查询任务。
sql语句解析、组查询控制均为自由查询装置功能。组查询时会生成groupId标识一系列查询,系统会逐个执行组中的任务,缓存结果供查询。为保证查询时效性,允许客户端非实时获取组查询结果,可定期使用groupId去查询数据。
当该查询语句是单语句查询时,进行步骤202。
在本实施例中,会话Id(SessionId)也就是sqlId,也可称作页面窗口,即理解为该页面窗口的唯一标识,标识系统中正在执行的查询,对应维护一个与数据库的连接。
本方法支持所有可通过jdbc连接的数据库。针对客户端每个新查询窗口,系统会分配唯一SessionId并维护一条对应的jdbc连接。后续该客户端查询窗口执行的查询均会使用该SessionId的jdbc连接,当窗口执行新查询时会释放该SessionId对应的jdbc对应的已有查询以使用该jdbc连接。通过session唯一性校验以及查询实时监控控制连接的打开与释放。在本实施例中,用户Id对应一或多个会话Id,会话Id对应一或多个数据库服务器。
在本实施例中,本方案能动态控制数据查询连接的关闭时机,保证用户数据查询的效率与一致性。当用户未执行过查询则创建连接;若之前已有连接,则根据SessionId释放之前连接。
在本实施例中,还包括:对查询操作的执行时间进行监测,若执行时间超过预设执行时间阈值,则中止该查询。
具体的,设置查询超时时间与最大执行时间(最长等待时间),当超过预设的查询超时时间却未完成查询时会将此查询放入后台继续执行直至成功或超过最大执行时间;如超过指定最大执行时间(最长等待时间)或用户主动请求时则清理该连接,中止查询,以此来提升用户体验。
在本实施例中,还包括:
若在同一时间接收到同一会话Id对应的多个自由查询请求,执行接收的第一个查询请求,拒绝其他的查询请求。
具体的,同一SessionId(页面窗口)同一时间只能执行一个查询,重复提交的查询请求会被拒绝;
在本实施例中,所述自由查询请求为自由查询sql语句;
还包括:
分析sql语句的类型,若类型为DQL,则执行完查询请求操作后保持连接;若类型为DDL或DML,则执行完操作关闭连接。
具体的,当解析自由查询中涉及的查询类型时,如select、create table、createview、create procedure等,分别调用不同的执行方法执行并返回结果。
在本实施例中,还包括:
对自由查询sql语句的正确性和/或语句中涉及到的表权限进行校验:
具体的,通过词法与语法分析对sql语句的正确性进行校验并对语句中涉及的表权限进行校验。如用户提交执行insert into tableA select*from tableB;装置首先进行语法分析,验证select语法的正确性。若通过语法分析,提取通过语法分析中识别到的表名。并对表进行权限验证,如此语句需要对tableA有insert权限,对tableB有查询权限。此步骤为提升稳定性与安全性,并不影响系统整体的流程功能。
在本发明实施例中,图3是本发明实施例中提供的一种大数据自由查询方法的会话Id查询分析的流程示意图,也就是步骤202的示意图,如图3所示,该流程包括:
步骤1:接收客户端提交的自由查询语句,进行“生成查询任务(Task)”步骤,分配给查询语句该一会话Id,判断该“sqlId是否为空”,来判断是否已存在该sqlId:
当该sqlId不为空时,根据sqlId确定查询任务(queryTasks),并按照步骤2操作;
当根据sqlId确定查询任务(queryTasks)不存在时,则“新建查询Task”,并“更新所有Task列表”,并“提交至线程池执行”。
步骤2:当判断queryTasks已经存在时,并且该Task正在执行时,则向客户端窗口返回错误信息,表示该Task正在执行,用户所提交的自由查询语句已存在;
当判断queryTasks不存在时,则“新建查询Task”,并“更新所有Task列表”,并“提交至线程池执行”;
当判断queryTasks已经存在时,但该Task不在执行时,则对其状态是否正常判断:
当状态异常时,则“关闭此Task”,并“新建查询Task”,并“更新所有Task列表”,并“提交至线程池执行”;
当状态正常时,则进行步骤3。
查询Id(queryId)是指每个查询的唯一标识,在本实施例中,是指当查询连接建立后,通过此queryId可连接至上次查询结果。
步骤3:判断“是否queryId需要查询上次结果”:
如果需要查询上次查询结果,则“直接读取Task中resultset”,通过此操作,可获取上次查询结果,并“返回结果集”;
如果不需要上次查询结果,则“更新Task信息,适用上次连接执行新查询”,并“提交至线程池执行”。
查询上次结果的意义:可举例如使用上次的查询继续读取数据,如已读取100条,需要读取下100条。
当在一个jdbc连接上进行流式查询时,由于涉及网络保持,该查询需要独占连接,即在该查询未结果前该连接上不允许执行其它查询。因此使用流式连接需要动态的管理与利用,提高连接的复用。本发明实施例中使用Redis保存查询结果,用于后台执行的语句获取查询结果。如组查询、超时后台执行的查询。本方法通过动态可扩展资源池的方式进行连接的创建管理,根据用户的查询请求动态创建与释放连接。如新查询会创建新连接,同一窗口的再次查询会释放之前的连接。超时或异常的连接会自动关闭。避免流式的排他查询引起的资源争抢与保证系统低延迟与稳定性。
一具体实施例为:
1.如对客户端窗口自由查询语句分析得到语句“Select*from tableA”时,则操作如下:
a.系统通过语法分析提交语句为单条语句,生成Task;
b.若查询请求中包含sqlId(SessionId)与queryId(每个查询的唯一标识),则首先至已执行查询并未关闭的TASK中查找相应查询,若存在则直接返回数据,否则新建TASK执行查询;
若为新TASK,则初始化连接、用户等信息后提交至线程池等待调度执行。
2.如对客户端窗口自由查询语句分析得到语句“Select*from tableA;Select*from tableB”时,则操作如下:
系统识别为组查询则创建组查询并提交至线程池等待调度执行。
另外,在本发明中使用流式读取方式控制数据的延迟读取,保证数据读取的效率与一致性。普通jdbc查询会一次性读取查询语句对应的数据结果至内存,当数据量较大时会严重影响系统性能。流式读取通过动态的每次一行的方式来读取返回的结果集,程序可自主控制接收的数据大小,优化网络和系统的处理能力。如客记端执行(select*fromtable1),若表table1有10亿条记录,普通的jdbc方式会将10亿条记录全部一次性返回至客户端导致系统内存溢出,使用流式处理则可按需返回数据,当前200条数据已满足业务需求,后续数据不需要的时候可直接关闭连接。此外针对gbase等分布式数据库,每次查询返回的结果顺序可能会不一致,而大表的排序非常耗时,普通的使用limit(Mysql)或rownum(方式)进行分页查询实际是每次分布都是一个新查询,因此要求查询的结果集必须为有序,否则可能导致翻页结果的不准确。而采用流式处理只需要执行一次查询,如需分页直接进行数据读取即可。
在本实施例中,所述自由查询请求中还包括会话Id和查询结果Id;
还包括:
根据会话Id和查询结果Id,至已执行查询且并未关闭的查询任务中查找相应会话Id和查询结果Id,若存在,则将查询结果Id对应的查询结果返回,若不存在,则使用该会话Id与数据库服务器建立jdbc连接,向数据库服务器提交查询指令,具体操作流程如图4所示。
在本发明实施例中,图4是本发明实施例中提供的一种大数据自由查询方法的返回查询结果的流程示意图,也就是步骤203与步骤204的示意图,当线程池有可用空闲线程时开始调度该查询,如图4所示,该流程包括:
1.更新TASK状态为正在运行(RUNNING);
2.若查询参数中包含查询的唯一标识查询Id(queryId),则直接读取查询中已有的resultSet中数据并返回。
3.若不包含queryId,或者queryId未能匹配出已执行完毕的查询,则初始化数据库服务器连接。
4.检查用户是否有查询语句中涉及对象的权限,若无权限则更新TASK状态为失败并返回退出。
5.根据语句的类型(DQL,DDL、DML)判断执行语句的方式。需要返回结果的查询(DQL)采取执行查询(executeQuery)操作,保持连接;修改数据的DDL、DML执行执行更新(executeUpdate),完成后关闭连接。
6.根据执行的返回信息更新TASK状态为成功或失败。
7.若为查询语句,获取查询结果并返回。
8.若为DDL,DML语句,则返回相应的执行返回信息。
9.成功执行的查询语句若有未读取的结果集,则连接会保持直至数据读取完毕或者超时被关闭。
最后介绍本方案的系统及用户级别的并发控制机制。
在本实施例中,还包括:
设置查询总数上限及用户的查询数上限;
根据查询总数上限及用户的查询数上限,对接收的自由查询请求进行限制。
具体的,动态控制系统连接使用的上限,系统中设置同一数据库用户的并发上限及业务用户的并发上限,控制系统的总并发查询请求数及每个用户的并发查询请求数。系统中针对每个数据用户建立连接池创建与回收连接。系统自动针对用户创建查询的线程池,用户提交的查询均使用线程池控制同时执行的查询上限。上限可根据系统资源及业务使用场景进行动态调整,可实现自定义的基于配置的权限管理。
基于同一发明构思,本发明实施例中还提供了一种大数据自由查询装置,如下面的实施例所述。由于大数据自由查询装置解决问题的原理与大数据自由查询方法相似,因此大数据自由查询装置的实施可以参见大数据自由查询方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
在本发明实施例中,图5是本发明实施例中提供的一种大数据自由查询装置的结构示意图,如图5所示,该装置包括:
自由查询请求接收模块02,用于接收客户端发送的自由查询请求,所述自由查询请求中包括用户Id、待访问数据库服务器标识;
查询分析执行模块04,用于根据已存储的用户Id与会话Id的关系确定是否存在与用户Id相对应的会话Id,若不存在,则为所述用户Id配置会话Id,根据待访问数据库服务器标识,与待访问数据库服务器建立jdbc连接,若存在,则将该对应的会话Id已存在的前查询任务删除,并使用该对应的会话Id连接待访问数据库服务器;
提交至数据库模块06,用于将所述自由查询请求发送至相应的数据库服务器;
结果接收模块08,用于接收相应的数据库服务器返回的查询结果;
结果返回模块10,用于获得并返回查询结果;
存储模块12,用于存储用户Id与会话Id的关系、前查询任务。
本发明实施例中,查询分析执行模块04还用于:对所述自由查询请求进行分析,判断该自由查询请求中是否包括多个请求,若是,则将多个请求生成组合查询任务。
本发明实施例中,查询分析执行模块04还用于:对查询操作的执行时间进行监测,若执行时间超过预设执行时间阈值,则中止该查询。
本发明实施例中,查询分析执行模块04还用于:若在同一时间接收到同一会话Id对应的多个查询操作请求,执行接收的第一个查询操作,拒绝其他的查询操作请求。
本发明实施例中,所述自由查询请求为自由查询sql语句;
查询分析执行模块04还用于:
分析sql语句的类型,若类型为DQL,则执行完查询请求操作后保持连接;若类型为DDL或DML,则执行完操作关闭连接。
本发明实施例中,查询分析执行模块04还用于:对自由查询sql语句的正确性和/或语句中涉及到的表权限进行校验。
本发明实施例中,查询分析执行模块04还用于:对连接的未使用时长进行监控,若未使用时长超过预设时间,则关闭该连接。
本发明实施例中,还包括:监测查询上限设置,用于设置查询总数上限及用户的查询数上限;
根据查询总数上限及用户的查询数上限,对接收的自由查询请求进行限制。
本发明实施例中,所述自由查询请求中还包括会话Id和查询结果Id;
查询分析执行模块04还用于:根据会话Id和查询结果Id,至已执行查询并未关闭的查询任务中查找相应会话Id和查询结果Id;若不存在,则使用该会话Id与数据库服务器建立jdbc连接,执行查询操作;
结果接收模块08还用于:若存在,则将查询结果Id对应的查询结果返回。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述所述方法的计算机程序。
本发明实施例提供技术方案的有益技术效果是:
本发明基于灵活的控制实现了自由查询的稳定、全面支持,能保障系统运行稳定,并全面支持各类数据库如oracle、Mysql以及新型分布式数据库如GBASE等各类数据库,还能实现对自由查询的系统及用户级别并发控制,提供对DDL、DML等各类语句的支持,基于批量控制实现数据持续、分批读取,并解决大数据量下的数据查询效率与一致性问题。
与现有的针对每一次的查询都是一个新查询且快速消耗系统资源相比较,本发明在根据自由查询请求中包括的用户Id查询到不存在与该用户Id对应的会话Id时会为该用户Id配置会话Id,使用该会话Id与数据库服务器建立jdbc连接,执行查询操作,当存在与该用户Id对应的会话Id时,直接使用该对应的会话Id连接数据库服务器执行查询操作,连接的建立相对消耗资源,此方式无需重新建立连接,这样不存在每一次的查询都是一个新查询,不会快速消耗系统资源,而且通过管理、维护并尽可能的复用连接还可以来提高效率。
基于本发明,BI系统在对用户提供服务时,可针对不同数据库直接适配,不需要重新开发。用户在进行自由查询时,系统的调度与控制功能可保证用户查询的效率与一致性。此外,系统及用户级的并发控制可保证系统的稳定性与安全性,保证与提升用户体验。
本发明能提供对查询的并发控制与读取优化,提供对DDL、DML等各类语句的支持,可灵活控制并发数至用户级。通过对连接的使用优化来提高查询效率,满足大数量、实时查询场景下的数据查询效率与一致性问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种大数据自由查询方法,其特征在于,该方法包括:
接收客户端发送的自由查询请求,所述自由查询请求中包括用户Id、待访问数据库服务器标识;
根据已存储的用户Id与会话Id的关系确定是否存在与用户Id相对应的会话Id,若不存在,则为所述用户Id配置会话Id,根据待访问数据库服务器标识,与待访问数据库服务器建立jdbc连接,若存在,则将该对应的会话Id已存在的前查询任务删除,并使用该对应的会话Id连接待访问数据库服务器;
将所述自由查询请求发送至相应的数据库服务器;
接收相应的数据库服务器返回的查询结果;
并将查询结果返回至客户端;
所述自由查询请求中还包括会话Id和查询结果Id;
还包括:
根据会话Id和查询结果Id,至已执行查询且并未关闭的查询任务中查找相应会话Id和查询结果Id,若存在,则将查询结果Id对应的查询结果返回,若不存在,则使用该会话Id与数据库服务器建立jdbc连接,向数据库服务器提交查询指令。
2.根据权利要求1所述的大数据自由查询方法,其特征在于,还包括:对所述自由查询请求进行分析,判断该自由查询请求中是否包括多个查询语句,若是,则将多个查询语句生成组合查询任务。
3.根据权利要求1所述的大数据自由查询方法,其特征在于,还包括:对查询操作的执行时间进行监测,若执行时间超过预设执行时间阈值,则中止该查询。
4.根据权利要求1所述的大数据自由查询方法,其特征在于,还包括:
若在同一时间接收到同一会话Id对应的多个自由查询请求,执行接收的第一个查询请求,拒绝其他的查询请求。
5.根据权利要求1所述的大数据自由查询方法,其特征在于,所述自由查询请求为自由查询sql语句;
还包括:
分析sql语句的类型,若类型为DQL,则执行完查询请求操作后保持连接;若类型为DDL或DML,则执行完操作关闭连接。
6.根据权利要求1所述的大数据自由查询方法,其特征在于,还包括:
对自由查询sql语句的正确性和/或语句中涉及到的表权限进行校验。
7.根据权利要求1所述的大数据自由查询方法,其特征在于,还包括:
对连接的未使用时长进行监控,若未使用时长超过预设时间,则关闭该连接。
8.根据权利要求1所述的大数据自由查询方法,其特征在于,还包括:
设置查询总数上限及用户的查询数上限;
根据查询总数上限及用户的查询数上限,对接收的自由查询请求进行限制。
9.一种大数据自由查询装置,其特征在于,包括:
自由查询请求接收模块,用于接收客户端发送的自由查询请求,所述自由查询请求中包括用户Id、待访问数据库服务器标识;
查询分析执行模块,用于根据已存储的用户Id与会话Id的关系确定是否存在与用户Id相对应的会话Id,若不存在,则为所述用户Id配置会话Id,根据待访问数据库服务器标识,与待访问数据库服务器建立jdbc连接,若存在,则将该对应的会话Id已存在的前查询任务删除,并使用该对应的会话Id连接待访问数据库服务器;
提交至数据库模块,用于将所述自由查询请求发送至相应的数据库服务器;
结果接收模块,用于接收相应的数据库服务器返回的查询结果;
结果返回模块,用于获得并返回查询结果;
存储模块,用于存储用户Id与会话Id的关系、前查询任务;
所述自由查询请求中包括会话Id和查询结果Id;
查询分析执行模块还用于:根据会话Id和查询结果Id,至已执行查询并未关闭的查询任务中查找相应会话Id和查询结果Id;若不存在,则使用该会话Id与数据库服务器建立jdbc连接,执行查询操作;
结果返回模块还用于:若存在,则将查询结果Id对应的查询结果返回。
10.根据权利要求9所述的大数据自由查询装置,其特征在于,查询分析执行模块还用于:对所述自由查询请求进行分析,确定该自由查询请求中是否包括多个请求,若是,则将多个请求生成group查询任务。
11.根据权利要求9所述的大数据自由查询装置,其特征在于,所述自由查询请求为自由查询sql语句;
查询分析执行模块还用于:分析sql语句的类型,若类型为DQL,则执行完查询请求操作后保持连接;若类型为DDL或DML,则执行完操作关闭连接。
12.根据权利要求9所述的大数据自由查询装置,其特征在于,还包括监测查询上限设置模块:
用于设置查询总数上限及用户的查询数上限;
根据查询总数上限及用户的查询数上限,对接收的自由查询请求进行限制。
13.一种大数据自由查询系统,其特征在于,包括:
客户端;
如权利要求9至12任一所述的大数据自由查询装置;
Mysql数据库;
数据库服务器。
14.根据权利要求13所述的大数据自由查询系统,其特征在于,还包括:数据服务器,用于存储查询结果。
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8任一所述方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至8任一所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910889884.3A CN110580258B (zh) | 2019-09-20 | 2019-09-20 | 大数据自由查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910889884.3A CN110580258B (zh) | 2019-09-20 | 2019-09-20 | 大数据自由查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110580258A CN110580258A (zh) | 2019-12-17 |
CN110580258B true CN110580258B (zh) | 2022-05-17 |
Family
ID=68813214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910889884.3A Active CN110580258B (zh) | 2019-09-20 | 2019-09-20 | 大数据自由查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110580258B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051265A (zh) * | 2019-12-27 | 2021-06-29 | 中信百信银行股份有限公司 | 一种降低关系型数据库表结构变更所带来损耗的方法、装置、计算机设备、和可读存储介质 |
CN111552675A (zh) * | 2020-04-24 | 2020-08-18 | 北京达佳互联信息技术有限公司 | 信息查询方法、装置、计算机设备及存储介质 |
CN111782923A (zh) * | 2020-06-24 | 2020-10-16 | 平安科技(深圳)有限公司 | 数据查询方法、装置、电子设备及存储介质 |
CN111797121B (zh) * | 2020-07-02 | 2023-08-25 | 中国工商银行股份有限公司 | 读写分离架构业务系统的强一致性查询方法、装置及系统 |
CN112948075B (zh) * | 2021-02-04 | 2024-02-27 | 北京淇瑀信息科技有限公司 | 任务拥堵处理方法、装置和电子设备 |
CN113095840A (zh) * | 2021-04-30 | 2021-07-09 | 中国银行股份有限公司 | 一种分布式交易暂挂续作的方法、装置及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101860449A (zh) * | 2009-04-09 | 2010-10-13 | 华为技术有限公司 | 一种数据查询方法、装置及系统 |
CN102004777A (zh) * | 2010-11-19 | 2011-04-06 | 中国科学院软件研究所 | 一种可定制的Web信息集成方法及系统 |
CN104090937A (zh) * | 2014-06-27 | 2014-10-08 | 陆冬艳 | 一种基于云计算的数据库访问方法及系统 |
CN106528574A (zh) * | 2015-09-14 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及设备 |
CN109327535A (zh) * | 2018-11-09 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种数据库访问方法、系统、中间件设备及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8640202B2 (en) * | 2007-10-04 | 2014-01-28 | International Business Machines Corporation | Synchronizing user sessions in a session environment having multiple web services |
DE102008045425B3 (de) * | 2008-09-02 | 2009-08-13 | Infineon Technologies Ag | Verfahren zur Ermittlung aktiver Kommunikationssitzungen, Kommunikationssitzungs-Informationsserver, Verfahren zum Bereitstellen einer Information über aktive Kommunikationssitzungen und Dokumentenmanagement-Server |
US9405887B2 (en) * | 2011-12-08 | 2016-08-02 | Verizon Patent And Licensing Inc. | Limiting concurrent viewing sessions on multiple user devices |
CN105912624B (zh) * | 2016-04-07 | 2019-05-24 | 北京中安智达科技有限公司 | 分布式部署的异构数据库的查询方法 |
CN109617955A (zh) * | 2018-12-04 | 2019-04-12 | 山东浪潮通软信息科技有限公司 | 一种基于分布式缓存的无状态会话分层管理实现方法 |
-
2019
- 2019-09-20 CN CN201910889884.3A patent/CN110580258B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101860449A (zh) * | 2009-04-09 | 2010-10-13 | 华为技术有限公司 | 一种数据查询方法、装置及系统 |
CN102004777A (zh) * | 2010-11-19 | 2011-04-06 | 中国科学院软件研究所 | 一种可定制的Web信息集成方法及系统 |
CN104090937A (zh) * | 2014-06-27 | 2014-10-08 | 陆冬艳 | 一种基于云计算的数据库访问方法及系统 |
CN106528574A (zh) * | 2015-09-14 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及设备 |
CN109327535A (zh) * | 2018-11-09 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种数据库访问方法、系统、中间件设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110580258A (zh) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110580258B (zh) | 大数据自由查询方法及装置 | |
US10733208B1 (en) | Query plans for analytic SQL constructs | |
CN109144994B (zh) | 索引更新方法、系统及相关装置 | |
EP3285178B1 (en) | Data query method in crossing-partition database, and crossing-partition query device | |
US20180225350A1 (en) | Query dispatching system and method | |
US11061895B2 (en) | Adaptive granule generation for parallel queries with run-time data pruning | |
US7809882B1 (en) | Session independent backend data cache system | |
WO2017197830A1 (zh) | 一种查询方法以及查询设备 | |
CN108090056B (zh) | 数据查询方法、装置及系统 | |
US11507575B2 (en) | Complex query rewriting | |
CN111488378A (zh) | 一种基于Rewriter的MySQL数据库的查询优化方法 | |
US20230359622A1 (en) | Blocked index join |
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 |