首页 / 专利库 / 动物学 / 访问 / 分布式数据库的数据访问方法及其系统

分布式数据库的数据访问方法及其系统

阅读:575发布:2023-03-10

专利汇可以提供分布式数据库的数据访问方法及其系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种分布式 数据库 的数据 访问 方法及其系统,该方法包括:根据预设的判定规则识别出热点数据;加载该热点数据,并缓存到本地;接收SQL 请求 ,对SQL请求进行解析,获取表名;判断表名是否属于热点数据表;若是,则判断SQL请求是否为查询类SQL,若是,则从本地缓存的数据中获取结果集返回给客户端。该系统包括:至少一个数据库代理模 块 ,用于识别出热点数据,将热点数据的表信息进行上报并缓存到本地;还用于对热点数据表相关的查询类SQL,从本地缓存的数据中获取结果集返回给客户端;同步模块,用于接收数据库代理模块的上报的热点数据的表信息并进行广播。本发明大大降低对数据库集群的访问,降低对数据库集群的压 力 。,下面是分布式数据库的数据访问方法及其系统专利的具体信息内容。

1.一种分布式数据库的数据访问方法,应用于数据库代理模,其特征在于,包括:
根据预设的判定规则识别出热点数据;
从数据库集群节点中加载所述热点数据,并缓存到本地;
接收SQL请求,对所述SQL请求进行解析,获取表名;
判断所述表名是否属于热点数据表;若是,则
判断所述SQL请求是否为查询类SQL,若是,则
从本地缓存的数据中获取结果集返回给客户端。
2.根据权利要求1所述分布式数据库的数据访问的方法,其特征在于,若所述SQL请求不是查询类SQL,则:
通知同步模块使所述热点数据表信息处于下线状态;
将所述SQL请求下发到数据库集群执行;
执行成功后,通知所述同步模块使所述热点数据表信息处于活跃状态。
3.根据权利要求2所述分布式数据库的数据访问的方法,其特征在于,所述通知同步模块使所述热点数据表信息处于下线状态之前,还包括:
判断所述热点数据表信息中是否含有hint信息,若是,则
直接将所述SQL请求下发到数据库集群执行。
4.根据权利要求1所述分布式数据库的数据访问的方法,其特征在于,所述接收SQL请求之前,还包括:
到同步模块进行注册,将识别出的热点数据的表信息发送给同步模块。
从所述同步模块获取其他数据库代理模块发送的热点数据的表信息。
5.一种分布式数据库的数据访问的方法,其特征在于,应用于同步模块,包括:
接收至少一个数据库代理模块的注册请求;
接收所述至少一个数据库代理模块上报的热点数据的表信息;
将所述热点数据的表信息进行广播。
6.根据权利要求5所述分布式数据库的数据访问的方法,其特征在于,所述将所述热点数据的表信息进行广播之后,还包括:
接收第一数据库代理模块发出的修改热点数据的表数据或者表结构的第一通知;
将被修改的热点数据的表信息的状态修改为下线状态,并进行广播;
接收所述第一数据库代理模块发出的修改成功的第二通知;
将被修改的热点数据的表信息的状态修改为上线状态或活跃状态,并进行广播。
7.一种分布式数据库的数据访问系统,其特征在于,包括:
至少一个数据库代理模块,用于根据预设的判定规则识别出热点数据,并将所述热点数据的表信息进行上报;从数据库集群节点中加载所述热点数据,并缓存到本地;还用于接收SQL请求,对所述SQL请求进行解析,获取表名;若所述表名属于热点数据表,且所述SQL请求为查询类SQL,则从本地缓存的数据中获取结果集返回给客户端;
同步模块,用于接收所述至少一个数据库代理模块的注册请求及其上报的热点数据的表信息,并将所述热点数据的表信息进行广播。
8.根据权利要求7所述分布式数据库的数据访问系统,其特征在于,所述数据库代理模块,还用于:
若接收到修改热点数据的表数据或者表结构的SQL请求,则向所述同步模块发出第一通知;
将所述SQL请求下发到数据库集群执行,并在执行成功后,向所述同步模块发出第二通知。
9.根据权利要求8所述分布式数据库的数据访问系统,其特征在于,所述同步模块,还用于若接收到所述第一通知,则将被修改的热点数据的表信息的状态修改为下线状态,并进行广播;若接收到所述第二通知,则将被修改的热点数据的表信息的状态修改为上线状态或活跃状态,并进行广播。
10.根据权利要求8所述分布式数据库的数据访问系统,其特征在于,所述数据库代理模块在向所述同步模块发出第一通知之前,还用于判断所述热点数据表信息中是否含有hint信息,若是,则直接将所述SQL请求下发到数据库集群执行。

说明书全文

分布式数据库的数据访问方法及其系统

技术领域

[0001] 本发明涉及分布式数据库技术领域,尤其涉及一种分布式数据库的数据访问方法及其系统。

背景技术

[0002] 随着数据库技术的发展,分布式数据库系统逐渐取代了集中式数据库系统,然而伴随着分布式数据库系统的广泛应用,其所涉及的查询效率以及性能问题也就随之而来,因此分布式数据库的查询优化成为分布式数据库领域的研究热点之一。
[0003] 目前,在分布式数据库架构下,所有的读写请求都需要经过数据库代理模下发到数据库集群节点执行,相对于单机数据库来说,分布式数据库执行的路径变长,时延会变长,性能下降。

发明内容

[0004] 有鉴于此,本发明的目的在于提供一种分布式数据库的数据访问方法及其系统,不需要再将所有的SQL请求都下发到数据库集群节点,大大降低了SQL请求的时延,同时分布式数据库查询性能大幅度提升。
[0005] 本发明解决上述技术问题所采用的技术方案如下:
[0006] 根据本发明的一个方面,提供一种分布式数据库的数据访问方法,包括:
[0007] 根据预设的判定规则识别出热点数据;
[0008] 从数据库集群节点中加载所述热点数据,并缓存到本地;
[0009] 接收SQL请求,对所述SQL请求进行解析,获取表名;
[0010] 判断所述表名是否属于热点数据表;若是,则
[0011] 判断所述SQL请求是否为查询类SQL,若是,则
[0012] 从本地缓存的数据中获取结果集返回给客户端。
[0013] 在一个可能的设计中,若所述SQL请求不是查询类SQL,则:
[0014] 通知同步模块使所述热点数据表信息处于下线状态;
[0015] 将所述SQL请求下发到数据库集群执行;
[0016] 执行成功后,通知所述同步模块使所述热点数据表信息处于活跃状态。
[0017] 在一个可能的设计中,所所述通知同步模块使所述热点数据表信息处于下线状态之前,还包括:
[0018] 判断所述热点数据表信息中是否含有hint信息,若是,则
[0019] 直接将所述SQL请求下发到数据库集群执行。
[0020] 在一个可能的设计中,所述接收SQL请求之前,还包括:
[0021] 到同步模块进行注册,将识别出的热点数据的表信息发送给同步模块。
[0022] 从所述同步模块获取其他数据库代理模块发送的热点数据的表信息。
[0023] 根据本发明的另一个方面,提供一种分布式数据库的数据访问的方法,应用于同步模块,包括:
[0024] 接收至少一个数据库代理模块的注册请求;
[0025] 接收所述至少一个数据库代理模块上报的热点数据的表信息;
[0026] 将所述热点数据的表信息进行广播。
[0027] 在一个可能的设计中,所述将所述热点数据的表信息进行广播之后,还包括:
[0028] 接收第一数据库代理模块发出的修改热点数据的表数据或者表结构的第一通知;
[0029] 将被修改的热点数据的表信息的状态修改为下线状态,并进行广播;
[0030] 接收所述第一数据库代理模块发出的修改成功的第二通知;
[0031] 将被修改的热点数据的表信息的状态修改为上线状态或活跃状态,并进行广播。
[0032] 根据本发明的另一个方面,提供一种分布式数据库的数据访问系统,包括:
[0033] 至少一个数据库代理模块,用于根据预设的判定规则识别出热点数据,并将所述热点数据的表信息进行上报;从数据库集群节点中加载所述热点数据,并缓存到本地;还用于接收SQL请求,对所述SQL请求进行解析,获取表名;若所述表名属于热点数据表,且所述SQL请求为查询类SQL,则从本地缓存的数据中获取结果集返回给客户端;
[0034] 同步模块,用于接收所述至少一个数据库代理模块的注册请求及其上报的热点数据的表信息,并将所述热点数据的表信息进行广播。
[0035] 在一个可能的设计中,所述数据库代理模块,还用于:
[0036] 若接收到修改热点数据的表数据或者表结构的SQL请求,则向所述同步模块发出第一通知;
[0037] 将所述SQL请求下发到数据库集群执行,并在执行成功后,向所述同步模块发出第二通知。
[0038] 在一个可能的设计中,所述同步模块,还用于若接收到所述第一通知,则将被修改的热点数据的表信息的状态修改为下线状态,并进行广播;若接收到所述第二通知,则将被修改的热点数据的表信息的状态修改为上线状态或活跃状态,并进行广播。
[0039] 在一个可能的设计中,所述数据库代理模块在向所述同步模块发出第一通知之前,还用于判断所述热点数据表信息中是否含有hint信息,若是,则直接将所述SQL请求下发到数据库集群执行。
[0040] 本发明实施例的分布式数据库的数据访问方法及其系统,通过在数据库代理模块缓存热点数据,使得查询热点数据的请求不再需要下发到数据库集群节点,大大降低了SQL请求的时延,同时分布式数据库查询性能大幅度提升。附图说明
[0041] 图1为本发明实施例的分布式数据库的数据访问系统的架构示意图;
[0042] 图2为本发明实施例的分布式数据库的数据访问系统的工作流程示意图;
[0043] 图3为本发明实施例的应用于数据库代理模块的分布式数据库的数据访问方法的流程示意图;
[0044] 图4为本发明另一实施例的应用于数据库代理模块的分布式数据库的数据访问方法的流程;
[0045] 图5为本发明另一实施例的应用于数据库代理模块的分布式数据库的数据访问方法的流程;
[0046] 图6为本发明另一实施例的应用于数据库代理模块的分布式数据库的数据访问方法的流程;
[0047] 图7本发明实施例的应用于同步模块的分布式数据库的数据访问方法的流程;
[0048] 图8本发明另一实施例的应用于同步模块的分布式数据库的数据访问方法的流程;
[0049] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0050] 为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0051] 在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
[0052] 如图1所示,本发明提供一种分布式数据库的数据访问系统,包括数据库集群104、元数据管理模块103、同步模块102以及至少一个数据库代理模块101。其中:
[0053] 数据库集群104由多个数据库(DB)构成,每个数据库是独立的数据库节点,用于对数据库代理模块101提供数据库服务。元数据管理模块103负责管理数据库元数据信息、表的分发策略、管理数据库代理模块。
[0054] 数据库代理模块101用于根据预设的判定规则识别出热点数据,并将所述热点数据的表信息进行上报;从数据库集群节点中加载所述热点数据,并缓存到本地;上述热点数据是指对某些数据库表的读请求数量远远高于写请求数量的数据,这些热点数据一般不会被修改,或者集中某个时间段才会被修改,其他时间都是读操作。因此,判定规则可以是设置读请求数量与写请求数量的比例阈值,查过该比例阈值即为热点数据;此外,还可以根据热点数据的特征,例如行的利率表这种不经常变动的数据即为热点数据。
[0055] 数据库代理模块101还用于接收SQL请求,对所述SQL请求进行解析,获取表名;若所述表名属于热点数据表,且所述SQL请求为查询类SQL,则从本地缓存的数据中获取结果集返回给客户端;否则,根据SQL请求的分发策略将SQL请求分发到不同的数据库集群节点上,然后处理数据库集群节点返回的结果集,最后返回给客户端。
[0056] 同步模块102用于接收所述至少一个数据库代理模块的注册请求及其上报的热点数据的表信息,并将所述热点数据的表信息进行广播。可见,同步模块102是负责推送和广播数据库代理模块之间的请求的。
[0057] 在上述实施例的基础上,所述数据库代理模块101还用于:若接收到修改热点数据的表数据或者表结构的SQL请求,则向所述同步模块发出第一通知;将所述SQL请求下发到数据库集群执行,并在执行成功后,向所述同步模块发出第二通知。
[0058] 所述同步模块102还用于若接收到所述第一通知,则将被修改的热点数据的表信息的状态修改为下线状态,并进行广播;若接收到所述第二通知,则将被修改的热点数据的表信息的状态修改为上线状态或活跃状态,并进行广播。也就是说,当某个数据库代理模块修改热点数据之前需要先通知同步模块,由同步模块广播给其他数据库代理模块,通知成功后,开始修改热点数据,修改成功后,再通过同步模块广播给其他数据库代理模块。
[0059] 可选地,所述数据库代理模块101在向所述同步模块发出第一通知之前,还用于判断所述热点数据表信息中是否含有hint信息,若是,则直接将所述SQL请求下发到数据库集群执行,不再通知同步模块。更具体地,客户端在做热点数据表的数据录入时insert语句含有hint信息(insert+hint),数据库代理模块则不去下线该热点数据表,也不去重新加载和更新缓存数据。该种方式主要应用于数据录入后,修改较少,且查询以单条记录为主的业务场景,通过在写语句中添加hint信息的方式不用下线热点数据表,这样读数据的性能大大提升。
[0060] 下面辅以图2进一步介绍本发明实施例提供的分布式数据库的数据访问系统:
[0061] 首先,第一数据库代理模块以及其他数据库代理模块分别执行步骤201、211,即到同步模块进行注册;
[0062] 然后,第一数据库代理模块以及其他数据库代理模块分别执行步骤202、212,即从同步模块获取热点数据表;
[0063] 第一数据库代理模块执行步骤203,即向同步模块上报热点数据的表信息;此时,同步模块会对热点数据的表信息相第一数据库代理模块以及其他数据库代理模块进行广播,即执行步骤204、213。
[0064] 当第一数据库代理模块需要修改热点数据时,可以先执行步骤205、通知同步模块下线热点数据表,由同步模块广播给所有的数据库代理模块,即执行步骤206、214,通知成功后,第一数据库代理模块开始修改热点数据,修改成功后,可以再通过同步模块广播给其他数据库代理模块。
[0065] 如图3所示,本发明实施例还提供一种分布式数据库的数据访问方法,应用于数据库代理模块,包括:
[0066] 301、开始;
[0067] 数据库代理模块到同步模块注册,并从同步模块获取热点数据的表信息,同时从元数据管理模块获取表的分发策略以及数据库的元数据信息。
[0068] 302、根据预设的判定规则识别出热点数据。
[0069] 上述热点数据是指对某些数据库表的读请求数量远远高于写请求数量的数据,这些热点数据一般不会被修改,或者集中某个时间段才会被修改,其他时间都是读操作。因此,判定规则可以是设置读请求数量与写请求数量的比例阈值,查过该比例阈值即为热点数据;此外,还可以根据热点数据的特征,例如银行的利率表这种不经常变动的数据即为热点数据。
[0070] 303、从数据库集群节点中加载所述热点数据,并缓存到本地。
[0071] 数据库集群由多个数据库(DB)构成,每个数据库是独立的数据库节点,用于对数据库代理模块提供数据库服务。本实施例中,还可以将识别出的热点数据的表信息发送给同步模块。
[0072] 304、接收SQL请求,对所述SQL请求进行解析,获取表名。
[0073] 305、判断所述表名是否属于热点数据表;若是,则进入步骤306;若否,则进入步骤308;
[0074] 在判断时可以与保存的热点数据表进行对比;
[0075] 306、判断所述SQL请求是否为查询类SQL,若是,则进入步骤307;若否,则进入步骤308;
[0076] 307、从本地缓存的数据中获取结果集返回给客户端。
[0077] 308、将所述SQL请求下发到数据库集群执行。
[0078] 309、结束。
[0079] 本实施例中,当客户端访问热点数据时,分布式数据代理无需将SQL请求下发到数据库集群,直接访问数据代理的缓存数据,将结果集返回给客户端,这样可以大大降低时延,提高查询的性能。
[0080] 如图4所示,本发明另一实施例提供一种分布式数据库的数据访问方法,应用于数据库代理模块,包括:
[0081] 401、启动数据库代理模块。
[0082] 402、获取元数据信息。
[0083] 元数据信息可以从元数据管理模块获取;元数据管理模块负责管理数据库元数据信息、表的分发策略、管理数据库代理模块。
[0084] 403、获取热点数据表信息并加载。
[0085] 更具体地,从同步模块获取热点数据表信息;同步模块负责推送和广播数据库代理模块之间的请求。同步模块可以接收所述至少一个数据库代理模块的注册请求及其上报的热点数据的表信息。
[0086] 上述热点数据是指对某些数据库表的读请求数量远远高于写请求数量的数据,这些热点数据一般不会被修改,或者集中某个时间段才会被修改,其他时间都是读操作。
[0087] 404、SQL解析。
[0088] 405、判断是否为热点数据;若是,则进入步骤408;若否,则进入步骤406。
[0089] 在判断时可以与保存的热点数据表进行对比;保存的热点数据表包括从同步模块获取热点数据表信息。
[0090] 406、下发数据库集群执行。
[0091] 数据库集群由多个数据库(DB)构成,每个数据库是独立的数据库节点,用于对数据库代理模块提供数据库服务。
[0092] 407、汇聚结果集。
[0093] 408、返回客户端。
[0094] 若为热点数据,则可以直接在本地汇聚结果集,返回至客户端。
[0095] 在图3或图4对应的实施例的基础上,本发明另一实施例提供一种分布式数据库的数据访问方法,若在步骤306、405中的判断结果为:热点数据对应的所述SQL请求不是查询类SQL;则如图5所示,执行以下步骤:
[0096] 501、开始;
[0097] 502、通知同步模块使所述热点数据表信息处于下线状态。
[0098] 503、将所述SQL请求下发到数据库集群执行。
[0099] 504、执行成功后,通知所述同步模块使所述热点数据表信息处于活跃状态。
[0100] 505、结束。
[0101] 可见,本实施例中,数据库代理模块收到非查询类SQL,例如修改热点数据的表数据或者表结构的SQL请求时,先通知同步模块,由同步模块通知其他数据库代理模块删除该表的热点数据;通知成功后,数据库代理模块根据表的分发策略,将SQL请求下发到数据库集群执行,执行成功后,也需要通知同步模块,由同步模块通知其他数据库代理模块加载该表的热点数据。
[0102] 可见,本实施例中,如果表名不属于热点数据表,则将SQL分解成单机数据节点可执行的SQL下发数据库集群处理。如果表名是热点数据表,分查询类SQL语句和非查询类SQL:
[0103] 对于非查询类SQL语句:本数据库代理模块需要通知同步模块将该表的状态设置为下线状态(该表的数据不能缓存),同步模块通知其他数据库代理模块将该表的数据缓存失效,数据库代理模块设置该表的状态为下线状态,同步模块收到所有数据库代理模块的成功响应后,同步模块通知本数据库代理模块继续执行,下发单机数据库节点可执行的SQL语句,数据库集群执行成功后,通知同步模块将该表状态设置为活跃状态,同步模块通知所有数据库代理模块重新加载该表的热点数据,加载成功后,将表的状态设置为活跃状态;
[0104] 对于查询类SQL语句:如果该表的状态为下线状态,则下发数据库集群执行。如果表的状态为活跃状态,则直接查数据库代理模块本地缓存的数据,不需要下发数据库集群执行。
[0105] 在图3或图4对应的实施例的基础上,本发明另一实施例提供一种分布式数据库的数据访问方法,若在步骤306、405中的判断结果为:热点数据对应的所述SQL请求不是查询类SQL;则如图6所示,执行以下步骤:
[0106] 601、开始。
[0107] 602、判断所述热点数据表信息中是否含有hint信息,若是,则进入步骤603;若否,则进入步骤604。
[0108] 603、将所述SQL请求下发到数据库集群执行。
[0109] 604、通知同步模块使所述热点数据表信息处于下线状态。
[0110] 605、将所述SQL请求下发到数据库集群执行。
[0111] 606、执行成功后,通知所述同步模块使所述热点数据表信息处于活跃状态。
[0112] 607、结束。
[0113] 本实施例中,客户端在做热点数据表的数据录入时insert语句含有hint信息(insert+hint),数据库代理模块则不去下线该热点数据表,也不去重新加载和更新缓存数据;而是直接将所述SQL请求下发到数据库集群执行。该种方式主要应用于数据录入后,修改较少,且查询以单条记录为主的业务场景,通过在写语句中添加hint信息的方式不用下线热点数据表,这样读数据的性能大大提升。
[0114] 根据本发明的另一个方面,还提供一种分布式数据库的数据访问的方法,应用于同步模块,如图7所示,包括:
[0115] 701、开始。
[0116] 702、接收至少一个数据库代理模块的注册请求。
[0117] 703、接收所述至少一个数据库代理模块上报的热点数据的表信息。
[0118] 704、将所述热点数据的表信息进行广播。
[0119] 广播后,已注册的数据库代理模块可以接收到所述热点数据的表信息。
[0120] 705、结束。
[0121] 在图7对应的实施例的基础上,本发明还提供一种分布式数据库的数据访问的方法,应用于同步模块,所述将所述热点数据的表信息进行广播之后,如图8所示,还包括:
[0122] 801、开始。
[0123] 802、接收第一数据库代理模块发出的修改热点数据的表数据或者表结构的第一通知。
[0124] 803、将被修改的热点数据的表信息的状态修改为下线状态,并进行广播。
[0125] 804、接收所述第一数据库代理模块发出的修改成功的第二通知。
[0126] 805、将被修改的热点数据的表信息的状态修改为上线状态或活跃状态,并进行广播。
[0127] 806、结束。
[0128] 本发明提供一种分布式数据库的数据访问方法及其系统,可以高效地满足以查询为主和少量修改的业务场景的性能要求,同时大大降低对数据库集群的访问,降低对数据库集群的压。本发明可以节省系统资源投入,提升系统性能,提升用户使用体验,对于分布式数据库的推广具有良好的示范意义,尤其是在教学、金融、政企、互联网等领域。
[0129] 以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
相关专利内容
标题 发布/更新时间 阅读量
账户访问 2020-05-11 207
域访问系统 2020-05-13 881
访问控制 2020-05-12 170
多字线访问和访问器 2020-05-12 217
访问控制 2020-05-11 1054
装置访问 2020-05-11 78
有条件访问 2020-05-13 797
访问口 2020-05-11 294
访问口 2020-05-11 271
数据访问系统 2020-05-13 73
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈