一种访问数据的方法及装置的制造方法

文档序号:9471431阅读:177来源:国知局
一种访问数据的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及计算机技术领域,特别涉及一种访问数据的方法及装置。
【背景技术】
[0002] 随着信息技术的发展,云计算已经逐步成为了业界的发展热点,云计算技术也逐 渐被应用到教育、科学、文化、公安、政府、卫生、高性能计算、电子商务、物联网等多个领域, 随之云计算服务平台的使用量和活跃度也与日倶增,平台业务数据量也爆发式激增。
[0003] 由于在云服务平台中,数据采用单表存储的方式,随着数据量的不断激增,一张数 据表中的记录数量可能会达到上千万甚至到达亿级别。当外部需要访问数据表时,可能需 要对当前数据表中的数据进行检索,由于该表中记录数量太多,造成检索量较大,数据库访 问效率较低。

【发明内容】

[0004] 有鉴于此,本发明提供了一种访问数据的方法及装置,能够提高访问效率。
[0005] -方面,本发明提供了一种访问数据的方法,包括:预先设置配置文件,所述配置 文件中保存有待分表的原表的信息;
[0006] Sl :获取外部输入的原表访问命令;
[0007] S2:判断所述原表访问命令对应的原表的信息是否保存在所述配置文件中,如果 是,则执行步骤S3 ;
[0008] S3 :根据所述原表访问命令确定从所述原表拆分出的所有子表中的待访问子 表;
[0009] S4 :将所述原表访问命令的访问对象修改为所述待访问子表,获得子表访问命 令;
[0010] S5 :根据所述子表访问命令,对所述待访问子表进行访问。
[0011] 进一步地,还包括:预先设置数据访问对象接口DAO接口对应的拦截器;
[0012]所述Sl,包括:通过所述拦截器拦截所述DAO接口接收到的所述原表访问命令。
[0013] 进一步地,所述预先设置拦截器,包括:预先将会话工厂SessionFactory的 entitylnterceptor属性设置为指向所述拦截器,为所述DAO接口配置所述拦截器。
[0014] 进一步地,还包括:预先设置分表策略;
[0015] 所述S3,包括:根据所述原表访问命令判断所述待访问子表是否存在,如果是,则 执行步骤S4,否则,根据所述分表策略和所述原表访问命令对所述原表进行横向分表,创建 所述待访问子表,执行步骤S4。
[0016] 进一步地,还包括:预先设置分表信息对应关系表,所述分表信息对应关系表中包 括:原表的信息、原表对应的子表的信息;
[0017] 所述S3,包括:根据所述分表信息对应关系表中的原表的信息和原表对应的子表 的信息,以及所述原表访问命令,确定所述待访问子表。
[0018] 另一方面,本发明提供了一种访问数据的装置,包括:
[0019] 第一设置单元,用于设置配置文件,所述配置文件中保存有待分表的原表的信 息;
[0020] 获取单元,用于获取外部输入的原表访问命令;
[0021] 判断单元,用于判断所述原表访问命令对应的原表的信息是否保存在所述配置文 件中,当判断结果为是时,通知确定单元;
[0022] 所述确定单元,用于根据所述原表访问命令确定从所述原表拆分出的所有子表中 的待访问子表;
[0023] 命令生成单元,用于将所述原表访问命令的访问对象修改为所述待访问子表,获 得子表访问命令;
[0024] 访问单元,用于根据所述子表访问命令,对所述待访问子表进行访问。
[0025] 进一步地,还包括:
[0026] 第二设置单元,用于设置数据访问对象接口DAO接口对应的拦截器;
[0027] 所述获取单元,用于通过所述拦截器拦截所述DAO接口接收到的所述原表访问命 令。
[0028] 进一步地,所述第二设置单元,用于预先将会话工厂SessionFactory的 entitylnterceptor属性设置为指向所述拦截器,为所述DAO接口配置所述拦截器。
[0029] 进一步地,还包括:第三设置单元,用于设置分表策略;
[0030] 所述确定单元,用于根据所述原表访问命令判断所述待访问子表是否存在,当判 断结果为是时,通知所述命令生成单元,当判断结果为否时,根据所述分表策略和所述原表 访问命令对所述原表进行横向分表,仓Il建所述待访问子表,通知所述命令生成单元。
[0031] 进一步地,还包括:第四设置单元,用于设置分表信息对应关系表,所述分表信息 对应关系表中包括:原表的信息、原表对应的子表的信息;
[0032] 所述确定单元,用于根据所述分表信息对应关系表中的原表的信息和原表对应的 子表的信息,以及所述原表访问命令,确定所述待访问子表。
[0033] 本发明提供的一种访问数据的方法及装置,获取原表访问命令,当该原表访问命 令要访问的原表在配置文件中时,将原表访问命令转化为子表访问命令,通过子表访问命 令访问对应的子表,子表中的数据量比原表中的数据量少,减少了检索数据的时间,提高了 访问效率。
【附图说明】
[0034] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 这些附图获得其他的附图。
[0035]图1是本发明一实施例提供的一种访问数据的方法的流程图;
[0036]图2是本发明一实施例提供的另一种访问数据的方法的流程图;
[0037]图3是本发明一实施例提供的一种访问数据的装置的示意图;
[0038]图4是本发明一实施例提供的另一种访问数据的装置的示意图。
【具体实施方式】
[0039] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040] 如图1所示,本发明实施例提供了一种访问数据的方法,该方法可以包括以下步 骤:
[0041] SO :预先设置配置文件,所述配置文件中保存有待分表的原表的信息;
[0042] Sl :获取外部输入的原表访问命令;
[0043] S2:判断所述原表访问命令对应的原表的信息是否保存在所述配置文件中,如果 是,则执行步骤S3 ;
[0044] S3 :根据所述原表访问命令确定待访问子表;
[0045] S4 :将所述原表访问命令的访问对象修改为所述待访问子表,得到子表访问命 令;
[0046] S5 :根据所述子表访问命令,对所述待访问子表进行访问。
[0047] 本发明实施例提供的一种访问数据的方法,获取原表访问命令,当该原表访问命 令要访问的原表在配置文件中时,将原表访问命令转化为子表访问命令,通过子表访问命 令访问对应的子表,子表中的数据量比原表中的数据量少,减少了检索数据的时间,提高了 访问效率。
[0048] 其中,在步骤S2中,当判断结果为否时,可以执行:访问所述原表访问命令对应的 原表,也可以结束当前流程。
[0049]外部对数据库的访问命令需要通过DAO (Data Access Ob ject,数据访问对 象)接口传递给数据库,为了对访问数据库的原表访问命令进行修改,可以通过拦截器 (Interceptor)拦截DAO接口接收到的原表访问命令。在一种可能的实现方式中,该方法还 包括:预先设置DAO接口对应的拦截器;所述Sl,包括:通过所述拦截器拦截所述DAO接口 接收到的所述原表访问命令。
[0050] 在DAO接口处添加拦截器可以通过设置entitylnterceptor属性来实现,具体地, 所述预先设置拦截器,包括:预先将SessionFactory(会话工厂)的entitylnterceptor属 性设置为指向所述拦截器,为所述DAO接口配置所述拦截器。
[0051] 通过该方法实现对数据库的访问,无需对数据库进行较多的代码修改,只需通过 设置entitylnterceptor属性,并为DAO接口配置该拦截器即可实现对原始访问命令的获 取。而上述的为所述DAO接口配置所述拦截器,可以通过将该拦截器的名称写入到DAO类 中来实现。
[0052] 在确定待访问子表时,可能数据库中没有该待访问子表,在这种情况下,需要建立 该待访问子表。用户可以根据需要设置对原表的分表策略,例如:可以将当前的原表按照月 份进行分表,每个月份的数据存储在一个子表中。具体地,在一种可能的实现方式中,该方 法还包括:预先设置分表策略。
[0053] 所述S3,包括:根据所述原表访问命令判断所述待访问子表是否存在,如果是,则 执行步骤S
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1