一种数据处理方法及装置的制造方法_2

文档序号:9818331阅读:来源:国知局
查询的属性对应的查询次数增加设定 值;若保存有所需查询的属性对应的列存储,从所述列存储中确定出所需查询的属性值对 应的行号,并从行存储中获取所述行号对应的记录,提高了查询处理速度以及存储数据的 利用率。
[0043] 可选的,步骤110将所需查询的属性对应的查询次数增加设定次数之后,该方法还 包括:
[0044] 在所需查询的属性对应的查询次数达到设定阈值时,从行存储中确定出所需查询 的属性对应的所有属性值和行号信息,并将确定出的属性值和行号信息以列存储方式进行 存储。
[0045] 本发明实施例中所述的存储方法减少了不重要属性的存储,而不是将数据简单的 保留两份,仅根据用户的查询记录保留重要属性的列存储,对数据的存储有着较高的利用 率。若行存储由于各种原因损坏时,而对应的列存储属性并没有丢失,则可以保证重要属性 的冗余,避免了整个数据全部丢失。当所有的属性都很重要时,则数据完全冗余。
[0046] 可选的,若所述查询请求中携带至少两个所需查询的属性,且保存有所述至少两 个所需查询的属性对应的列存储,则从所述列存储中确定出所需查询的属性值对应的行 号,并从行存储中获取所述行号对应的记录,包括:
[0047] 对于每个所需查询的属性,从所需查询的属性对应的列存储中,确定出所需查询 的属性值对应的行号形成的行号集合;
[0048] 确定出所述行号集合的交集,并根据所述行号集合的交集,从行存储中获取对应 的记录。
[0049]举例说明:若第一查询的属性所对应的行号集合为{1,2,3},第二查询的属性所对 应的行号集合为{2,3,4, },确定出所述行号集合的交集为{2,3},根据该行号集合,从行存 储中获取对应的记录。
[0050] 可选的,若所述查询请求中携带至少两个所需查询的属性,且未保存所述至少两 个所需查询的属性中至少一个所需查询的属性对应的列存储,则从所述列存储中确定出所 需查询的属性值对应的行号,并从行存储中获取所述行号对应的记录,包括:
[0051] 对于存在对应的列存储的所需查询的属性,从所需查询的属性对应的列存储中, 确定出所需查询的属性值对应的行号,并根据确定出的行号,从行存储中获取对应的记录。
[0052] 从获取到的记录中,确定出不存在对应的列存储的所需查询的属性所对应的记 录。
[0053] 举例说明:若第一查询的属性所对应的行号集合为{1,2,3},根据该行号集合,从 行存储中获取对应的记录,在从获取到的记录中,确定出不存在对应的列存储的所需查询 的属性所对应的记录。
[0054] 下面以用户所发出的查询请求中使用结构化查询语句(Structured Query Language,SQL)为例,对本发明实施例提供的数据存储和查询方法进行说明。
[0055] 实施例一、如图2所示,包括如下过程:
[0056]若用户查询请求中仅带一个查询属性的流程:
[0057] 步骤200、接收查询请求;
[0058] 步骤210、对查询请求进行解析;
[0059]其中,本步骤是通过调用数据库中的国际标准的SQL语法解析器(即用于对SQL语 句进行解析的程序)执行的。
[0060] 步骤220、对查询请求中的where条件中的查询属性进行查询次数统计。
[0061] 步骤230、判断查询条件中的属性所对应的属性列是否已经存在对应的列存储。 [0062]步骤240、若判断出在数据库中已经存在对应的列存储,在该列存储中进行查询操 作,并得到对应的行号。
[0063]步骤250、利用行号,在行存储数据中获取对应的记录,在获取的记录中,利用行数 据库的执行操作方法执行其它的查询过滤操作;
[0064] 举例说明:where条件带有多个条件的操作,如where a>5and b〈2,当a>5利用热点 列执行完后得到行号,然后利用行号执行b〈2的操作,其中b〈2为其它的查询过滤操作。
[0065] 其中,例如:a与b代表分别为下表中的oid列与name列。
[0067]步骤260,查询完成后,将最终的查询结果返回给用户。
[0068]步骤270、若判断出在数据库中不存在对应的列存储,则判断查询属性对应的统计 次数是否达到了预定的阈值;
[0069]若是,则执行步骤280;
[0070]若否,则执行步骤290。
[0071]步骤280、将对应的查询请求中的属性所对应的属性列,以列存储的方式进行存 储,该存储方式包括两列,其中一列为对应的行号,另一列为真实的列数据值(即属性值); 然后执行步骤240或者步骤290。
[0072]步骤290、在行存储数据中进行查询操作,然后继续执行步骤260。
[0073] 其中,上述步骤220-步骤250及步骤270-步骤290,是通过调用优化器执行的,其 中,所述执行优化器是用于判断SQL的最优执行路径的程序;在本实施例中,可以通过所述 执行优化器进行查询次数的统计和判断执行查询的路径是行查询路径,还是热点列查询路 径,其中所述热点列为所述执行优化器中已经存在的列存储。
[0074] 执行优化器可根据不同的条件,自适应的找到对应的最优执行路径,即行查询路 径还是热点列查询路径。
[0075] 若用户查询请求中带多个查询属性的流程:
[0076]接收查询请求;对查询请求中的where条件中的多个属性进行查询次数统计;判断 查询条件中的属性所对应的属性列是否已经存在对应的列存储方式。
[0077] 若判断出在数据库中已经存在一个对应的列存储,首先在单列中进行查询操作, 并得到对应的行号,然后利用行号,在原始的行存储数据中得到对应的所有的记录,再在选 择的记录中,利用行数据库的执行操作方法执行其它的查询过滤操作。
[0078] 若判断出在数据库中已经存在多个对应的列存储,先在一个单列中进行查询操 作,并得到对应的行号,然后在另一个单列中进行查询操作,并得到对应的行号,继而利用 这两个行号,求取交集,接着利用该行号交集,在原始的行存储数据中得到对应的所有的记 录,左后在选择的记录中,利用行数据库的执行操作方法执行其它的查询过滤操作。
[0079] 若判断出在数据库中不存在对应的列存储,并且判断到对应的统计计数已经达到 了预定的阈值,则触发事件,将对应的查询条件属性,再以列存储的方式,该存储方式包括 两列,其中一列为对应的行号,另一列为真实的列数据值。
[0080] 若判断出在数据库中不存在对应的列存储,并且判断到对应的统计计数未达到预 定的阈值,则以行数据库的操作方法在行存储数据中进行查询操作。
[0081]执行查询完成后,将最终的查询结果返回给用户。
[0082]基于与方法同样的发明构思,本发明实施例还提供一种数据处理装置,如图3所 示,包括:
[0083]接收模块301,用于接收用户的查询请求,其中,所述查询请求中携带所需查询的 属性和属性值;
[0084] 处理模块302,用于若未保存所需查询的属性对应的列存储,从行存储中确定出所 需查询的属性值对应的行号,根据确定出的行号,从行存储中获取对应的记录并将所需查 询的属性对应的查询次数增加设定值;
[0085] 若保存有所需查询的属性对应的列存储,从所述列存储中确定出所需查询的属性 值对应的行号,并从行存储中获取所述行号对应的记录。
[0086] 本发明实施例提供的一种数据处理的装置,接收用户的查询请求后,若未保存所 需查询的属性对应的列存储时,从行存储中确定出所需查询的属性值对应的行号,根据确 定出的行号,从行存储中获取对应的记录并将所需查询的属性对应的查询次数增加设定 值;若保存有所需查询的属性对应的列存储,从所述列存储中确定出所需查询的属性值对 应的行号,并从行存储中获取所述行号对应的记录,提高了查询处理速度以及存储数据的 利用率。
[0087] 可选的,将所需查询的属性对应的查询次数增加设定次数之后,所述处理模块还 用于:
[0088] 在所需查询的属性对应的查询次数达到设定阈值时,从行存储中确定出所需查询 的属性对应的
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1