首页 / 专利库 / 电脑零配件 / 计算机系统 / 数据存储方法、数据查询方法、装置及系统

数据存储方法、数据查询方法、装置及系统

阅读:615发布:2024-02-04

专利汇可以提供数据存储方法、数据查询方法、装置及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种数据存储方法、数据查询方法、装置及系统,属于计算机技术领域。所述方法包括:将数据文件存储至第一文件系统中;为数据文件中的每条数据记录生成对应的索引信息,索引信息用于指示数据记录对应的数据文件和数据记录在数据文件中的存储 位置 ;将索引信息存储至第二文件系统中,第二文件系统的数据查询速度高于第一文件系统的数据查询速度。本发明解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现快速查询的效果,本方案能够实现海量数据的秒级查询反馈。,下面是数据存储方法、数据查询方法、装置及系统专利的具体信息内容。

1.一种数据存储方法,其特征在于,所述方法包括:
将数据文件存储至第一文件系统中,所述数据文件包括至少一条数据记录;
为每条所述数据记录生成对应的索引信息,所述索引信息用于指示所述数据记录对应的所述数据文件和所述数据记录在所述数据文件中的存储位置
将所述索引信息存储至第二文件系统中,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
2.根据权利要求1所述的方法,其特征在于,所述为每条数据记录生成对应的索引信息,包括:
对于每条所述数据记录,提取所述数据记录中需要建立索引的一个索引字段值、所述数据文件的文件名和所述数据记录在所述数据文件中的偏移值;
根据所述索引字段值、所述数据文件的文件名和所述数据记录在所述数据文件中的偏移值生成与所述数据记录对应的一条索引信息;
其中,每条所述数据记录中需要建立索引的索引字段值为一个或一个以上。
3.根据权利要求2所述的方法,其特征在于,所述将所述索引信息存储至第二文件系统中,包括:
在所述第二文件系统中的至少一个索引表中查找所述数据记录所属的时间范围内的至少一个索引表,每个索引表对应各自的时间范围和索引字段名称;
对于与所述数据记录对应的每条索引信息,在所述时间范围内的至少一个索引表中,查询与所述索引信息中的所述索引字段值所对应的索引字段名称相匹配的索引表;
将所述索引信息写入匹配的所述索引表。
4.根据权利要求3所述的方法,其特征在于,所述将所述索引信息写入匹配的所述索引表,包括:
将所述索引信息中的所述索引字段值写入所述索引表中的主键列,所述索引表中包括所述主键列和至少一个时间列,每个时间列对应一个时间段,每个时间段是所述时间范围中的一个时间段;
根据所述数据记录的生成时间,将所述索引信息中的所述数据文件的文件名和所述数据记录在所述数据文件中的偏移值写入与所述索引字段值所在行的对应时间列中。
5.一种数据查询方法,其特征在于,所述方法包括:
接收查询请求
根据所述查询请求从第二文件系统中查找索引信息,所述索引信息用于指示目标数据记录对应的数据文件和所述目标数据记录在所述数据文件中的存储位置;
根据所述索引信息从第一文件系统存储的数据文件中查找所述目标数据记录,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
6.根据权利要求5所述的方法,其特征在于,所述根据所述查询请求从第二文件系统中查找索引信息,包括:
提取所述查询请求中携带的至少两个索引字段值;
根据每个所述索引字段值在所述第二文件系统的至少一个索引表中查询对应的索引信息;
将各个所述索引字段值对应的索引信息取交集,得到交集后的索引信息。
7.根据权利要求6所述的方法,其特征在于,所述根据每个所述索引字段值在所述第二文件系统中的至少一个索引表中查询对应的索引信息,包括:
对于每个所述索引字段值,在所述第二文件系统中的至少一个索引表中,查询与所述索引字段值所对应的索引字段名称相匹配的索引表,所述第二文件系统中的每个索引表对应各自的索引字段名称;
在相匹配的所述索引表中,根据所述索引字段值查询对应的索引信息。
8.根据权利要求7所述的方法,其特征在于,所述对应每个所述索引字段值,在所述第二文件系统中的至少一个索引表中,查询与所述索引字段值所对应的索引字段名称相匹配的索引表,包括:
在所述查询请求还携带有时间范围时,在所述第二文件系统中的至少一个索引表中查询与所述时间范围对应的索引表,所述第二文件系统中的每个索引表还对应各自的时间范围;
对于每个所述索引字段值,在与所述时间范围对应的索引表中,查询与所述索引字段值所对应的索引字段名称相匹配的索引表。
9.根据权利要求7所述的方法,其特征在于,所述在相匹配的所述索引表中,根据所述索引字段值查询对应的索引信息,包括:
在所述查询请求还携带有时间段时,根据所述索引字段值在相匹配的所述索引表中的主键列中查询所述索引字段值的所在行,所述索引表中包括所述主键列和至少一个时间列,每个时间列对应一个时间段;
在所述索引字段值的所在行中,根据所述时间段对应的时间列提取所述索引信息。
10.一种数据存储装置,其特征在于,所述装置包括:
第一存储模,用于将数据文件存储至第一文件系统中,所述数据文件包括至少一条数据记录;
索引建立模块,用于为每条所述数据记录生成对应的索引信息,所述索引信息用于指示所述数据记录对应的所述数据文件和所述数据记录在所述数据文件中的存储位置;
第二存储模块,用于将所述索引信息存储至第二文件系统中,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
11.根据权利要求10所述的装置,其特征在于,所述索引建立模块,包括:
信息提取单元,用于对于每条所述数据记录,提取所述数据记录中需要建立索引的一个索引字段值、所述数据文件的文件名和所述数据记录在所述数据文件中的偏移值;
信息生成单元,用于根据所述索引字段值、所述数据文件的文件名和所述数据记录在所述数据文件中的偏移值生成与所述数据记录对应的一条索引信息;
其中,每条所述数据记录中需要建立索引的索引字段值为一个或一个以上。
12.根据权利要求11所述的装置,其特征在于,所述第二存储模块,包括:
第一表查询单元,用于在所述第二文件系统中的至少一个索引表中查找所述数据记录所属的时间范围内的至少一个索引表,每个索引表对应各自的时间范围和索引字段名称;
第二表查询单元,用于对于与所述数据记录对应的每条索引信息,在所述时间范围内的至少一个索引表中,查询与所述索引信息中的所述索引字段值所对应的索引字段名称相匹配的索引表;
信息写入单元,用于将所述索引信息写入匹配的所述索引表。
13.根据权利要求12所述的装置,其特征在于,所述信息写入单元,包括:
主键列写入单元,用于将所述索引信息中的所述索引字段值写入所述索引表中的主键列,所述索引表中包括所述主键列和至少一个时间列,每个时间列对应一个时间段,每个时间段是所述时间范围中的一个时间段;
时间列写入单元,用于根据所述数据记录的生成时间,将所述索引信息中的所述数据文件的文件名和所述数据记录在所述数据文件中的偏移值写入与所述索引字段值所在行的对应时间列中。
14.一种数据查询装置,其特征在于,所述装置包括:
请求接收模块,用于接收查询请求;
索引查询模块,用于根据所述查询请求从第二文件系统中查找索引信息,所述索引信息用于指示目标数据记录对应的数据文件和所述目标数据记录在所述数据文件中的存储位置;
数据查询模块,用于根据所述索引信息从第一文件系统存储的数据文件中查找所述目标数据记录,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
15.根据权利要求14所述的装置,其特征在于,所述索引查询模块,包括:
字段提取单元,用于提取所述查询请求中携带的至少两个索引字段值;
索引查询单元,用于根据每个所述索引字段值在所述第二文件系统的至少一个索引表中查询对应的索引信息;
索引交集单元,用于将各个所述索引字段值对应的索引信息取交集,得到交集后的索引信息。
16.根据权利要求15所述的装置,其特征在于,所述索引查询单元,包括:
第一查询单元,用于对于每个所述索引字段值,在所述第二文件系统中的至少一个索引表中,查询与所述索引字段值所对应的索引字段名称相匹配的索引表,所述第二文件系统中的每个索引表对应各自的索引字段名称;
第二查询单元,用于在相匹配的所述索引表中,根据所述索引字段值查询对应的索引信息。
17.根据权利要求16所述的装置,其特征在于,所述第一查询单元,还用于在所述查询请求还携带有时间范围时,在所述第二文件系统中的至少一个索引表中查询与所述时间范围对应的索引表,所述第二文件系统中的每个索引表还对应各自的时间范围;对应每个所述索引字段值,在与所述时间范围对应的索引表中,查询与所述索引字段值所对应的索引字段名称相匹配的索引表。
18.根据权利要求16所述的装置,其特征在于,所述第二查询单元,还用于在所述查询请求还携带有时间段时,根据所述索引字段值在相匹配的所述索引表中的主键列中查询所述索引字段值的所在行,所述索引表中包括所述主键列和至少一个时间列,每个时间列对应一个时间段;在所述索引字段值的所在行中,根据所述时间段对应的时间列提取所述索引信息。

说明书全文

数据存储方法、数据查询方法、装置及系统

技术领域

[0001] 本发明涉及计算机技术领域,特别涉及一种数据存储方法、数据查询方法、装置及系统。

背景技术

[0002] 随着业务系统的功能越来越多,业务系统中所需要存储的数据也越来越多。
[0003] Hadoop是一个能够对海量数据进行分布式处理的软件框架,其核心设计就是HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)和MapReduce模型。其中,HDFS用于提供高吞吐量的数据访问,适用于海量(PB级)数据的存储;而MapReduce模型用于并行计算海量数据,比如对HDFS中存储的数据进行查询。
[0004] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:MapReduce模型在海量数据处理方面主要是针对离线数据的处理,查询速度较慢,无法满足一些场景下快速查询的要求。

发明内容

[0005] 为了解决MapReduce无法完成对海量数据时进行快速查询的问题,本发明实施例提供了一种数据存储方法、数据查询方法、装置及系统。所述技术方案如下:
[0006] 第一方面,提供了一种数据存储方法,所述方法包括:
[0007] 将数据文件存储至第一文件系统中,所述数据文件包括至少一条数据记录;
[0008] 为每条所述数据记录生成对应的索引信息,所述索引信息用于指示所述数据记录对应的所述数据文件和所述数据记录在所述数据文件中的存储位置
[0009] 将所述索引信息存储至第二文件系统中,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
[0010] 第二方面,提供了一种数据查询方法,所述方法包括:
[0011] 接收查询请求
[0012] 根据所述查询请求从第二文件系统中查找索引信息,所述索引信息用于指示目标数据记录对应的数据文件和所述目标数据记录在所述数据文件中的存储位置;
[0013] 根据所述索引信息从第一文件系统存储的数据文件中查找所述目标数据记录,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
[0014] 第三方面,提供了一种数据存储装置,所述装置包括:
[0015] 第一存储模,用于将数据文件存储至第一文件系统中,所述数据文件包括至少一条数据记录;
[0016] 索引建立模块,用于为每条所述数据记录生成对应的索引信息,所述索引信息用于指示所述数据记录对应的所述数据文件和所述数据记录在所述数据文件中的存储位置;
[0017] 第二存储模块,用于将所述索引信息存储至第二文件系统中,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
[0018] 第四方面,提供了一种数据查询装置,所述装置包括:
[0019] 请求接收模块,用于接收查询请求;
[0020] 索引查询模块,用于根据所述查询请求从第二文件系统中查找索引信息,所述索引信息用于指示目标数据记录对应的数据文件和所述目标数据记录在所述数据文件中的存储位置;
[0021] 数据查询模块,用于根据所述索引信息从第一文件系统存储的数据文件中查找所述目标数据记录,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
[0022] 本发明实施例提供的技术方案带来的有益效果是:
[0023] 通过将数据文件存储至第一文件系统中,将索引信息存储至第二文件系统中,第二文件系统的数据查询速度高于第一文件系统的数据查询速度;解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现对第一文件系统中的海量信息进行快速查询的效果,本方案能够实现海量数据的秒级查询反馈。附图说明
[0024] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025] 图1是本发明各个实施例所涉及的一种实施环境的结构示意图;
[0026] 图2是本发明一个实施例提供的数据存储方法的方法流程图
[0027] 图3是本发明一个实施例提供的数据查询方法的方法流程图;
[0028] 图4是本发明另一个实施例提供的数据存储方法的方法流程图;
[0029] 图5是本发明另一个实施例提供的数据查询方法的方法流程图;
[0030] 图6是本发明一个实施例提供的数据存储装置的结构方框图
[0031] 图7是本发明另一个实施例提供的数据存储装置的结构方框图;
[0032] 图8是本发明一个实施例提供的数据查询装置的结构方框图;
[0033] 图9是本发明另一个实施例提供的数据查询装置的结构方框图;
[0034] 图10是本发明一个实施例提供的数据处理端的结构方框图。

具体实施方式

[0035] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0036] 请参考图1,其示出了本发明各个实施例所涉及的一种实施环境的结构示意图。该实施环境包括数据上报端120、数据处理端140、第一文件系统160和第二文件系统180。
[0037] 数据上报端120可以包括多个业务生产机(图中未示出),业务生产机用于在业务运行过程中产生数据记录,并上报数据记录。数据上报端120通过无线网络或有线网络与数据处理端140相连。
[0038] 数据处理端140用于完成数据记录的存储和查询。数据处理端140通过无线网络或有线网络分别与数据上报端120、第一文件系统160和第二文件系统180相连。
[0039] 第一文件系统160是具备海量数据存储能的分布式存储系统,比如HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)。也即,第一文件系统160的数据存储能力高于第二文件系统180的数据存储能力。
[0040] 第二文件系统180是具备快速查询能力的存储系统,比如HBase(Hadoop Database,Hadoop数据库),虽然HBase无法存储海量数据,但是却提供有快速查询能力。也即,第二文件系统180的数据查询速度高于第一文件系统160的数据查询速度。甚至,第二文件系统180的数据查询速度远远高于第一文件系统160的数据查询速度。
[0041] 请参考图2,其示出了本发明一个实施例提供的数据存储方法的方法流程图。本实施例以该数据存储方法应用于图1所示的数据处理端140中来举例说明。该数据存储方法,包括:
[0042] 步骤201,将数据文件存储至第一文件系统中,数据文件包括至少一条数据记录;
[0043] 数据文件可以为一个数据文件,也可以是多个数据文件,每个数据文件包括至少一条数据记录,每条数据记录可以由若干个字段构成。
[0044] 第一文件系统可以是HDFS文件系统。
[0045] 步骤202,为每条数据记录生成对应的索引信息,索引信息用于指示数据记录对应的数据文件和在数据文件中的存储位置;
[0046] 步骤203,将索引信息存储至第二文件系统中,第二文件系统的数据查询速度高于第一文件系统的数据查询速度。
[0047] 第二文件系统可以是HBase文件系统。由于索引数据的数据量通常是数据文件的数据量的1~5%,所以HBase文件系统可以为索引数据提供快速查询能力。
[0048] 综上所述,本实施例提供的数据存储方法,通过将数据文件存储至第一文件系统中,将索引信息存储至第二文件系统中,第二文件系统的数据查询速度高于第一文件系统的数据查询速度;解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现对第一文件系统中的海量信息进行快速查询的效果,本方案能够实现海量数据的秒级查询反馈。
[0049] 请参考图3,其示出了本发明一个实施例提供的数据存储方法的方法流程图。本实施例以该数据查询方法应用于图1所示的数据处理端140中来举例说明。该数据查询方法,包括:
[0050] 步骤301,接收查询请求;
[0051] 步骤302,根据查询请求从第二文件系统中查找索引信息,该索引信息用于指示目标数据记录对应的数据文件和在数据文件中的存储位置;
[0052] 目标数据记录是该查询请求所对应的查询结果。第二文件系统可以是HBase文件系统。
[0053] 步骤303,根据索引信息从第一文件系统存储的数据文件中查找目标数据记录,第二文件系统的数据查询速度高于第一文件系统的数据查询速度。
[0054] 第一文件系统可以是HDFS文件系统。
[0055] 综上所述,本实施例提供的数据存储方法,通过将数据文件存储至第一文件系统中,将索引信息存储至第二文件系统中,第二文件系统的数据查询速度高于第一文件系统的数据查询速度;解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现对第一文件系统中的海量信息进行快速查询的效果,本方案能够实现海量数据的秒级查询反馈。
[0056] 请参考图4,其示出了本发明另一实施例提供的数据存储方法的方法流程图。本实施例以该数据存储方法应用于图1所示的数据处理端140中来举例说明。该数据存储方法,包括:
[0057] 步骤401,接收数据上报端发送的数据记录;
[0058] 数据上报端在运行业务的过程中,会生成一条条数据记录。数据上报端会将数据记录上报给数据处理端。对应地,数据处理端接收数据上报端发送的数据记录。
[0059] 每条数据记录由若干个字段构成。根据业务的不同,数据记录中包括的字段也不同。以业务是一种社交网站的页面监控业务为例,某个用户在自己的社交网页中发布一条状态,则会生成一条数据记录,该数据记录包括有:上报时间、社交帐户、操作类型、社交网页版本号、登录状态等字段。
[0060] 步骤402,根据数据记录生成数据文件;
[0061] 数据处理端可以将各条数据记录以文本形式存储于数据文件中。每条数据记录在数据文件中占据一行,每条数据记录中的不同字段之间以分隔符号切割,该分隔符号可以是“\t”。
[0062] 比如,一个数据文件中的一部分数据记录示意如下:
[0063] 2014.10.3100:01:31\t张三\t更改头像\t已登录\t
[0064] 2014.10.3100:01:31\t李四\t删除签名\t已登录\t
[0065] 2014.10.3100:01:32\t王五\t更改登录状态\t未登录\t
[0066] 2014.10.3100:01:39\t赵六\t更改签名\t已登录\t
[0067] 为了保证查询速度,每个数据文件的数据量可以保持在预定大小。比如,每条数据文件的数据量不超过200MB;或,每条数据文件中的数据记录条数不超过200000条等。也即,数据处理端在当前的数据文件中的数据量达到预设阈值时,新建一个数据文件,并将接收到的数据记录存储在新建的数据文件中。
[0068] 步骤403,将数据文件存储至第一文件系统中,数据文件包括至少一条数据记录;
[0069] 在当前数据文件中的数据量达到预设阈值后,数据处理端可以将数据文件存储至第一文件系统中,第一文件系统可以是HDFS文件系统。
[0070] 在一种可能的实施方式中,数据处理端以如下文件存储结构将数据文件存储至第一文件系统中:
[0071] /dcid/yyyymmdd/hh/filename_n。
[0072] 其中,dcid是业务标识,yyyymmdd是年月日,hh是小时,filename_n是文件名。
[0073] 也即,数据文件可以根据属性信息的不同存储至不同的目录下,属性信息包括:数据文件对应的业务标识、数据文件对应的时间范围、数据文件对应的文件名。采用这种存储结构,可以提高数据文件的查找效率。
[0074] 步骤404,为每条数据记录生成对应的索引信息;
[0075] 数据处理端将数据文件存储至第一文件系统后,数据处理端还为该数据文件中的每条数据记录生成对应的索引信息,该索引信息用于指示数据记录所对应的数据文件和数据记录在数据文件中的存储位置。
[0076] 本步骤可以包括如下步骤:
[0077] 第一,对于每条数据记录,数据处理端提取该条数据记录中需要建立索引的一个索引字段值、对应的数据文件的文件名和该条数据记录在数据文件中的偏移值。
[0078] 其中,每条数据记录中需要建立索引的索引字段值为一个或一个以上。
[0079] 第二,数据处理端根据索引字段值、对应的数据文件的文件名和数据记录在数据文件中的偏移值生成与数据记录对应的一条索引信息。
[0080] 以数据记录A是“2014.10.3100:01:31\t张三\t更改头像\t已登录\t”为例。该数据记录中包括如下字段:年月日、小时、分钟、秒、社交帐户、操作类型、登录状态。其中,需要建立索引的字段可以包括三个字段:社交帐户、操作类型、登录状态。此时,数据可以为该数据记录建立三条索引信息,如下表一所示:
[0081]索引字段值 数据文件的文件名 在数据文件中的偏移值
张三 数据文件1 第1234行
更改头像 数据文件1 第1234行
已登录 数据文件1 第1234行
[0082] 表一
[0083] 也即,当一条数据记录中需要建立索引的字段是n个字段时,该数据记录对应的索引信息也是n条,n为正整数。
[0084] 步骤405,将索引信息存储至第二文件系统中,第二文件系统的数据查询速度高于第一文件系统的数据查询速度。
[0085] 第二文件系统可以是HBase文件系统。第二文件系统中存储有多个索引表。每个索引表对应各自的时间范围和索引字段名称。其中,时间范围可以是一天。
[0086] 在一个可能的实施例中,第二文件系统中的索引表的命名为:
[0087] dcid_索引字段名称_年月日。
[0088] 比如,业务A_社交帐户_20141031、业务A_操作类型_20141030、业务B_操作类型_20141028等等。
[0089] 换句话说,每个索引表对应一个索引字段名称,每个索引表对应一个时间范围(1天)。
[0090] 本步骤可以包括如下步骤:
[0091] 第一,数据处理端在第二文件系统中的至少一个索引表中查找该数据记录所属的时间范围内的至少一个索引表,每个索引表对应各自的时间范围和索引字段名称;
[0092] 第二,对于与该数据记录对应的每条索引信息,在该时间范围内的至少一个索引表中,数据处理端查询与索引信息中的索引字段值所对应的索引字段名称相匹配的索引表;
[0093] 第三,数据处理端将索引信息写入匹配的索引表。
[0094] 比如,数据记录A是“2014.10.3100:01:31\t张三\t更改头像\t已登录\t”,索引信息A是:“张三、数据文件1、第1234行”。
[0095] 数据处理端在第二文件系统中的多张索引表中查询20141031有关的索引表,查询出三张表:“业务A_社交帐户_20141031”、“业务A_操作类型_20141031”、“业务A_登录状态_20141031”。然后,由于索引字段值“张三”对应的索引字段名称是“社交帐户”,则数据处理端将索引表“业务A_社交帐户_20141031”确定为匹配的索引表,然后数据处理端将该索引信息A写入该索引表。
[0096] 作为一种可能的实施方式,每张索引表中包括主键列和至少一个时间列,每个时间列对应一个时间段,每个时间段是时间范围中的一个时间段。索引表的结构可以如表二所示:
[0097]
[0098] 表二
[0099] 其中,0000表示一天中的第一分钟、0001表示一天中的第二分钟、2358表示一天中的倒数第二分钟、2359表示一天中的最后一分钟。诸如此类,不再一一赘述。
[0100] 其中,Value表示数据记录对应的数据文件,和数据记录在数据文件中的偏移值。
[0101] 对应地,数据处理端将索引信息写入匹配的索引表,可以包括如下步骤:
[0102] 第一,将索引信息中的索引字段值写入索引表中的主键列,索引表中包括主键列和至少一个时间列,每个时间列对应一个时间段,每个时间段是时间范围中的一个时间段;
[0103] 第二,根据数据记录的生成时间,将索引信息中的数据文件的文件名和数据记录在数据文件中的偏移值写入与索引字段值所在行的对应时间列中。
[0104] 比如,索引信息A是:“张三、数据文件1、第1234行”,则数据处理端将索引信息A中的索引字段值“张三”写入索引表中的主键列。数据处理端根据数据记录A的生成时间2014.10.3100:01:31,将“数据文件1、第1234行”写入““张三”所在行的0001时间列中。
[0105] 写入索引信息A后的索引表“业务A_社交帐户_20141031”示意如下表三:
[0106]
[0107] 表三
[0108] 当一个单元格中Value的值为多个时,可以采用列表函数存储,该列表的形式不做具体限定。
[0109] 其它的索引信息的写入过程与上述方式类似,不再一一赘述。
[0110] 综上所述,本实施例提供的数据存储方法,通过将数据文件存储至第一文件系统中,将索引信息存储至第二文件系统中,第二文件系统的数据查询速度高于第一文件系统的数据查询速度;解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现对第一文件系统中的海量信息进行快速查询的效果,本方案能够实现海量数据的秒级查询反馈。
[0111] 本实施例提供的数据存储方法,还通过将数据文件按照不同的属性信息分别存储至不同的目录下,并且通过预设阈值控制每个数据文件的数据量。可以提高查询数据文件时的查询效率。
[0112] 本实施例提供的数据存储方法,还通过为每条数据记录根据不同的索引字段值建立不同的索引信息,使得对数据记录既可以采用单个索引字段查询,又可以采用多个索引字段查询,提供了灵活的查询方式。
[0113] 请参考图5,其示出了本发明一个实施例提供的数据查询方法的方法流程图。本实施例以该数据查询方法应用于图1所示的数据处理端140中举例说明。该方法包括:
[0114] 步骤501,接收查询请求;
[0115] 数据处理端接收查询请求,该查询请求可以携带有一个或者一个以上的索引字段值。该查询请求还可以携带有时间范围或时间范围中的时间段。时间范围通常按照‘天’为计量单位,时间段通常按照‘分钟’为计量单位。
[0116] 比如,查询请求可以是:
[0117] 携带有索引字段值“张三”的查询请求;或,
[0118] 携带有索引字段值“张三”、索引字段值“更改头像”的查询请求;或,[0119] 携带有索引字段值“张三”,索引字段值“登录状态”、时间范围“20141031”的查询请求。
[0120] 步骤502,根据查询请求从第二文件系统中查找索引信息,该索引信息用于指示目标数据记录对应的数据文件和目标数据记录在数据文件中的存储位置;
[0121] 当查询请求中只携带有一个索引字段值时,数据处理端根据该索引字段值对应的索引字段名称,在第二文件系统中的至少一个索引表中查找与该索引字段名称匹配的索引表,然后根据该索引字段值在匹配的索引表中查询相应的索引信息即可。
[0122] 当查询请求携带有至少两个索引字段值时,本步骤可以包括如下步骤:
[0123] 步骤一,提取查询请求中携带的至少两个索引字段值;
[0124] 步骤二,根据每个索引字段值在第二文件系统的至少一个索引表中查询对应的索引信息;
[0125] 步骤三,将各个索引字段值对应的索引信息取交集,得到交集后的索引信息。
[0126] 比如,查询请求为携带有索引字段值“张三”、索引字段值“更改头像”的查询请求,则数据处理端提取索引字段值“张三”和“更改头像”;然后,数据处理端根据索引字段值“张三”在第二文件系统的至少一个索引表中查询对应的n条索引信息,还根据索引字段值“更改头像”在第二文件系统的至少一个索引表中查询对应的m条索引信息;最后,将n条索引信息和m条索引信息取交集即可。
[0127] 对于上述的步骤二,还可以包括如下子步骤:
[0128] 1)对于每个索引字段值,在第二文件系统中的至少一个索引表中,查询与索引字段值所对应的索引字段名称相匹配的索引表,第二文件系统中的每个索引表对应各自的索引字段名称;
[0129] 比如,对于索引字段值“张三”,由于“张三”对应的索引字段名称为“社交帐户”,则在第二文件系统的至少一个索引表中,查询与索引字段名称“社交帐户”有关的索引表。
[0130] 2)在相匹配的索引表中,根据索引字段值查询对应的索引信息。
[0131] 比如,在与索引字段名称“社交帐户”有关的索引表中,根据索引字段值“张三”查询对应的索引信息。
[0132] 需要补充说明的一点是,对于上述步骤1),由于第二文件系统中的每个索引表还对应各自的时间范围,若在查询请求中还携带有时间范围,则数据处理端可以先在第二文件系统中的至少一个索引表中查询与该时间范围对应的索引表;然后,对于每个索引字段值,在与该时间范围对应的索引表中,查询与索引字段值所对应的索引字段名称相匹配的索引表。
[0133] 比如,查询请求中携带有时间范围“20141031”,则数据处理端先在第二文件系统中的至少一个数据表中,查询与该时间范围“20141031”对应的索引表;然后,对于索引字段值“张三”,在与该时间范围“20141031”对应的索引表中,查询与索引字段名称“社交账户”相匹配的索引表。
[0134] 需要说明的另一点是,对于上述步骤2),由于索引表中包括主键列和至少一个时间列,每个时间列对应一个时间段,若在查询请求中还携带有时间段时,则数据处理端先根据索引字段值在相匹配的索引表中的主键列中查询该索引字段值的所在行;然后,数据处理端在索引字段值的所在行中,根据查询请求中的时间段对应的时间列提取索引信息,该索引信息中包括有目标数据记录对应的数据文件的文件名和目标数据记录在数据文件中的偏移值。
[0135] 比如,查询请求中携带有时间段“12:01至12:29”,则数据处理端先根据索引字段值“张三”在相匹配的索引表中的主键列中查询该索引字段值“张三”的所在行;然后,数据处理端在索引字段值“张三”的所在行中,根据查询请求中的时间段“12:01至12:29”对应的29个时间列中提取索引信息,该索引信息中包括有目标数据记录对应的数据文件的文件名和目标数据记录在数据文件中的偏移值。
[0136] 步骤503,根据索引信息中的目标数据记录对应的数据文件的文件名在第一文件系统中查找匹配的数据文件;
[0137] 由于查询到的索引信息可能为多条,每条索引信息中目标数据记录对应的数据文件的文件名又可能不同,数据处理端根据各个数据文件的文件名在第一文件系统中查找匹配的数据文件。
[0138] 需要说明的是,由于数据文件是按照时间范围存储在不同的目录中的,在查询请求携带有时间范围时,数据处理端可以先根据查询请求中携带的时间范围在第一文件系统中找到至少一个数据文件,然后再根据索引信息中的目标数据记录对应的数据文件的文件名查找匹配的数据文件,从而加快查询速度。
[0139] 步骤504,根据索引信息中的目标数据记录在数据文件中的偏移值在匹配的数据文件中查找目标数据记录。
[0140] 对于每条索引信息,数据处理端还根据索引信息中的目标数据记录在数据文件中的偏移值在匹配的数据文件中查询至少一条目标数据记录。
[0141] 最后,数据处理端将查询到的至少一条目标数据记录反馈发出查询请求的设备。数据处理端可以将目标数据记录中的全部字段都作为反馈内容,也可以将目标数据记录中的部分字段作为反馈内容,视查询请求的请求内容和不同实施例的具体实施情况而定。
[0142] 综上所述,本实施例提供的数据查询方法,解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现对第一文件系统中的海量信息进行快速查询的效果,本方案能够实现海量数据的秒级查询反馈。
[0143] 本实施例提供的数据查询方法,还通过提供多索引字段查询方法,使得对数据记录既可以采用单个索引字段查询,又可以采用多个索引字段查询,提供了灵活的查询方式。
[0144] 请参考图6,其示出了本发明一个实施例提供的数据存储装置的结构方框图。该数据存储装置可以通过软件、硬件或者两者的结合实现成为数据处理端的全部或者一部分,该数据存储装置,包括:
[0145] 第一存储模块620,用于将数据文件存储至第一文件系统中,所述数据文件包括至少一条数据记录;
[0146] 索引建立模块640,用于为每条所述数据记录生成对应的索引信息,所述索引信息用于指示所述数据记录对应的所述数据文件和在所述数据文件中的存储位置;
[0147] 第二存储模块660,用于将所述索引信息存储至第二文件系统中,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
[0148] 综上所述,本实施例提供的数据存储装置,通过将数据文件存储至第一文件系统中,将索引信息存储至第二文件系统中,第二文件系统的数据查询速度高于第一文件系统的数据查询速度;解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现对第一文件系统中的海量信息进行快速查询的效果,本方案能够实现海量数据的秒级查询反馈。
[0149] 请参考图7,其示出了本发明另一个实施例提供的数据存储装置的结构方框图。该数据存储装置可以通过软件、硬件或者两者的结合实现成为数据处理端的全部或者一部分,该数据存储装置,包括:
[0150] 第一存储模块620,用于将数据文件存储至第一文件系统中,所述数据文件包括至少一条数据记录;
[0151] 索引建立模块640,用于为每条所述数据记录生成对应的索引信息,所述索引信息用于指示所述数据记录对应的所述数据文件和在所述数据文件中的存储位置;
[0152] 第二存储模块660,用于将所述索引信息存储至第二文件系统中,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
[0153] 可选地,所述索引建立模块640,包括:
[0154] 信息提取单元642,用于对于每条所述数据记录,提取所述数据记录中需要建立索引的一个索引字段值、所述数据文件的文件名和所述数据记录在所述数据文件中的偏移值;
[0155] 信息生成单元644,用于根据所述索引字段值、所述数据文件的文件名和所述数据记录在所述数据文件中的偏移值生成与所述数据记录对应的一条索引信息;
[0156] 其中,每条所述数据记录中需要建立索引的索引字段值为一个或一个以上。
[0157] 可选地,所述第二存储模块660,包括:
[0158] 第一表查询单元662,用于在所述第二文件系统中的至少一个索引表中查找所述数据记录所属的时间范围内的至少一个索引表,每个索引表对应各自的时间范围和索引字段名称;
[0159] 第二表查询单元664,用于对于与所述数据记录对应的每条索引信息,在所述时间范围内的至少一个索引表中,查询与所述索引信息中的所述索引字段值所对应的索引字段名称相匹配的索引表;
[0160] 信息写入单元666,用于将所述索引信息写入匹配的所述索引表。
[0161] 可选地,所述信息写入单元666,包括:
[0162] 主键列写入单元,用于将所述索引信息中的所述索引字段值写入所述索引表中的主键列,所述索引表中包括所述主键列和至少一个时间列,每个时间列对应一个时间段,每个时间段是所述时间范围中的一个时间段;
[0163] 时间列写入单元,用于根据所述数据记录的生成时间,将所述索引信息中的所述数据文件的文件名和所述数据记录在所述数据文件中的偏移值写入与所述索引字段值所在行的对应时间列中。
[0164] 综上所述,本实施例提供的数据存储装置,通过将数据文件存储至第一文件系统中,将索引信息存储至第二文件系统中,第二文件系统的数据查询速度高于第一文件系统的数据查询速度;解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现对第一文件系统中的海量信息进行快速查询的效果,本方案能够实现海量数据的秒级查询反馈。
[0165] 本实施例提供的数据存储装置,还通过将数据文件按照不同的属性信息分别存储至不同的目录下,并且通过预设阈值控制每个数据文件的数据量。可以提高查询数据文件时的查询效率。
[0166] 本实施例提供的数据存储装置,还通过为每条数据记录根据不同的索引字段值建立不同的索引信息,使得对数据记录既可以采用单个索引字段查询,又可以采用多个索引字段查询,提供了灵活的查询方式。
[0167] 需要说明的是:上述实施例中提供的数据存储装置在存储数据记录时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0168] 请参考图8,其示出了本发明一个实施例提供的数据查询装置的结构方框图。该数据查询装置可以通过软件、硬件或者两者的结合实现成为数据处理端的全部或一部分。该数据查询装置包括:
[0169] 请求接收模块820,用于接收查询请求;
[0170] 索引查询模块840,用于根据所述查询请求从第二文件系统中查找索引信息,所述索引信息用于指示目标数据记录对应的数据文件和在所述数据文件中的存储位置;
[0171] 数据查询模块860,用于根据所述索引信息从第一文件系统存储的数据文件中查找所述目标数据记录,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
[0172] 综上所述,本实施例提供的数据查询装置,通过接收查询请求,根据查询请求从第二文件系统中查找索引信息,根据索引信息从第一文件系统存储的数据文件中查找目标数据记录;解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现对第一文件系统中的海量信息进行快速查询的效果,本方案能够实现海量数据的秒级查询反馈。
[0173] 请参考图9,其示出了本发明另一个实施例提供的数据查询装置的结构方框图。该数据查询装置可以通过软件、硬件或者两者的结合实现成为数据处理端的全部或一部分。该数据查询装置包括:
[0174] 请求接收模块820,用于接收查询请求;
[0175] 索引查询模块840,用于根据所述查询请求从第二文件系统中查找索引信息,所述索引信息用于指示目标数据记录对应的数据文件和在所述数据文件中的存储位置;
[0176] 数据查询模块860,用于根据所述索引信息从第一文件系统存储的数据文件中查找所述目标数据记录,所述第二文件系统的数据查询速度高于所述第一文件系统的数据查询速度。
[0177] 可选地,所述索引查询模块840,包括:
[0178] 字段提取单元842,用于提取所述查询请求中携带的至少两个索引字段值;
[0179] 索引查询单元844,用于根据每个所述索引字段值在所述第二文件系统的至少一个索引表中查询对应的索引信息;
[0180] 索引交集单元846,用于将各个所述索引字段值对应的索引信息取交集,得到交集后的索引信息。
[0181] 可选地,所述索引查询单元844,包括:
[0182] 第一查询单元,用于对于每个所述索引字段值,在所述第二文件系统中的至少一个索引表中,查询与所述索引字段值所对应的索引字段名称相匹配的索引表,所述第二文件系统中的每个索引表对应各自的索引字段名称;
[0183] 第二查询单元,用于在相匹配的所述索引表中,根据所述索引字段值查询对应的索引信息。
[0184] 可选地,第一查询单元,还用于在所述查询请求还携带有时间范围时,在所述第二文件系统中的至少一个索引表中查询与所述时间范围对应的索引表,所述第二文件系统中的每个索引表还对应各自的时间范围;对应每个所述索引字段值,在与所述时间范围对应的索引表中,查询与所述索引字段值所对应的索引字段名称相匹配的索引表。
[0185] 可选地,第二查询单元,还用于在所述查询请求还携带有时间段时,根据所述索引字段值在相匹配的所述索引表中的主键列中查询所在行,所述索引表中包括所述主键列和至少一个时间列,每个时间列对应一个时间段;在所述索引字段值所在行中,根据所述时间段对应的时间列提取所述索引信息,所述索引信息中包括有所述目标数据记录对应的数据文件的文件名和在所述数据文件中的偏移值。
[0186] 综上所述,本实施例提供的数据查询装置,通过接收查询请求,根据查询请求从第二文件系统中查找索引信息,根据索引信息从第一文件系统存储的数据文件中查找目标数据记录;解决了MapReduce无法完成对海量数据的快速查询处理的问题;达到了可以使用第一文件系统完成海量信息的存储,同时利用第二文件系统实现对第一文件系统中的海量信息进行快速查询的效果,本方案能够实现海量数据的秒级查询反馈。
[0187] 本实施例提供的数据查询装置,还通过提供多索引字段查询方法,使得对数据记录既可以采用单个索引字段查询,又可以采用多个索引字段查询,提供了灵活的查询方式。
[0188] 需要说明的是:上述实施例中提供的数据查询装置在查询数据记录时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据查询装置与数据查询方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0189] 请参考图10,其示出了本发明一个实施例提供的数据处理端的结构示意图。所述数据处理端1000包括中央处理单元(CPU)1001、包括随机存取存储器(RAM)1002和只读存储器(ROM)1003的系统存储器1004,以及连接系统存储器1004和中央处理单元1001的系统总线1005。所述数据处理端1000还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1006,和用于存储操作系统1013、应用程序1014和其他程序模块1015的大容量存储设备1007。
[0190] 所述基本输入/输出系统1006包括有用于显示信息的显示器1008和用于用户输入信息的诸如鼠标键盘之类的输入设备1009。其中所述显示器1008和输入设备1009都通过连接到系统总线1005的输入输出控制器1010连接到中央处理单元1001。所述基本输入/输出系统1006还可以包括输入输出控制器1010以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1010还提供输出到显示屏、打印机或其他类型的输出设备。
[0191] 所述大容量存储设备1007通过连接到系统总线1005的大容量存储控制器(未示出)连接到中央处理单元1001。所述大容量存储设备1007及其相关联的计算机可读介质为数据处理端1000提供非易失性存储。也就是说,所述大容量存储设备1007可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
[0192] 不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1004和大容量存储设备1007可以统称为存储器。
[0193] 根据本发明的各种实施例,所述数据处理端1000还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即数据处理端1000可以通过连接在所述系统总线1005上的网络接口单元1011连接到网络1012,或者说,也可以使用网络接口单元1011来连接到其他类型的网络或远程计算机系统(未示出)。
[0194] 所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本发明实施例提供的数据存储方法和/或数据查询方法的指令。
[0195] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0196] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0197] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈