著录项信息
专利名称 | 一种数据处理和查询方法和装置 |
申请号 | CN201010115869.2 | 申请日期 | 2010-03-01 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2011-09-21 | 公开/公告号 | CN102193917A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 中国移动通信集团公司 | 申请人地址 | 江苏省苏州市高新区科灵路78号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中移(苏州)软件技术有限公司,中国移动通信有限公司研究院,中国移动通信集团公司 | 当前权利人 | 中移(苏州)软件技术有限公司,中国移动通信有限公司研究院,中国移动通信集团公司 |
发明人 | 齐骥;钱岭;郭磊涛;罗治国;孙少陵;张松波;张卫平 |
代理机构 | 北京鑫媛睿博知识产权代理有限公司 | 代理人 | 龚家骅 |
摘要
本发明的实施例公开了一种数据处理和查询的方法和装置,该处理方法包括:为数据建立第一级索引,所述数据存储在至少一个文件中,所述第一级索引用于索引各文件,所述文件中存储有相应的数据;在各文件中分别建立第二级索引,所述第二级索引用于在相应文件中索引相应的数据。该查询方法包括:根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件,该文件存储有该查询请求所查询的数据;根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据。通过本发明,提高了大量数据的查询速度。
1.一种数据处理的方法,其特征在于,包括:
为数据建立第一级索引,所述数据存储在至少一个文件中,所述第一级索引用于索引各文件,所述文件中存储有相应的数据;
在各文件中分别建立第二级索引,所述第二级索引用于在相应文件中索引相应的数据;
其中,所述数据为呼叫记录数据,各文件中的呼叫记录数据按照用户通信号码归类存储,每个用户通信号码对应的呼叫记录数据按呼叫记录数据的时间属性排序;将数据存储在文件中的方法具体为:提取数据的日期属性,按照日期值将数据存储到各文件中,每个文件中的数据具有相同的日期值,每一个文件具有对应的文件标识;建立第一级索引的方法具体为:根据呼叫记录数据的日期和用户通信号码属性建立第一级索引,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期所产生的呼叫记录数据;
建立第二级索引的方法具体为:针对每个文件,根据文件中的呼叫记录数据的用户通信号码属性建立第二级索引,所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;或者,针对每个文件,根据文件中的呼叫记录数据的用户通信号码和通信时间属性建立第二级索引,所述第二级索引包括:用户通信号码,通信时间以及该用户通信号码在该通信时间产生的呼叫记录数据在文件中的位置偏移量。
2.如权利要求1所述的方法,其特征在于,所述数据存储在文件中的方法具体为:根据数据的字段属性值设置关键字,并根据文件的设定容量和所述关键字对数据进行分割,将分割得到的不超过所述设定容量的每部分数据存储到相应的文件中,每一个文件具有对应的文件标识。
3.如权利要求1所述的方法,其特征在于,建立第一级索引的方法具体为:根据数据的字段属性值设置关键字,根据所述关键字建立第一级索引,所述第一级索引中包括:所述关键字以及与所述关键字对应的文件标识。
4.如权利要求1所述的方法,其特征在于,建立第二级索引的方法具体为:
根据数据的字段属性值设置关键字,根据所述关键字建立第二级索引,所述第二级索引中包括:所述关键字、与所述关键字对应的数据在文件中的位置偏移量。
5.如权利要求1-4任一项所述的方法,其特征在于,建立第二级索引后,还包括:对文件进行压缩。
6.如权利要求1-4任一项所述的方法,其特征在于,采用多个并行执行的任务执行数据处理,所述多个任务分布在多个节点,每个任务处理所述数据中的部分数据。
7.一种数据查询方法,其特征在于,数据具有第一级索引和第二级索引,所述第一级索引用于在各文件中索引存储相应数据的文件,所述第二级索引用于在相应文件中索引相应的数据,该方法包括:
根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件,该文件存储有该查询请求所查询的数据;
根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据;
其中,所述数据为呼叫记录数据,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期产生的呼叫记录数据;根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件的方法具体为:从所述数据查询请求中提取所查询的日期值和用户通信号码;根据提取出的日期值和用户通信号码,在第一级索引中查找与该日期值和通信号码所对应的文件标识;根据查找到的文件标识确定出存储有该查询请求所查询的数据的文件;
所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法具体为:从所述数据查询请求中提取用户通信号码;根据提取出的用户通信号码,在第二级索引中查找与该用户通信号码对应的呼叫记录数据在文件中的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据;或者,所述第二级索引包括:用户通信号码和通信时间,以及该用户通信号码在该通信时间所产生的呼叫记录数据在文件中的位置偏移量;根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法具体为:从所述数据查询请求中提取用户通信号码和通信时间;根据提取出的用户通信号码和通信时间,在第二级索引中查找与该用户通信号码和该通信时间所对应的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。
8.如权利要求7所述的方法,其特征在于,所述第一级索引中包括:关键字以及与所述关键字对应的文件标识;
根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件的方法具体为:
从所述数据查询请求中获取查询条件,从第一级索引中查找该与查询条件匹配的关键字所对应的文件标识,根据所述文件标识确定对应文件为存储有该查询请求所查询的数据的文件。
9.如权利要求7所述的方法,其特征在于,各文件中的数据按照设定的关键字排序;所述第二级索引包括关键字、与所述关键字对应的数据在文件中的位置偏移量;
根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法具体为:
从所述数据查询请求中获取查询条件,从第二级索引中查找与该查询条件匹配的关键词所对应的数据在文件中的位置偏移量,根据所述数据在文件中的位置偏移量确定所请求查询的数据。
10.如权利要求7-9任一项所述的方法,其特征在于,当文件为压缩文件时,在根据所述数据查询请求、利用第二级索引在所查询到的文件中查找之前还包括:对文件进行解压。
11.一种数据处理装置,其特征在于,包括:
第一索引建立模块,用于为数据建立第一级索引,所述数据存储在至少一个文件中,所述第一级索引用于索引各文件,所述文件中存储有相应的数据;
第二索引建立模块,在各文件中分别建立第二级索引,所述第二级索引用于在相应文件中索引相应的数据;
其中,所述数据为呼叫记录数据,各文件中的呼叫记录数据按照用户通信号码归类存储,每个用户通信号码对应的呼叫记录数据按呼叫记录数据的时间属性排序;还包括:存储模块,用于提取数据的日期属性,按照日期值将数据存储到各文件中,每个文件中的数据具有相同的日期值,每一个文件具有对应的文件标识;所述第一索引建立模块还用于:根据呼叫记录数据的日期和用户通信号码属性建立第一级索引,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期所产生的呼叫记录数据;
所述第二索引建立模块还用于:针对每个文件,根据文件中的呼叫记录数据的用户通信号码属性建立第二级索引,所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;或者,针对每个文件,根据文件中的呼叫记录数据的用户通信号码和通信时间属性建立第二级索引,所述第二级索引包括:用户通信号码,通信时间以及该用户通信号码在该通信时间产生的呼叫记录数据在文件中的位置偏移量。
12.如权利要求11所述的装置,其特征在于,还包括:
存储模块,用于根据数据的字段属性值设置关键字,并根据文件的设定容量和所述关键字对数据进行分割,将分割得到的不超过所述设定容量的每部分数据存储到相应的文件中,每一个文件具有对应的文件标识。
13.如权利要求11所述的装置,其特征在于,所述第一索引建立模块具体用于:
根据数据的字段属性值设置关键字,根据所述关键字建立第一级索引,所述第一级索引中包括:所述关键字以及与所述关键字对应的文件标识。
14.如权利要求11所述的装置,其特征在于,所述第二索引建立模块具体用于:
根据数据的字段属性值设置关键字,根据所述关键字建立第二级索引,所述第二级索引中包括:所述关键字、与所述关键字对应的数据在文件中的位置偏移量。
15.一种数据查询装置,其特征在于,数据具有第一级索引和第二级索引,所述第一级索引用于在各文件中索引存储相应数据的文件,所述第二级索引用于在相应文件中索引相应的数据,该装置包括:
第一查询模块,用于根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件,该文件存储有该查询请求所查询的数据;
第二查询模块,用于根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据;
其中,所述数据为呼叫记录数据,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期产生的呼叫记录数据;所述第一查询模块包括:第一获取子模块,用于从所述数据查询请求中提取所查询的日期值和用户通信号码;第一查询子模块,用于根据提取出的日期值和用户通信号码,在第一级索引中查找与该日期值和通信号码所对应的文件标识;根据查找到的文件标识确定出存储有该查询请求所查询的数据的文件;
所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;所述第二查询模块包括:第二获取子模块,用于从所述数据查询请求中提取用户通信号码;第二查询子模块,用于根据提取出的用户通信号码,在第二级索引中查找与该用户通信号码对应的呼叫记录数据在文件中的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据;或者,所述第二级索引包括:用户通信号码和通信时间,以及该用户通信号码在该通信时间所产生的呼叫记录数据在文件中的位置偏移量;
所述第二查询模块包括:第二获取子模块,从所述数据查询请求中提取用户通信号码和通信时间;第二查询子模块,用于根据提取出的用户通信号码和通信时间,在第二级索引中查找与该用户通信号码和该通信时间所对应的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。
16.如权利要求15所述的装置,其特征在于,所述第一级索引中包括:关键字以及与所述关键字对应的文件标识;
所述第一查询模块包括:
第一获取子模块,用于从所述数据查询请求中获取查询条件;
第一查询子模块,用于从第一级索引中查找该与查询条件匹配的关键字所对应的文件标识,根据所述文件标识确定对应文件为存储有该查询请求所查询的数据的文件。
17.如权利要求15所述的装置,其特征在于,各文件中的数据按照设定的关键字排序;
所述第二级索引包括关键字、与所述关键字对应的数据在文件中的位置偏移量;
所述第二查询模块包括:
第二获取子模块,用于从所述数据查询请求中获取查询条件;
第二查询子模块,用于从第二级索引中查找与该查询条件匹配的关键词所对应的数据在文件中的位置偏移量,根据所述数据在文件中的位置偏移量确定所请求查询的数据。
一种数据处理和查询方法和装置\n技术领域\n[0001] 本发明涉及通信技术领域,特别是涉及一种数据处理和查询方法和装置。\n背景技术\n[0002] 电信业务CDR(Call Detail Record,呼叫详细记录)是电信网络中提供的记录用户通话事件信息的数据。例如一条典型的通话CDR中包括用户通信号码、对方号码、通话时间、业务类型等很多信息。随着当前电信业务的不断丰富,这里为了方便,我们将记录通话、短信、移动互联网等业务的记录数据统称为CDR数据。例如一条典型的移动上网CDR中包括用户通信号码、URL(Uniform Resource Locator,统一资源定位符)、HTTP(HyperText TransferProtocol,超文本传输协议)状态码、会话时间、上下行流量等很多信息。CDR的最基本作用是用来计费,但当前有更多的作用。\n[0003] 在大规模的电信运营系统中,其用户数可能达数千万甚至数亿,每天产生的通话、短信、移动互联网等CDR数据量非常巨大,例如每天产生约50亿条记录,约2TB(Terabytes,一万亿)之巨。而电信运营商往往需要保存和管理相当长一段时间的CDR数据,以上述举例的数据产生速度为例,如果需要管理3个月的数据,则共有2TB*90=180TB的数据量,因此数据量相当巨大。存储如此巨大的CDR数据是因为运营的需要,例如出于下列原因:(1)客户服务部门需要查询客户的历史数据以处理客户投诉,这类查询一般需要快速实时的响应(如在几秒以内);(2)公共安全机构需要查询几个月前的历史数据以获得调查线索,这类查询一般也需要较快速的响应(如在十秒以内);(3)CDR数据中蕴藏着丰富的行为和商业信息,可以对其进行深入的数据挖掘,指导网络维护、运营和商业决策等,这种分析型查询一般会耗时较长,有时甚至达到几小时,系统设计应该尽量缩短分析时间。\n[0004] 随着网络接入带宽的提高和移动通讯及移动互联网的普及,各类CDR数据产生的速度还在不断攀升,往往需要不断扩容,因此要求系统有很好的可扩展性。这里存储的CDR数据往往是最后的备份,因此要求系统有很高的可靠性和存储安全性。数据量巨大,因此无论是数据导入还是分析和查询,都要求很高的数据吞吐率和处理速度。\n[0005] 现有技术中,CDR数据查询系统主要有以下三种方案:\n[0006] (1)购买和部署较成熟的商用数据库系统,或者基于数据库系统进一步构建数据仓库系统。将收集到的CDR数据导入数据库系统中,数据库系统为其建立索引供以后快速查询。这种方案在实施上比较直观和简单。\n[0007] (2)将收集的CDR数据文件存储在密集的存储系统(如SAN(StorageArea Network,存储区域网络)——中,根据查询需要建立关键字段值到文件的索引,而不是精确索引到每条CDR记录,通过HASH或B-Tree查找索引。例如将需要查询的用户通信号码索引到它所在的所有文件,如果一个文件中出现多个包含该用户通信号码的CDR记录,只需记录一条索引就可以了。在查询包含该关键字段值的CDR记录时,首先从索引中查询其对应的文件列表,然后再在这些文件中顺序查找(类似grep)对应的CDR记录。对该方案的优化包括将文件按照日期进行分目录存储,查询多个文件时采用多线程并行查询等。\n[0008] (3)采用并行计算方法和工具实现。这种方案采用并行计算模型(如MapReduce),通过对大量数据的顺序查找获得结果。\n[0009] 在实现本发明的过程中,发明人发现现有技术至少存在如下问题:\n[0010] 对于现有技术1:面对巨大的数据量,数据库导入数据的速度将难以跟上数据的产生速度,数据库的索引数据也会越来越庞大以致超出系统的容量。如果要对大块的数据进行分析或数据挖掘,就需要从数据库中将这些数据读取出来,这不仅需要很长时间,而且严重影响数据库的性能。系统的可扩展性和可靠性也比较差。而且这种数据库系统和其需要的计算机设备往往非常昂贵。\n[0011] 对于现有技术2:因为采用稀疏的索引策略,这种方案的索引占用的空间比较小,建立索引的耗时也比较短。也因为采用索引查找和顺序查找混合的查询策略,而在文件中顺序查找的效率较低,响应时间比较慢。系统的可扩展性和可靠性也比较差。这种索引技术在个人信息或个人文件系统查询或搜索中用的比较多。\n[0012] 对于现有技术3:这种方式虽然是目前比较流行的方式,但查询响应速度往往也比较慢,当数据量很大时,每次查询需要占用非常多的计算和IO资源,往往需要非常大的计算机集群才能达到一定的查询性能。\n发明内容\n[0013] 本发明的实施例提供一种数据处理和查询方法和装置,用于提高了大量数据的查询速度。\n[0014] 本发明的实施例提供一种数据处理的方法,包括:\n[0015] 为数据建立第一级索引,所述数据存储在至少一个文件中,所述第一级索引用于索引各文件,所述文件中存储有相应的数据;\n[0016] 在各文件中分别建立第二级索引,所述第二级索引用于在相应文件中索引相应的数据。\n[0017] 其中,所述数据存储在文件中的方法具体为:根据数据的字段属性值设置关键字,并根据文件的设定容量和所述关键字对数据进行分割,将分割得到的不超过所述设定容量的每部分数据存储到相应的文件中,每一个文件具有对应的文件标识。\n[0018] 其中,建立第一级索引的方法具体为:根据数据的字段属性值设置关键字,根据所述关键字建立第一级索引,所述第一级索引中包括:所述关键字以及与所述关键字对应的文件标识。\n[0019] 其中,建立第二级索引的方法具体为:\n[0020] 根据数据的字段属性值设置关键字,根据所述关键字建立第二级索引,所述第二级索引中包括:所述关键字、与所述关键字对应的数据在文件中的位置偏移量。\n[0021] 其中,所述数据为呼叫记录数据,各文件中的呼叫记录数据按照用户通信号码归类存储,每个用户通信号码对应的呼叫记录数据按呼叫记录数据的时间属性排序;\n[0022] 将数据存储在文件中的方法具体为:提取数据的日期属性,按照日期值将数据存储到各文件中,每个文件中的数据具有相同的日期值,每一个文件具有对应的文件标识;\n[0023] 建立第一级索引的方法具体为:根据呼叫记录数据的日期和用户通信号码属性建立第一级索引,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期所产生的呼叫记录数据;\n[0024] 建立第二级索引的方法具体为:针对每个文件,根据文件中的呼叫记录数据的用户通信号码属性建立第二级索引,所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;或者,针对每个文件,根据文件中的呼叫记录数据的用户通信号码和通信时间属性建立第二级索引,所述第二级索引包括:用户通信号码,通信时间以及该用户通信号码在该通信时间产生的呼叫记录数据在文件中的位置偏移量。\n[0025] 其中,建立第二级索引后,还包括:对文件进行压缩。\n[0026] 其中,采用多个并行执行的任务执行数据处理,所述多个任务分布在多个节点,每个任务处理所述数据中的部分数据。\n[0027] 本发明的实施例提供一种数据查询方法,数据具有第一级索引和第二级索引,所述第一级索引用于在各文件中索引存储相应数据的文件,所述第二级索引用于在相应文件中索引相应的数据,该方法包括:\n[0028] 根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件,该文件存储有该查询请求所查询的数据;\n[0029] 根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据。\n[0030] 其中,所述第一级索引中包括:关键字以及与所述关键字对应的文件标识;\n[0031] 根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件的方法具体为:\n[0032] 从所述数据查询请求中获取查询条件,从第一级索引中查找该与查询条件匹配的关键字所对应的文件标识,根据所述文件标识确定对应文件为存储有该查询请求所查询的数据的文件。\n[0033] 其中,各文件中的数据按照设定的关键字排序;所述第二级索引包括关键字、与所述关键字对应的数据在文件中的位置偏移量;\n[0034] 根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法具体为:\n[0035] 从所述数据查询请求中获取查询条件,从第二级索引中查找与该查询条件匹配的关键词所对应的数据在文件中的位置偏移量,根据所述数据在文件中的位置偏移量确定所请求查询的数据。\n[0036] 其中,所述数据为呼叫记录数据,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期产生的呼叫记录数据;\n[0037] 根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件的方法具体为:\n[0038] 从所述数据查询请求中提取所查询的日期值和用户通信号码;\n[0039] 根据提取出的日期值和用户通信号码,在第一级索引中查找与该日期值和通信号码所对应的文件标识;\n[0040] 根据查找到的文件标识确定出存储有该查询请求所查询的数据的文件。\n[0041] 其中,所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;\n[0042] 根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法具体为:从所述数据查询请求中提取用户通信号码;根据提取出的用户通信号码,在第二级索引中查找与该用户通信号码对应的呼叫记录数据在文件中的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。\n[0043] 或者,所述第二级索引包括:用户通信号码和通信时间,以及该用户通信号码在该通信时间所产生的呼叫记录数据在文件中的位置偏移量;\n[0044] 根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法具体为:从所述数据查询请求中提取用户通信号码和通信时间;\n根据提取出的用户通信号码和通信时间,在第二级索引中查找与该用户通信号码和该通信时间所对应的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。\n[0045] 其中,当文件为压缩文件时,在根据所述数据查询请求、利用第二级索引在所查询到的文件中查找之前还包括:对文件进行解压。\n[0046] 本发明的实施例提供一种数据处理装置,包括:\n[0047] 第一索引建立模块,用于为数据建立第一级索引,所述数据存储在至少一个文件中,所述第一级索引用于索引各文件,所述文件中存储有相应的数据;\n[0048] 第二索引建立模块,在各文件中分别建立第二级索引,所述第二级索引用于在相应文件中索引相应的数据。\n[0049] 其中,还包括:\n[0050] 存储模块,用于根据数据的字段属性值设置关键字,并根据文件的设定容量和所述关键字对数据进行分割,将分割得到的不超过所述设定容量的每部分数据存储到相应的文件中,每一个文件具有对应的文件标识。\n[0051] 其中,所述第一索引建立模块具体用于:\n[0052] 根据数据的字段属性值设置关键字,根据所述关键字建立第一级索引,所述第一级索引中包括:所述关键字以及与所述关键字对应的文件标识。\n[0053] 其中,所述第二索引建立模块具体用于:\n[0054] 根据数据的字段属性值设置关键字,根据所述关键字建立第二级索引,所述第二级索引中包括:所述关键字、与所述关键字对应的数据在文件中的位置偏移量。\n[0055] 其中,所述数据为呼叫记录数据,各文件中的呼叫记录数据按照用户通信号码归类存储,每个用户通信号码对应的呼叫记录数据按呼叫记录数据的时间属性排序;\n[0056] 还包括:存储模块,用于提取数据的日期属性,按照日期值将数据存储到各文件中,每个文件中的数据具有相同的日期值,每一个文件具有对应的文件标识;\n[0057] 所述第一索引建立模块还用于:根据呼叫记录数据的日期和用户通信号码属性建立第一级索引,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期所产生的呼叫记录数据;\n[0058] 所述第二索引建立模块还用于:针对每个文件,根据文件中的呼叫记录数据的用户通信号码属性建立第二级索引,所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;或者,针对每个文件,根据文件中的呼叫记录数据的用户通信号码和通信时间属性建立第二级索引,所述第二级索引包括:用户通信号码,通信时间以及该用户通信号码在该通信时间产生的呼叫记录数据在文件中的位置偏移量。\n[0059] 本发明的实施例提供一种数据查询装置,数据具有第一级索引和第二级索引,所述第一级索引用于在各文件中索引存储相应数据的文件,所述第二级索引用于在相应文件中索引相应的数据,该装置包括:\n[0060] 第一查询模块,用于根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件,该文件存储有该查询请求所查询的数据;\n[0061] 第二查询模块,用于根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据。\n[0062] 其中,所述第一级索引中包括:关键字以及与所述关键字对应的文件标识;\n[0063] 所述第一查询模块包括:\n[0064] 第一获取子模块,用于从所述数据查询请求中获取查询条件;\n[0065] 第一查询子模块,用于从第一级索引中查找该与查询条件匹配的关键字所对应的文件标识,根据所述文件标识确定对应文件为存储有该查询请求所查询的数据的文件。\n[0066] 其中,各文件中的数据按照设定的关键字排序;所述第二级索引包括关键字、与所述关键字对应的数据在文件中的位置偏移量;\n[0067] 所述第二查询模块包括:\n[0068] 第二获取子模块,用于从所述数据查询请求中获取查询条件;\n[0069] 第二查询子模块,用于从第二级索引中查找与该查询条件匹配的关键词所对应的数据在文件中的位置偏移量,根据所述数据在文件中的位置偏移量确定所请求查询的数据。\n[0070] 其中,所述数据为呼叫记录数据,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期产生的呼叫记录数据;\n[0071] 所述第一查询模块包括:\n[0072] 第一获取子模块,用于从所述数据查询请求中提取所查询的日期值和用户通信号码;\n[0073] 第一查询子模块,用于根据提取出的日期值和用户通信号码,在第一级索引中查找与该日期值和通信号码所对应的文件标识;根据查找到的文件标识确定出存储有该查询请求所查询的数据的文件。\n[0074] 其中,所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;\n[0075] 所述第二查询模块包括:\n[0076] 第二获取子模块,用于从所述数据查询请求中提取用户通信号码;\n[0077] 第二查询子模块,用于根据提取出的用户通信号码,在第二级索引中查找与该用户通信号码对应的呼叫记录数据在文件中的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。\n[0078] 或者,所述第二级索引包括:用户通信号码和通信时间,以及该用户通信号码在该通信时间所产生的呼叫记录数据在文件中的位置偏移量;\n[0079] 所述第二查询模块包括:\n[0080] 第二获取子模块,从所述数据查询请求中提取用户通信号码和通信时间;\n[0081] 第二查询子模块,用于根据提取出的用户通信号码和通信时间,在第二级索引中查找与该用户通信号码和该通信时间所对应的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。\n[0082] 本发明的实施例提供一种数据处理装置,包括:\n[0083] 第一级索引,所述第一级索引用于索引各文件,所述文件中存储有相应的数据;\n[0084] 第二级索引,所述第二级索引用于在相应文件中索引相应的数据。\n[0085] 其中,所述第一索引中包括:关键字以及与所述关键字对应的文件标识;所述关键字根据数据的字段属性值设置。\n[0086] 其中,所述第二级索引中包括:关键字、与所述关键字对应的数据在文件中的位置偏移量;所述关键字根据数据的字段属性值设置。\n[0087] 其中,所述数据为呼叫记录数据;\n[0088] 所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期所产生的呼叫记录数据;\n[0089] 所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;或者,所述第二级索引包括:用户通信号码,通信时间以及该用户通信号码在该通信时间产生的呼叫记录数据在文件中的位置偏移量。\n[0090] 本发明实施例通过两级索引进行数据查询,且第二级索引在数据文件内,从而为大量数据的查询提供较快的查询速度。\n附图说明\n[0091] 为了更清楚地说明本发明或现有技术中的技术方案,下面将对本发明或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0092] 图1(a)为本发明的实施例中的一种数据处理方法的流程图;\n[0093] 图1(b)为本发明的实施例中的一种数据查询方法的流程图;\n[0094] 图2为本发明的实施例中的一种数据查询系统的结构示意图;\n[0095] 图3a为本发明的实施例中的第一级索引结构;\n[0096] 图3b为本发明的实施例中的第一级索引在HBase中的数据模型;\n[0097] 图4为本发明的实施例中的第二级索引结构;\n[0098] 图5为本发明的实施例中分布式系统;\n[0099] 图6为本发明的实施例中的一种数据处理的方法的流程图;\n[0100] 图7a为本发明的实施例中的一种数据处理的方法的流程图;\n[0101] 图7b为本发明的实施例中的一种数据处理的方法的流程图;\n[0102] 图8为本发明的实施例中的另一种数据查询方法的流程图;\n[0103] 图9为本发明的实施例中的一种数据处理装置的结构示意图;\n[0104] 图10为本发明的实施例中的一种数据查询装置的结构示意图。\n具体实施方式\n[0105] 下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0106] 如图1(a)所示,为本发明的实施例中的一种数据处理方法,具体包括以下步骤:\n[0107] 步骤101、为数据建立第一级索引,所述数据存储在至少一个文件中,所述第一级索引用于索引各文件,所述文件中存储有相应的数据。\n[0108] 数据存储在文件中的方法具体为:根据数据的字段属性值设置关键字,并根据文件的设定容量和所述关键字对数据进行分割,将分割得到的不超过所述设定容量的每部分数据存储到相应的文件中,每一个文件具有对应的文件标识。\n[0109] 建立第一级索引的方法具体为:根据数据的字段属性值设置关键字,根据所述关键字建立第一级索引,所述第一级索引中包括:所述关键字以及与所述关键字对应的文件标识。\n[0110] 步骤102、在各文件中分别建立第二级索引,所述第二级索引用于在相应文件中索引相应的数据。\n[0111] 根据数据的字段属性值设置关键字,根据所述关键字建立第二级索引,所述第二级索引中包括:所述关键字、与所述关键字对应的数据在文件中的位置偏移量。\n[0112] 建立第二级索引后,还包括:对文件进行压缩。\n[0113] 此外,采用多个并行执行的任务执行数据处理,所述多个任务分布在多个节点,每个任务处理所述数据中的部分数据。\n[0114] 对于上述技术方案,当数据为呼叫记录数据时,该数据处理方法为:\n[0115] (1)各文件中的呼叫记录数据按照用户通信号码归类存储,每个用户通信号码对应的呼叫记录数据按呼叫记录数据的时间属性排序;将数据存储在文件中的方法具体为:\n提取数据的日期属性,按照日期值将数据存储到各文件中,每个文件中的数据具有相同的日期值,每一个文件具有对应的文件标识。\n[0116] (2)建立第一级索引的方法具体为:根据呼叫记录数据的日期和用户通信号码属性建立第一级索引,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期所产生的呼叫记录数据。\n[0117] (3)建立第二级索引的方法具体为:针对每个文件,根据文件中的呼叫记录数据的用户通信号码属性建立第二级索引,所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量。\n[0118] 或者,针对每个文件,根据文件中的呼叫记录数据的用户通信号码和通信时间属性建立第二级索引,所述第二级索引包括:用户通信号码,通信时间以及该用户通信号码在该通信时间产生的呼叫记录数据在文件中的位置偏移量。\n[0119] 本发明实施例中以根据文件中的呼叫记录数据的用户通信号码和通信时间属性建立第二级索引为例进行说明。\n[0120] 优选地,建立第二级索引后,还包括:对文件进行压缩。\n[0121] 优选地,采用多个并行执行的任务执行数据处理,所述多个任务分布在多个节点,每个任务处理所述数据中的部分数据。\n[0122] 如图1(a)所示,为本发明的实施例中的一种数据查询方法,数据具有第一级索引和第二级索引,所述第一级索引用于在各文件中索引存储相应数据的文件,所述第二级索引用于在相应文件中索引相应的数据,该方法具体包括以下步骤:\n[0123] 步骤111、根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件,该文件存储有该查询请求所查询的数据。\n[0124] 所述第一级索引中包括:关键字以及与所述关键字对应的文件标识;\n[0125] 根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件的方法具体为:从所述数据查询请求中获取查询条件,从第一级索引中查找该与查询条件匹配的关键字所对应的文件标识,根据所述文件标识确定对应文件为存储有该查询请求所查询的数据的文件。\n[0126] 步骤112、根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据。\n[0127] 各文件中的数据按照设定的关键字排序;所述第二级索引包括关键字、与所述关键字对应的数据在文件中的位置偏移量;\n[0128] 根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法具体为:从所述数据查询请求中获取查询条件,从第二级索引中查找与该查询条件匹配的关键词所对应的数据在文件中的位置偏移量,根据所述数据在文件中的位置偏移量确定所请求查询的数据。\n[0129] 对于上述技术方案,当数据为呼叫记录数据时,该数据查询方法为:\n[0130] (1)所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期产生的呼叫记录数据;\n[0131] 根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件的方法具体为:从所述数据查询请求中提取所查询的日期值和用户通信号码;根据提取出的日期值和用户通信号码,在第一级索引中查找与该日期值和通信号码所对应的文件标识;根据查找到的文件标识确定出存储有该查询请求所查询的数据的文件。\n[0132] (2)根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法包括以下两种情况中的任一种:\n[0133] 方式一、所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;\n[0134] 根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法具体为:从所述数据查询请求中提取用户通信号码;根据提取出的用户通信号码,在第二级索引中查找与该用户通信号码对应的呼叫记录数据在文件中的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。\n[0135] 方式二、所述第二级索引包括:用户通信号码和通信时间,以及该用户通信号码在该通信时间所产生的呼叫记录数据在文件中的位置偏移量;\n[0136] 根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据的方法具体为:从所述数据查询请求中提取用户通信号码和通信时间;\n根据提取出的用户通信号码和通信时间,在第二级索引中查找与该用户通信号码和该通信时间所对应的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。\n[0137] 本发明实施例中以所述第二级索引包括:用户通信号码和通信时间,以及该用户通信号码在该通信时间所产生的呼叫记录数据在文件中的位置偏移量为例进行说明。\n[0138] 需要说明的是,本发明实施例中的二级索引结构一种优选实施方式,本发明的技术方案也可以扩展到多级索引结构,只要最后一级索引与被所索引的数据在同一存储实体中,例如同在一个文件夹内,均属于本发明的保护范围。\n[0139] 本发明实施例中的数据可以是任何形式的数据,以下本发明数据为呼叫记录数据,即CDR数据为优选实施例进行说明,但并不限于此。其中,设定的关键字为CDR数据的字段属性,如:CDR数据所属的日期、用户通信号码和通信时间等。设定的关键字可以为一个字段属性或多个字段属性的组合。\n[0140] 本发明实施例提供一种数据查询方法和系统,更好地满足电信行业管理和查询大规模的CDR数据时的系统可扩展性、数据可靠性、快速数据导入和快速查询响应能力、可扩展的数据分析能力,以及较低成本的要求。根据CDR数据管理和查询的特点可知:CDR数据是一种时间序列数据,其历史数据不需要被修改,即历史数据是相对静态的数据;而且,对特定的历史记录,其访问不是经常性的。因此本发明的实施例基于上述特点,提出了一种数据查询的方法,舍弃了商用数据库系统中复杂且用不到的众多功能,实现快速地处理和索引数据,而不会出现数据处理和索引的速度比数据生成的速度还慢的问题,且存储的数据量远大于商业数据库系统,并且可以根据需要不断扩展。从而减少了历史静态数据占用的系统资源,提高了查询速度。由于CDR数据具有海量的特性,优选地,本发明的实施例中对数据的存储和处理采用分布式文件系统和并行处理的系统,从而提高系统的可靠性和高效性。具体地,利用分布式文件系统进行多份存储(数据更安全),有针对性地建立简单实用的索引系统,使索引的速度和索引占用的空间大大减小;有组织的CDR数据文件方式存放,使数据分析和数据挖掘工作更方便和高效地实现,从而大大降低系统投资。\n[0141] 为了实现上述本发明实施例中的一种数据查询的方法,本发明提供了下述数据查询系统。本发明实施例中的一种数据查询的系统,如图2所示,该系统包括:预处理模块\n210、存储模块220、查询模块230和用户界面(UI)240。\n[0142] 预处理模块210具体为采用MapReduce并行计算框架(Apache HadoopMapReduce)构建高性能的CDR数据预处理和索引过程以及数据分析平台。该模块主要用于并行地批量处理每天收集的原始CDR文件,对原始CDR文件进行排序、分组和建立索引,生成CDR数据文件及其索引。\n[0143] 存储模块220包括:索引存储子模块221和数据存储子模块222。其中,索引存储子模块221,用于存储由预处理模块210生成的CRD数据索引,其中采用类似Google Bigtable的分布式结构化数据存储系统模型(如ApacheHadoop HBase)或其他具有海量Key-Value对的存储系统构建高可靠性的和可扩展的分布式索引存储系统。数据存储子模块222,用于将由预处理模块210生成的CDR文件(CDRFile)按照特定的目录结构进行存储,其中采用类似Google GFS的分布式文件系统模型(Apache Hadoop HDFS)构建高的可靠性和可扩展的分布式文件系统作为基础平台和实现CDR文件的存储。优选地,本发明实施例中采用两级索引结构,其中索引存储子模块221使用的HBase的数据模型以类似分布式B+Tree的形式为系统构建了全局的第一级索引系统,第二级索引建立在每个文件内部。\n[0144] 如图3a所示,为本发明实施例中的第一级索引结构,优选地,采用用户通信号码和日期作为关键字Key,索引中的Value为CDR文件名(为CDR文件的文件标识)、还可以包括起始和结束时间标签、记录数等,如果某个用户在某日期没有CDR记录,对应索引就为空。由于第一级索引非常稀疏,占用空间非常小,因此可以大大加快预处理和建立索引阶段的处理速度。为每批CDR数据建立的索引数据以临时压缩文件的形式暂时存储在分布式文件系统HDFS中,其内容是简单的Key-Value形式的索引记录。为了将这批索引数据合并加载到全局的索引结构中,同样采用MapReduce并行作业读取临时索引文件,并插入到全局的HBase索引表中。如图3b所示,为第一级索引在HBase中的数据模型,其中Rowkey(行标识)为用户通信号码,Column Qualifier(列标识)为日期,单元的时间标签(即起始时间标签)为该用户在该CDR文件中的第一条CDR数据的通信时间,单元内存储CDR文件名、结束时间标签、记录数等。\n[0145] 如图4所示,为本发明实施例中包含第二级索引结构的CDR数据文件,将CDR数据按照从其字段属性中提取的关键字排序并按块(块大小可以设定,缺省为64KB)索引和压缩。其中,CDR数据文件包括各个数据块,数据块索引、变长元数据和固定长尾部元数据等等。其中,数据块索引为上述每一个数据块的索引,包括每一个数据块的起始关键字(为每一个数据块对应的第一条CDR数据的关键字Key,如用户通信号码和通信时间)和位置偏移量(即Value,为该关键字对应的CDR数据在文件中的位置);变长元数据中的起始关键字为数据块1的关键字,结束关键字为数据块n的关键字,关键字比较器用于在查询时对关键字进行比较;固定长尾部元数据包括变长元数据偏移量、数据块索引偏移量、数据块数量、总记录数量、压缩前数据字节数、压缩算法和版本号。上述为一种优选的第二级索引结构,但并不限于此,凡是能够进行第二级索引的结构均属于本发明的保护范围。该第二级索引结构建立在处理后的CDR数据文件内部,通过数据块索引中的起始关键字(如用户通信号码和由通信时间而得的时间标签)和位置偏移量定位到某一数据块中的第一条CDR数据(所要查询的CDR数据在该数据块中),并可以从此位置顺序访问,直到在结束时间标签内查找到所要查询的CDR数据。例如:文件1中存储了用户A的100条CDR数据,以每10条CDR数据为一个数据块进行压缩存储,数据块索引中包括每一个数据块的起始关键字(即每一个数据块中第一条CDR数据的关键字)以及位置偏移量。当用户所查询的CDR数据为该文件中的第15条CDR数据时,首先通过数据块2的关键字和位置偏移量查找到数据块2,并在数据块2中顺序访问,查找到第15条CDR数据。\n[0146] 需要说明的是,CDR文件中的CDR数据可以不以数据块的形式索引和存储,而是以每一条CDR数据的形式索引和存储,二者的查询原理类似,但由于CDR数据的数据量庞大,以数据块的形式索引和存储可以提高查询效率。两种方式并无实质的区别。\n[0147] 其中上述每一个部分所包括的内容是一种优选实施方式,但并不限于此,可以根据索引需求进行改变,凡是根据该第二级索引进行查询的均属于本发明的保护范围。优选地,第一级索引的关键字和第二级索引的关键字可以相同,也可以不相同,可以根据查询的粒度进行设置。\n[0148] 查询模块230,包括查询子模块231和并行数据分析子模块232。其中,查询子模块231用于接收用户界面240所发送的查询请求,并根据查询请求在索引存储子模块221中进行查询。必要时(数据量大时),启动并行数据分析子模块232,与查询子模块231配合,进行并行查询。\n[0149] 由于上述所有基础构件都采用分布式模型,因此系统可以通过增加或减少PC服务器节点来扩展或缩小。数据的可靠性通过在分布式文件系统中配置3份数据块备份保证,这样集群中的服务器故障不会造成数据的丢失。并对CDR文件和索引数据采用块压缩方式压缩存储,对CDR数据的压缩比可达到8∶1,对索引数据的压缩比可达到5∶1。压缩一方面节约了存储空间,另一方面减少了数据访问时占用的IO带宽。如图5所示,将上述数据查询系统中的分布式文件系统、分布式结构化存储系统、并行数据处理系统和查询系统都分布式地运行在所有这些节点上组成一个整体,均衡地利用各节点的存储和计算能力。其中作为查询负荷分担的LVS服务器也可以运行在主控节点上。其中,根据待管理的数据容量和查询性能的要求,估算PC服务器集群的节点数和配置。如图5所示,在PC服务器集群上部署系统中上述各模块。其中分布式文件系统HDFS是基础模块,在其上部署HBase模块和MapReduce模块,然后部署其他模块。当然,上述各模块的部署只是优选的实施方式,凡是可以完成上述功能的模块布置均属于本发明的保护范围。\n[0150] 如图6所示,为本发明实施例提供的一种数据处理的方法,通过对原始CDR数据进行预处理,获得处理后的CDR数据文件及其用于查询的索引,具体包括以下步骤:\n[0151] 步骤601、导入原始CDR文件。\n[0152] 首先,用户定义原始CDR文件格式,例如CSV格式。原始CDR数据存储在原始CDR文件中,将原始CDR文件导入到分布式文件系统HDFS中的待处理目录中等待预处理索引程序的批量处理。\n[0153] 步骤602、判断导入的原始CDR文件是否满足预设的预处理启动条件。\n[0154] 当判断导入的原始CDR文件满足预设的预处理启动条件时,转到步骤603;\n[0155] 当判断导入的原始CDR文件不满足预设的预处理启动条件时,转到步骤601。\n[0156] 其中,预设的预处理启动条件为原始CDR数据达到预设容量或到原始CDR数据导入到分布式文件系统的时间达到预设的时间周期或事件触发(例如:每次定时(如24小时等)CDR数据导入后)。当然,也可为其他可供判断的预处理启动条件,如接收到预处理请求等,因此上述预处理启动条件不应视为对本发明的限制。\n[0157] 步骤603、启动预处理作业。\n[0158] 具体地,启动预处理作业具体包括以下步骤:\n[0159] (1)对原始CDR数据按照用户通信号码和时间排序。\n[0160] 具体地,将同一用户同一日期的原始CDR数据归类在一起。\n[0161] (2)按照日期生成一批处理后的CDR文件和临时的第一级索引文件,其中第二级索引文件位于处理后的CDR文件中。\n[0162] 需要说明的是,该作业将运行一段时间,该时间由原始CDR文件容量不同而不同。\n[0163] 步骤604、判断预处理作业是否成功。\n[0164] 当判断预处理作业成功时,转到步骤605;\n[0165] 当判断预处理作业失败时,转到步骤603,重复进行预处理作业和索引作业。\n[0166] 步骤605、进行相关更新操作。\n[0167] 当判断预处理作业成功时,按顺序进行如下处理:\n[0168] (1)将生成的处理后的CDR文件搬移到最终存储目录,该存储目录用于存储所有处理后的CDR文件,即将本批处理后的文件更新到存储所有处理后的文件处。\n[0169] 其中,处理后的CDR数据按照固定的大小形成处理后的CDR文件,如64KB。若数据在输出时形成了小容量的CDR文件,如1KB,则当存在多个小容量的CDR文件时,可以对其进行合并。\n[0170] (2)删除本批处理的原始CDR文件。\n[0171] (3)启动更新索引的另一个MapReduce并行作业。其中,更新索引的另一个MapReduce并行作业将把本批生成的索引数据加载到HBase中的索引表中。\n[0172] 优选地,步骤605中任一操作发生失败时,系统将自动进行报警提醒,自行进行处理或等待指令。\n[0173] 步骤606、判断相关更新操作是否成功。\n[0174] 当判断相关更新操作均成功时,转到步骤607;\n[0175] 否则,则暂时保留临时的第一级索引文件,等待与下批数据一同更新,转到步骤\n601。\n[0176] 步骤607、删除临时的第一级索引文件。\n[0177] 需要说明的是,本发明实施例中采用用户通信号码和日期作为关键字只是一种优选的实施方式,凡是CDR数据的某一属性作为关键字方案均属于本发明的保护范围,如每一条CDR数据的容量等。\n[0178] 如图7a和图7b所示,为本发明实施例提供的一种数据理方法,具体包括以下步骤:\n[0179] 步骤701、分配原始CDR文件。\n[0180] 首先,预处理和索引作业把待处理的原始CDR文件分成多份均匀指派到各个节点上并行处理。\n[0181] 步骤702、启动预处理作业。\n[0182] 具体地,启动预处理作业包括以下步骤:\n[0183] (1)每个Map任务读取和解析原始CDR记录,清除格式错误的CDR,将CDR记录按照“日期-用户通信号码-时间”排序。\n[0184] 具体地,每个Reduce任务将同一用户同一日期的CDR分组归并在一起,并按日期分别输出不同的CDR文件。每一个CDR文件有预设的容量,当该CDR文件达到容量后,建立新的CDR文件并输出,直到将此次批处理的原始CDR数据输出完毕。\n[0185] 当然,也可以将CDR记录仅按照日期排序,但按照“日期-用户通信号码-时间”排序更优,有助于后续索引的建立和查询。\n[0186] (2)根据排序后的CDR记录生成索引文件。\n[0187] 根据预设规则,建立第一级索引和第二级索引。其中,第一级索引用于对多个本批处理后的文件进行索引,第二级索引在本批处理后的文件中,用于对本批处理后的文件中的多个本批原始数据进行索引。\n[0188] 具体地,根据呼叫记录数据的日期和用户通信号码属性建立第一级索引,所述第一级索引包括:日期值、用户通信号码和文件标识,还可以包括:起始和结束时间标签、记录数等。所述文件标识对应的文件存储有该用户通信号码在该日期所产生的呼叫记录数据。如果某个用户在某日期没有CDR记录,对应索引就为空。\n[0189] 建立第二级索引的方法具体为:针对每个文件,根据文件中的呼叫记录数据的用户通信号码和通信时间属性建立第二级索引,所述第二级索引包括:用户通信号码,通信时间以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量等。其中,CDR数据按照关键字排序并按块(块大小可以设定,缺省为64KB)索引和压缩。通过关键字(如用户通信号码和时间标签,即通信时间)定位到CDR记录的起始位置,并可以从此位置顺序访问。\n[0190] 步骤703、输出第一级索引数据到临时索引文件中,第二级索引放置于对应的文件中。\n[0191] 本发明实施例提供一种数据查询方法,如图8所示,具体包括以下步骤:\n[0192] 步骤801、查询服务器接收来自用户的查询请求。\n[0193] 查询服务器是基于HTTP服务器的服务器端程序,查询客户端是基于浏览器的Web用户界面。查询服务器接收来自用户的查询请求,如“特定用户通信号码和一个时间段”。\n[0194] 步骤802、根据查询请求,按照第一级索引进行查询,获取处理后的相关CDR文件。\n[0195] 首先从查询请求中提取所查询的日期值和用户通信号码;然后根据第一级索引,快速从中获取可能涉及的处理后的CDR文件列表,并可根据索引中提供的起始时间标签和结束时间标签过滤掉不相关的处理后的CDR文件。\n[0196] 步骤803、根据查询请求,按照第二级索引进行查询,获取CDR数据。\n[0197] 从所述数据查询请求中提取用户通信号码和通信时间,优选地,该通信时间可以为时间点或时间段;在从步骤802中获取的相关处理后的CDR文件中,根据所提取的用户通信号码和通信时间快速定位到某一数据块的起始位置,并开始顺序读取,直到结束时间标签为止,从而获取到所要查询的CDR数据。如果相关的CDR文件数量较大(如大于10个),查询服务器模块可以启动并行查询过程,将文件扫描工作分发到多个服务器中并行进行,并汇总结果数据。\n[0198] 需要说明的是,对存储的CDR数据进行分析和数据挖掘时,只需在系统现有的MapReduce框架上编写相应的数据分析和数挖掘算法程序对存储的CDR文件进行读取和分析。在实际生产系统中,可以通过配置使系统在夜晚集中进行数据导入和预处理索引工作,而在白天可以接受分析型查询任务。也可以通过配置使系统在数据导入和预处理索引工作的同时接受分析型查询任务。\n[0199] 需要说明的是,本发明实施例中第一级索引和第二级索引各自的查询粒度仅为一种优选的实施方式,凡是通过二级索引最终查找到所要查询的数据均属于本发明的保护范围,例如:仅通过第一级索引查找到用户在指定日期的CDR数据所在文件,再由第二级索引查找到最终的CDR数据;或直接通过第一级索引查找到用户在指定日期和指定时间段内的CDR数据所在文件,再由第二级索引查找到最终的CDR数据。\n[0200] 本发明实施例提供一种数据处理装置,如图9所示,该装置900包括:\n[0201] 第一索引建立模块910,用于为数据建立第一级索引,所述数据存储在至少一个文件中,所述第一级索引用于索引各文件,所述文件中存储有相应的数据;\n[0202] 第二索引建立模块920,在各文件中分别建立第二级索引,所述第二级索引用于在相应文件中索引相应的数据。\n[0203] 其中,还包括:\n[0204] 存储模块930,用于根据数据的字段属性值设置关键字,并根据文件的设定容量和所述关键字对数据进行分割,将分割得到的不超过所述设定容量的每部分数据存储到相应的文件中,每一个文件具有对应的文件标识。\n[0205] 其中,所述第一索引建立模块具体用于:\n[0206] 根据数据的字段属性值设置关键字,根据所述关键字建立第一级索引,所述第一级索引中包括:所述关键字以及与所述关键字对应的文件标识。\n[0207] 其中,所述第二索引建立模块具体用于:\n[0208] 根据数据的字段属性值设置关键字,根据所述关键字建立第二级索引,所述第二级索引中包括:所述关键字、与所述关键字对应的数据在文件中的位置偏移量;或者,针对每个文件,根据文件中的呼叫记录数据的用户通信号码属性建立第二级索引,所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量。或者针对每个文件,根据文件中的呼叫记录数据的用户通信号码和通信时间属性建立第二级索引,所述第二级索引包括:用户通信号码,通信时间以及该用户通信号码在该通信时间产生的呼叫记录数据在文件中的位置偏移量。\n[0209] 本发明实施例提供一种数据查询装置,如图10所示,数据具有第一级索引和第二级索引,所述第一级索引用于在各文件中索引存储相应数据的文件,所述第二级索引用于在相应文件中索引相应的数据,该装置1000包括:\n[0210] 第一查询模块1010,用于根据接收到的数据查询请求、利用第一级索引在各个文件中查找,得到查询到的文件,该文件存储有该查询请求所查询的数据;\n[0211] 第二查询模块1020,用于根据所述数据查询请求、利用第二级索引在所查询到的文件中查找,得到该查询请求所查询的数据。\n[0212] 其中,所述第一级索引中包括:关键字以及与所述关键字对应的文件标识;\n[0213] 第一查询模块1010包括:\n[0214] 第一获取子模块1011,用于从所述数据查询请求中获取查询条件;\n[0215] 第一查询子模块1021,用于从第一级索引中查找该与查询条件匹配的关键字所对应的文件标识,根据所述文件标识确定对应文件为存储有该查询请求所查询的数据的文件。\n[0216] 当所述数据为呼叫记录数据时,所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期产生的呼叫记录数据;\n[0217] 第一获取子模块1011还用于:从所述数据查询请求中提取所查询的日期值和用户通信号码;\n[0218] 第一查询子模块1012还用于:根据提取出的日期值和用户通信号码,在第一级索引中查找与该日期值和通信号码所对应的文件标识;根据查找到的文件标识确定出存储有该查询请求所查询的数据的文件。\n[0219] 其中,各文件中的数据按照设定的关键字排序;所述第二级索引包括关键字、与所述关键字对应的数据在文件中的位置偏移量;\n[0220] 第二查询模块1020包括:\n[0221] 第二获取子模块1021,用于从所述数据查询请求中获取查询条件;\n[0222] 第二查询子模块1022,用于从第二级索引中查找与该查询条件匹配的关键词所对应的数据在文件中的位置偏移量,根据所述数据在文件中的位置偏移量确定所请求查询的数据。\n[0223] 当所述数据为呼叫记录数据时,所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;\n[0224] 第二获取子模块1021还用于:从所述数据查询请求中提取用户通信号码;\n[0225] 第二查询子模块1022还用于:根据提取出的用户通信号码,在第二级索引中查找与该用户通信号码对应的呼叫记录数据在文件中的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。\n[0226] 或者,所述第二级索引包括:用户通信号码和通信时间,以及该用户通信号码在该通信时间所产生的呼叫记录数据在文件中的位置偏移量;\n[0227] 第二获取子模块1021还用于:从所述数据查询请求中提取用户通信号码和通信时间;\n[0228] 第二查询子模块1022还用于:根据提取出的用户通信号码和通信时间,在第二级索引中查找与该用户通信号码和该通信时间所对应的位置偏移量;根据查找到的位置偏移量,确定出该查询请求所查询的数据。\n[0229] 本发明的实施例提供一种数据处理装置,包括:\n[0230] 第一级索引,所述第一级索引用于索引各文件,所述文件中存储有相应的数据;\n[0231] 第二级索引,所述第二级索引用于在相应文件中索引相应的数据。\n[0232] 其中,所述第一索引中包括:关键字以及与所述关键字对应的文件标识;所述关键字根据数据的字段属性值设置。\n[0233] 其中,所述第二级索引中包括:关键字、与所述关键字对应的数据在文件中的位置偏移量;所述关键字根据数据的字段属性值设置。\n[0234] 其中,所述数据为呼叫记录数据;\n[0235] 所述第一级索引包括:日期值、用户通信号码和文件标识,所述文件标识对应的文件存储有该用户通信号码在该日期所产生的呼叫记录数据;\n[0236] 所述第二级索引包括:用户通信号码,以及该用户通信号码产生的呼叫记录数据在文件中的位置偏移量;或者,所述第二级索引包括:用户通信号码,通信时间以及该用户通信号码在该通信时间产生的呼叫记录数据在文件中的位置偏移量。\n[0237] 本发明实施例通过两级索引进行数据查询,且第二级索引在数据文件内,从而为大量数据的查询提供较快的查询速度。\n[0238] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。\n[0239] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
法律信息
- 2017-05-17
专利权的转移
登记生效日: 2017.04.24
专利权人由中国移动通信集团公司变更为中移(苏州)软件技术有限公司
地址由100032 北京市西城区金融大街29号变更为215163 江苏省苏州市高新区科灵路78号
专利权人变更为中国移动通信有限公司研究院 中国移动通信集团公司
- 2014-03-26
- 2011-11-23
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201010115869.2
申请日: 2010.03.01
- 2011-09-21
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-09-16
|
2009-04-21
| | |
2
| |
2007-06-20
|
2006-11-15
| | |
3
| |
2009-06-17
|
2008-11-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |