一种海量数据统计方法

文档序号:6555508阅读:202来源:国知局
专利名称:一种海量数据统计方法
技术领域
本发明涉及一种信息技术,尤其涉及一种海量数据统计方法。
背景技术
传统大型应用软件系统对其应用的管理对象采集必要的数据进行统计分析,一般而言,统计分析的数据量都非常巨大,如中国移动在进行业务推广过程中需要针对不同的用户群采用不同的推广策略。目前分析用户群主要是根据用户产生的话单来分析,每个省的短信话单每天就有好几百万甚至上千万,并且数据还要保存3个月。要从如此海量的数据中找出各类用户群,并针对性地开展业务推广,传统的方法是先把话单数据导入数据库,由于许多数据分布在不同的表中,因此需要根据多表关联遍历数据库,当同时关联表超过3-4个时,查询效率明显降低,逐条记录查询、插入用户话单和其他统计报表又将严重影响统计分析性能。况且,用户按其属性分类包括免费用户群(黑名单),点播业务用户群,点播业务高端用户群,包月业务用户群,包月业务高端用户群,白银用户,黄金用户,钻石用户。每一种用户都有各自的查询条件,每月还需根据上月的话单情况更新用户分类数据,完成如此多的业务统计分析按传统的方法需要单独的系统,而且运行非常低,如和其他业务平台共同运行则会严重影响其他业务的正常运行。
免费用户群(黑名单)此类用户只使用SP提供的免费业务或只在业务的免费期使用业务,从不使用付费业务。这些用户对短信业务费用非常敏感,是造成短信业务投诉的主要用户群。我们将其定义为″黑名单″,是指在短信业务推广过程中要尽量避免此类用户。
点播业务用户群此类用户只使用SP提供的点播业务,从不使用包月定制业务。这些用户往往对SP的业务非常熟悉,对业务的及时性、专业性要求较高,对短信资费较为敏感,不过一旦业务定位符合其需要,此类用户也极易成为点播业务的高端用户。
点播业务高端用户群此类用户是点播业务的高端用户。除了具备点播业务用户的特点之外,此类用户在点播业务上的支出较大,往往也能在短信中获利。他们是点播业务的忠实用户,较易接受短信业务的推广。
高端的界定标准是每月点播的条数。可由用户选择。
包月业务用户群此类用户只使用SP提供的包月定制业务。这些用户对SP的业务不是非常熟悉,对业务的成熟度要求较高,对短信资费不是非常敏感,较易接受短信业务的推广。
包月业务高端用户群此类用户是包月业务的高端用户。这些用户对SP的业务非常熟悉,对业务的接纳程度高,对短信资费不敏感,很容易接受短信业务的推广。
高端的界定标准是每月包月业务的总项目数。可由用户选择。
白银用户此类用户属于短信业务的高端用户。这些用户在短信业务上的花费较高。是运营商应该采取一定的奖励策略保有的用户群。
此类用户的界定标准是每月包月业务的总项目数与点播业务总条数的加权和。可由用户选择。
黄金用户此类用户属于短信业务的高端用户。这些用户在短信业务上的花费较白银用户高。是运营商应该采取更高的奖励策略保有的用户群。
此类用户的界定标准是每月包月业务的总项目数与点播业务总条数的加权和。可由用户选择。
钻石用户此类用户属于短信业务的高端用户。这些用户在短信业务上的花费较黄金用户高。是运营商应该想尽一切办法保有的用户群。
此类用户的界定标准是每月包月业务的总项目数与点播业务总条数的加权和。可由用户选择。

发明内容
本发明的目的,在于提供一种海量数据统计方法。
本发明的目的是这样实现的一种海量数据统计方法,包括以下内容A、建立MT、MC、MO三个数据库表结构A1、把MT、MC、MO三个表分别分成多个分区,每个分区相当于一个数据库小表,数据插入按分区进行,按日期划分分区,分区号根据日期产生且值在分区号范围内循环更新;A2、在MT、MC、MO三个表中分别建立五个数据表空间,一个分区使用一个表空间,相隔五个号的分区使用相同的表空间,即第6个分区使用和第1个分区相同的表空间,其他类推;A3、将CDR话单按属性区分为免费用户群、点播用户群和包月用户群,将免费用户群话单数据存放在MT表中、将点播用户群话单数据存放在MC表中、将包月用户群话单数据存放在MO表中;A4、各分区分别根据手机号建立索引;A5、建立免费用户群表,该表包含用户手机号码和状态二个字段,数据存放在特定的表空间,用户手机号码为主键,并使用索引表空间;A6、建立点播用户群表,该表包含用户手机号码、状态和点播数三个字段,数据存放在特定的表空间,用户手机号码为主键,并使用索引表空间;A7、建立包月用户群表,该表包含用户手机号码、状态和包月业务的项目数三个字段,数据存放在特定的表空间,用户手机号码为主键,并使用索引表空间;B、对特定属性的用户群从月初到月尾按天统计一个月的数据B1、查询并保存该月CDR中的只使用免费业务的用户并过滤已经存在的记录;B2、查询并保存该月CDR中的只使用点播业务的用户并过滤已经存在的记录;
B3、查询并保存该月CDR中的只使用包月业务的用户并过滤已经存在的记录;B4、对免费用户群中有使用过其他业务的记录将其状态设置为无效B5、对点播用户群中有使用过其他业务的记录将其状态设置为无效;B6、对包月用户群中有使用过其他业务的记录将其状态设置为无效。
步骤A1中所述的MT、MC、MO三个表分别分成91个分区,用于保存连续90天的数据,每天的数据依序插入各个分区,当90天的数据分别插入90个分区后,第91天的数据插入第91个分区,然后删除第1个分区的数据,实现始终保存最近90天的数据。
步骤B1、中所述的查询并保存该月CDR中的只使用免费业务的用户并过滤已经存在的记录、步骤B2中所述的查询并保存该月CDR中的只使用点播业务的用户并过滤已经存在的记录、步骤B3中所述的查询并保存该月CDR中的只使用包月业务的用户并过滤已经存在的记录方法相同,步骤如下a、根据统计任务运行时间,计算上月第一天的日期;b、计算上月最后一天的日期;c、计算上月第一天的分区号;d、初始化参数计算日期=上月的第一天的日期;e、初始化参数计算分区号=上月的第一天的分区号;f、根据计算日期是否小于等于上月最后一天的日期的判断按天循环插入用户进行查询。
上述步骤f中所述的根据计算日期是否小于等于上月最后一天的日期的判断按天循环插入用户进行查询的方法如下f1、在特定属性的用户群表中根据分区号查询所有特定属性用户的唯一的手机号,该手机号必须同时不在其它用户群表中,该查询结果不包含已存在特定属性用户群表中的手机号;f2、将查询结果每100条作为一批插入数据库,直到全部插完;f3、循环计算下一天的日期;f4、循环计算下一天的分区号直到处理完该月的所有数据;步骤B4中所述的对免费用户群中有使用过其他业务的记录将其状态设置为无效、步骤B5中所述的对点播用户群中有使用过其他业务的记录将其状态设置为无效、步骤B4中所述的对包月用户群中有使用过其他业务的记录将其状态设置为无效的方法相同,步骤如下a、初始化参数计算日期=上月的第一天的日期;b、初始化参数计算分区号=上月的第一天的分区号;c、根据计算日期是否小于等于上月最后一天的日期的判断按天循环更新用户群表。
上述步骤c中所述的根据计算日期是否小于等于上月最后一天的日期的判断按天循环更新用户群表的方法如下c1、查询特定属性用户群表中状态为有效的手机号,根据分区号查询特定用户群表中其它用户群的用户手机号,取二者查询结果的交集作为查询结果;c2、将查询结果每100条作为一批更新特定属性用户群表的用户手机号对应的状态为无效,直到全部更新完;c3、查询特定属性用户群表中状态为有效的手机号,根据分区号查询另一特定属性用户群表中第三类特定属性用户群的用户手机号,取二者查询结果的交集作为查询结果;c4、将查询结果每100条作为一批更新特定用户群表的用户手机号对应的状态为无效,直到全部更新完;c5、循环计算下一天日期;c6、循环计算下一天的分区号直到处理完该月的所有数据;步骤c1和c3中所述的交集为使用过其他业务的用户。
本发明海量数据统计方法能够避免由于数据量大而降低整个应用系统性能,进而降低整个软件系统运行平台的费用,提高其运行效率。例如当将分区设置为91个时,由于90天的CDR数据被分别插到90个分区里,每个分区只有一天的数据,分区上建有索引,数据的查询和统计分析时可根据日期计算要查询的分区号,根据分区号查找指定分区的数据,由于每个分区的数据量只相当于总数据的九十分之一,因此查询和保存数据的速度也得到了极大的提高。多表关联改为单表查询大大提高了查询速度。查询结果的差集和交集技术又使需处理的数据量极大地减少,从而极大地提高了统计性能。批插入和更新技术的应用使统计数据的保存速度也得到了极大的提高。系统还能自动保存90天的数据。该技术的应用使得对系统的硬件投资大大地降低,充分满足了中国移动对业务的需求。


图1为本发明的应用程序流程图。
具体实施例方式
本发明提出了一种海量数据统计分析方法和处理系统,下面结合免费用户群(黑名单)的统计技术对发明的海量数据统计方法作进一步的说明。
首先建立MT、MC、MO三个数据库表,把每个表分成多个分区,每个分区相当一个小表,数据插入按分区进行,按日期划分分区。如需保存90天的数据,则建立91个分区,每天的数据插入各自的分区,当90天的数据分别插入90个分区后,第91天的数据插入第91个分区,然后删除第一个分区的数据,这样始终能保存最近90天的数据。分区号根据日期产生且值在1-91之间循环。本发明采用这一分区方案。
为进一步提高数据库并行插入和查询效率,对三个数据库表分别建立五个数据表空间,一个分区一个表空间,相隔五个的分区号使用相同的表空间,即第六个分区使用和第一个分区相同的表空间,其他类推。
然后根据CDR话单属性,把话单数据分别存放在MT、MC、MO三个表中,即将免费用户群话单数据存放在MT表中,将点播用户群话单数据存放在MC表中,将包月用户群话单数据存放在MO表中。这样可减少每个表的数据量,提高查询和保存速度。并在分区上根据手机号建立索引,以提高查询效率。
建完了MT、MC、MO表后,还需建立免费用户群(黑名单)表、点播用户群表和包月用户群表。免费用户群表包含用户手机号码和状态(无效,有效)二个字段。数据存放在特定的表空间,用户手机号码为主键,并使用索引表空间。点播用户群表包含用户手机号码,状态(无效,有效)和点播数三个字段。数据存放在特定的表空间,用户手机号码为主键,并使用索引表空间。包月用户群表包含用户手机号码,状态(无效,有效)和包月业务的项目数三个字段。数据存放在特定的表空间,用户手机号码为主键,并使用索引表空间。
建立完数据库表结构后即可执行相关统计。我们统计一个月的数据是根据按天统计的原理,即从该月的第一天统计到该月的最后一天,这样就可以利用分区查询和插入的方法大幅度提高数据查询和插入的速度。图1为本发明的应用程序流程图。下面结合图1对本发明的海量数据统计方法说明如下首先查询并保存该月CDR中的只使用免费业务并过滤已经存在的记录,方法如下1、根据统计任务运行时间,计算上月第一天的日期,2、计算上月最后一天的日期,3、计算上月第一天的分区号,4、初始化参数计算日期=上月的第一天的日期,5、初始化参数计算分区号=上月的第一天的分区号,6、根据计算日期是否小于等于上月最后一天的日期的判断按天循环插入黑名单,方法如下61、在MT表中根据分区号查询所有付费类型为免费的唯一的手机号,该手机号必须同时不在点播用户群表和包月用户群表中,该查询结果不包含已存在黑名单表中的手机号。该方法采用了二种关键技术来提高性能。一是把多表关联改为多个单表的查询,从而大大加快查询速度;二是通过取查询结果的差集来大大减少查询的结果从而极大地提高数据插入的速度。
62、将查询结果每100条作为一批插入数据库,直到全部插完。批处理的应用极大地提高了数据插入的速度。
63、循环计算下一天的日期。
64、循环计算下一天的分区号直到处理完该月的所有数据。
用同黑名单处理的方式查询并保存该月CDR中的只使用点播业务并过滤已经存在的记录。
用同黑名单处理的方式查询并保存该月CDR中的只使用包月业务并过滤已经存在的记录。
完成查询并保存该月cdr中的只使用免费业务、只使用点播业务、只使用包月业务的用户群后还需对免费用户群中有使用过其他业务的记录将其状态设置为无效,方法如下1)初始化参数计算日期=上月的第一天的日期,2)初始化参数计算分区号=上月的第一天的分区号,3)根据计算日期是否小于等于上月最后一天的日期的判断按天循环更新黑名单表,方法如下31)查询黑名单表中状态为有效的手机号,根据分区号查询MT表中付费类型为按条和包月的用户手机号。取二者查询结果的交集(该交集即为使用过其他业务的用户)作为查询结果。该方法采用了二种技术来提高性能。一是把多个大表的关联查询改为多次单个表的查询来提高性能;另一方面是通过取二个大表的查询结果的交集,来减少需更新的数据,从而大大提高统计性能。
32)将查询结果每100条作为一批更新黑名单表的用户手机号对应的状态为无效,直到全部更新完。该方法同样应用了批处理技术来大幅度地提高更新数据库的性能。
33)查询黑名单表中状态为有效的手机号,根据分区号查询MC表中付费类型为包月的用户手机号。取二者查询结果的交集(该交集即为使用过其他业务的用户)作为查询结果34)将查询结果每100条作为一批更新黑名单表的用户手机号对应的状态为无效,直到全部更新完。
35)循环计算计算下一天日期。
36)循环计算计算下一天的分区号直到处理完该月的所有数据。
采用和黑名单相同的处理方法对点播用户群中有使用过其他业务的记录将其状态设置为无效。
采用和黑名单相同的处理方法对包月业务群中有使用过其他业务的记录将其状态设置为无效。
由于其他用户群的统计分析技术和黑名单统计分析技术相同,所以不再一一重复。
权利要求
1.一种海量数据统计方法,其特征在于,包括以下内容A、建立MT、MC、MO三个数据库表结构A1、把MT、MC、MO三个表分别分成多个分区,每个分区相当于一个数据库小表,数据插入按分区进行,按日期划分分区,分区号根据日期产生且值在分区号范围内循环更新;A2、在MT、MC、MO三个表中分别建立五个数据表空间,一个分区使用一个表空间,相隔五个号的分区使用相同的表空间,即第6个分区使用和第1个分区相同的表空间,其他类推;A3、将CDR话单按属性区分为免费用户群、点播用户群和包月用户群,将免费用户群话单数据存放在MT表中、将点播用户群话单数据存放在MC表中、将包月用户群话单数据存放在MO表中;A4、各分区分别根据手机号建立索引;A5、建立免费用户群表,该表包含用户手机号码和状态二个字段,数据存放在特定的表空间,用户手机号码为主键,并使用索引表空间;A6、建立点播用户群表,该表包含用户手机号码、状态和点播数三个字段,数据存放在特定的表空间,用户手机号码为主键,并使用索引表空间;A7、建立包月用户群表,该表包含用户手机号码、状态和包月业务的项目数三个字段,数据存放在特定的表空间,用户手机号码为主键,并使用索引表空间;B、对特定属性的用户群从月初到月尾按天统计一个月的数据B1、查询并保存该月CDR中的只使用免费业务的用户并过滤已经存在的记录;B2、查询并保存该月CDR中的只使用点播业务的用户并过滤已经存在的记录;B3、查询并保存该月CDR中的只使用包月业务的用户并过滤已经存在的记录;B4、对免费用户群中有使用过其他业务的记录将其状态设置为无效B5、对点播用户群中有使用过其他业务的记录将其状态设置为无效;B6、对包月用户群中有使用过其他业务的记录将其状态设置为无效。
2.根据权利要求1所述的一种海量数据统计方法,其特征在于步骤A1中所述的MT、MC、MO三个表分别分成91个分区,用于保存连续90天的数据,每天的数据依序插入各个分区,当90天的数据分别插入90个分区后,第91天的数据插入第91个分区,然后删除第1个分区的数据,实现始终保存最近90天的数据。
3.根据权利要求1所述的一种海量数据统计方法,其特征在于步骤B1、中所述的查询并保存该月CDR中的只使用免费业务的用户并过滤已经存在的记录、步骤B2中所述的查询并保存该月CDR中的只使用点播业务的用户并过滤已经存在的记录、步骤B3中所述的查询并保存该月CDR中的只使用包月业务的用户并过滤已经存在的记录方法相同,步骤如下a、根据统计任务运行时间,计算上月第一天的日期;b、计算上月最后一天的日期;c、计算上月第一天的分区号;d、初始化参数计算日期=上月的第一天的日期;e、初始化参数计算分区号=上月的第一天的分区号;f、根据计算日期是否小于等于上月最后一天的日期的判断按天循环插入用户进行查询。
4.根据权利要求3所述的一种海量数据统计方法,其特征在于步骤f中所述的根据计算日期是否小于等于上月最后一天的日期的判断按天循环插入用户进行查询的方法如下f1、在特定属性的用户群表中根据分区号查询所有特定属性用户的唯一的手机号,该手机号必须同时不在其它用户群表中,该查询结果不包含已存在特定属性用户群表中的手机号;f2、将查询结果每100条作为一批插入数据库,直到全部插完;f3、循环计算下一天的日期;f4、循环计算下一天的分区号直到处理完该月的所有数据;
5.根据权利要求1所述的一种海量数据统计方法,其特征在于步骤B4中所述的对免费用户群中有使用过其他业务的记录将其状态设置为无效、步骤B5中所述的对点播用户群中有使用过其他业务的记录将其状态设置为无效、步骤B4中所述的对包月用户群中有使用过其他业务的记录将其状态设置为无效的方法相同,步骤如下a、初始化参数计算日期=上月的第一天的日期;b、初始化参数计算分区号=上月的第一天的分区号;c、根据计算日期是否小于等于上月最后一天的日期的判断按天循环更新用户群表。
6.根据权利要求5所述的一种海量数据统计方法,其特征在于步骤c中所述的根据计算日期是否小于等于上月最后一天的日期的判断按天循环更新用户群表的方法如下c1、查询特定属性用户群表中状态为有效的手机号,根据分区号查询特定用户群表中其它用户群的用户手机号,取二者查询结果的交集作为查询结果;c2、将查询结果每100条作为一批更新特定属性用户群表的用户手机号对应的状态为无效,直到全部更新完;c3、查询特定属性用户群表中状态为有效的手机号,根据分区号查询另一特定属性用户群表中第三类特定属性用户群的用户手机号,取二者查询结果的交集作为查询结果;c4、将查询结果每100条作为一批更新特定用户群表的用户手机号对应的状态为无效,直到全部更新完;c5、循环计算下一天日期;c6、循环计算下一天的分区号直到处理完该月的所有数据;
7.根据权利要求6所述的一种海量数据统计方法,其特征在于步骤c1和c3中所述的交集为使用过其他业务的用户。
全文摘要
本发明提供了一种海量数据统计方法,该方法建有MT、MC、MO三个数据库表,并在三个表中分别建立五个数据表空间。三个表分别分成91个分区,用于保存连续90天的数据。数据的查询和统计分析可根据日期计算要查询的分区号,根据分区号查找指定分区的数据。由于每个分区的数据量只相当于总数据的九十分之一,因此查询和保存数据的速度得到了极大的提高。多表关联改为单表查询大大提高了查询速度。查询结果的差集和交集技术又使需处理的数据量极大地减少,从而极大地提高了统计性能。该技术的应用使得对系统的硬件投资大大地降低,充分满足了中国移动对业务的需求。
文档编号G06F17/30GK101087203SQ20061002756
公开日2007年12月12日 申请日期2006年6月11日 优先权日2006年6月11日
发明者冯谧 申请人:上海全成通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1