CN106294090A - 一种数据统计方法和装置 - Google Patents
一种数据统计方法和装置 Download PDFInfo
- Publication number
- CN106294090A CN106294090A CN201610632370.6A CN201610632370A CN106294090A CN 106294090 A CN106294090 A CN 106294090A CN 201610632370 A CN201610632370 A CN 201610632370A CN 106294090 A CN106294090 A CN 106294090A
- Authority
- CN
- China
- Prior art keywords
- data
- daily record
- version identifier
- data base
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
Abstract
本发明公开了一种数据统计方法和装置。该方法包括:接收来自客户端的日志数据,并在日志数据中提取用户标识;查询数据库中是否存在用户标识;若是,则在日志数据中提取版本标识,并根据版本标识,更新数据库中的统计数据;若否,则根据日志数据,更新数据库中的统计数据。本发明当首次接收到某一用户标识的日志数据时,在数据库中添加该用户标识对应的用户数据,并更新计数器;当再次接收到相同用户标识的用户数据时,根据乐观锁版本号来判断是否可以更新数据库中对应的用户数据以及计数器。本发明可以在数据库中进行数据统计,在内存中仅进行逻辑运算,降低了对内存的依赖性,减少了对内存的占用率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种数据统计方法和装置。
背景技术
随着应用程序(Application,简称APP)的普及度越来越高,对于APP的用户数据的统计分析也越来越多。
在现有技术中,可以从新增用户、活跃用户、使用时长等多个维度对用户数据进行统计,研发人员需要根据产品需求,预先确定好每个统计维度的独立访客(uniquevisitor,简称UV)集合、访问量(Page View,简称PV)计数器,UV集合通常使用Set集合。在处理用户数据时,根据用户属性的不同,将数据分别放入到相应统计维度的集合或者计数器中,最后以时间为节点切换新的集合和计数器,原来的集合和计数器不再有数据写入,进而完成一个时段的实时数据统计。
但是,现有数据统计方式是基于内存实现的,对内存的要求较高,在处理大数据时,会不断的扩大内存的占用率,最终内存耗尽导致程序报错或者崩溃,而且一旦遇到服务器硬件故障,内存的数据将会丢失。
发明内容
本发明要解决的技术问题是提供一种数据统计方法和装置,用以解决现有数据统计方式对内存的依赖性高的问题。
针对上述技术问题,本发明是通过以下技术方案来解决的。
本发明提供了一种数据统计方法,包括:接收来自客户端的日志数据,并在所述日志数据中提取用户标识;查询数据库中是否存在所述用户标识;若是,则在所述日志数据中提取版本标识,并根据所述版本标识,更新所述数据库中的统计数据;若否,则根据所述日志数据,更新所述数据库中的统计数据。
其中,所述根据所述版本标识,更新所述数据库中的统计数据,包括:在提取的所述版本标识符合数据更新条件的情况下,对所述数据库中的日在线计数器进行累加;以及根据提取的所述版本标识,对所述数据库中所述用户标识对应的版本标识进行更新。
其中,所述版本标识为最后在线时间。
其中,所述数据更新条件为:在所述日志数据中提取的最后在线时间晚于所述数据库中所述用户标识对应的最后在线时间。
其中,所述根据所述日志数据,更新所述数据库中的统计数据,包括:对所述数据库中的日在线计数器和新增用户计数器分别进行累加;以及,在所述数据库中初始化用户数据;所述用户数据包括从所述日志数据中提取出的用户标识和版本标识。
本发明还提供了一种数据统计装置,包括:接收和提取模块,用于接收来自客户端的日志数据,并在所述日志数据中提取用户标识;查询模块,用于查询数据库中是否存在所述用户标识;第一更新模块,用于在所述查询模块查询到所述用户标识的情况下,调用所述接收和提取模块在所述日志数据中提取版本标识,并根据所述接收和提取模块提取出的所述版本标识,更新所述数据库中的统计数据;第二更新模块,用于在所述查询模块没有查询到所述用户标识的情况下,根据所述日志数据,更新所述数据库中的统计数据。
其中,所述第一更新模块用于:在提取的所述版本标识符合数据更新条件的情况下,对所述数据库中的日在线计数器进行累加;以及根据提取的所述版本标识,对所述数据库中所述用户标识对应的版本标识进行更新。
其中,所述版本标识为最后在线时间。
其中,所述数据更新条件为:在所述日志数据中提取的最后在线时间晚于所述数据库中所述用户标识对应的最后在线时间。
其中,所述第二更新模块用于:对所述数据库中的日在线计数器和新增用户计数器分别进行累加;以及,在所述数据库中初始化用户数据;所述用户数据包括从所述日志数据中提取出的用户标识和版本标识。
本发明有益效果如下:
本发明当首次接收到某一用户标识的日志数据时,在NoSQL数据库中添加该用户标识对应的用户数据,并更新计数器;当再次接收到相同用户标识的用户数据时,根据乐观锁版本号来判断是否可以更新NoSQL数据库中对应的用户数据以及计数器。本发明可以在NoSQL数据库中进行数据统计,在内存中仅进行逻辑运算,降低了对内存的依赖性,减少了对内存的占用率。
附图说明
图1是根据本发明一实施例的数据统计方法的流程图;
图2是根据本发明一实施例的用户数据的数据结构示意图;
图3是根据本发明一实施例的数据统计装置的结构图。
具体实施方式
本发明应用的数据统计系统架构包括数据层、传输层、计算层和展示层。本发明在计算层实现。
本发明在数据库中记录用户数据,并且将用户最后在线时间作为用户数据的版本标识,在接收到用户数据时,根据版本标识对数据库中的用户数据进行更新,使数据存储和运算分离,降低了实时数据统计对内存的依赖性,提高了数据可靠性,并在服务器的运算能力不够用时,提供横向扩展的能力。
以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本发明实施例提供了一种数据统计方法。如图1所示,图1是根据本发明一实施例的数据统计方法的流程图。本实施例的执行主体为位于服务器系统架构的计算层。
步骤S110,接收来自客户端的日志数据,在该日志数据中提取用户标识。
日志数据是客户端侧记录的工作日志。
在日志数据中包括:用户标识、版本标识、用户注册日期等。用户标识为用户唯一标识。版本标识例如是最后在线时间。
步骤S120,查询数据库中是否存在所述用户标识。若是,则执行步骤S130;若否,则执行步骤S140。
数据库用于记录统计数据。该数据库位于服务器系统架构的计算层。
数据库可以是非关系型数据库(Not only SQL,简称NoSQL)。NoSQL数据库在主键查询时受数据量的影响较小。
统计数据包括:用户数据和计数器。
用户数据包括但不限于:用户标识、版本标识、用户注册日期。其中,用户标识作为主键,如图2所示的数据结构,数据实体即为用户数据,PK(Primary Key)表示主键,userid为用户标识、version为版本标识、onlineTime为最后在线时间、regTime为注册时间。
计数器的种类包括但不限于:日在线计数器和新增用户计数器。
日在线计数器是对独立访客UV的计数,其是以日期为基准,同日00:00~24:00内相同的用户登录仅计算一次。也就是说,最后在线时间可以反映最后一次的登录日期。新增用户计数器是对新的用户的计数。当然计数器还可以包括访问量计数器,即对访问量进行计数。
本实施例的数据库中使用乐观锁来更新用户数据。乐观锁是基于数据版本(version)的记录机制,即为用户数据增加一个版本号。将接收到的日志数据的版本号与数据库表对应记录的当前版本号进行比对,如果接收到的日志数据的版本号大于数据库表中对应记录的当前版本号,则对数据库表予以更新,否则认为接收到的用户数据是过期数据。
步骤S130,在所述日志数据中提取版本标识,并根据所述版本标识,更新所述数据库中的统计数据。
在数据库中存在日志数据中提取出的用户标识,说明该用户标识对应的客户端不是首次访问服务器。所以在提取的版本标识符合数据更新条件的情况下,对数据库中的日在线计数器进行累加;以及根据提取的版本标识,对数据库中所述用户标识对应的版本标识进行更新。也就是说,将数据库中所述用户标识对应的用户数据中的版本标识更新为提取的所述版本标识。
数据更新条件即是乐观锁更新条件。本实施例优选的,版本标识为最后在线时间。数据更新条件为:在日志数据中提取的最后在线时间晚于数据库中所述用户标识(提取于日志数据)对应的最后在线时间。
具体的,在日志数据中提取用户标识和最后在线时间,查询数据库中该用户标识对应的用户数据,获取该用户数据中的最后在线时间,判断日志数据中的最后在线时间是否晚于该用户数据中的最后在线时间,若是,则满足数据更新条件,可以对日在线计数器进行累加,并且将该用户数据中的最后在线时间更新为日志数据中的最后在线时间;反之,不满足数据更新条件,无需对日在线计数器进行累加,也无需更新该用户数据。
例如:接收到的用户数据的版本标识A为2016-5-6,数据库中对应的用户数据的版本标识B为2016-5-5,版本标识A晚于版本标识B,这时版本标识B符合数据更新条件,将数据库中对应用户数据的版本标识B更新为2016-5-6,并对日在线计数器进行n=n+1计算,n为正整数。
步骤S140,根据所述日志数据,更新所述数据库中的统计数据。
在数据库中不存在日志数据中提取出的用户标识,说明该用户标识对应的客户端首次访问服务器,因此,对所述数据库中的日在线计数器和新增用户计数器分别进行累加;以及,在所述数据库中初始化用户数据;所述用户数据包括从所述日志数据中提取出的用户标识和版本标识。初始化用户数据就是在数据库中新增用户数据,用户数据来源于日志数据中包含的数据,如:用户标识、版本标识、用户注册日期等。
本实施例当首次接收到某一用户标识的日志数据时,在数据库中添加该用户标识对应的用户数据,并更新计数器;当再次接收到相同用户标识的用户数据时,需要根据乐观锁版本号来判断是否可以更新数据库中该用户标识对应的用户数据以及更新数据库中的计数器。
本实施例使用NoSQL数据库,其在主键查询时受数据量大小的影响小。通过本实施例,可以在NoSQL数据库中查询用户数据,在内存中仅进行逻辑运算,降低了对内存的依赖性,有效减少了内存占用率,避免了通过UV集合进行统计带来的问题,且在服务器硬件故障时不受到影响,可扩展性强,能够应对大数据统计。
本实施例可以应用在手机app实时统计中,通用性强,且可以高效地统计用户实时在线、渠道实时在线、新增用户、渠道新增用户的数量。
本发明还提供了一种数据统计装置。如图3所示,图3是根据本发明一实施例的数据统计装置的结构图。
该装置包括:
接收和提取模块310,用于接收来自客户端的日志数据,并在所述日志数据中提取用户标识;
查询模块320,用于查询数据库中是否存在所述用户标识;
第一更新模块330,用于在所述查询模块320查询到所述用户标识的情况下,调用所述接收和提取模块310在所述日志数据中提取版本标识,并根据所述接收和提取模块310提取出的所述版本标识,更新所述数据库中的统计数据。
第二更新模块340,用于在所述查询模块320没有查询到所述用户标识的情况下,根据所述日志数据,更新所述数据库中的统计数据。
具体而言,第一更新模块330用于:在提取的所述版本标识符合数据更新条件的情况下,对所述数据库中的日在线计数器进行累加;以及根据提取的所述版本标识,对所述数据库中所述用户标识对应的版本标识进行更新。
在一个实施例中,所述版本标识为最后在线时间。所述数据更新条件为:在所述日志数据中提取的最后在线时间晚于所述数据库中所述用户标识对应的最后在线时间。
具体而言,第二更新模块340用于:对所述数据库中的日在线计数器和新增用户计数器分别进行累加;以及,在所述数据库中初始化用户数据;所述用户数据包括从所述日志数据中提取出的用户标识和版本标识。
本实施例所述的装置的功能已经在图1和图2所示的方法实施例中进行了描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (10)
1.一种数据统计方法,其特征在于,包括:
接收来自客户端的日志数据,并在所述日志数据中提取用户标识;
查询数据库中是否存在所述用户标识;
若是,则在所述日志数据中提取版本标识,并根据所述版本标识,更新所述数据库中的统计数据;
若否,则根据所述日志数据,更新所述数据库中的统计数据。
2.如权利要求1所述的方法,其特征在于,所述根据所述版本标识,更新所述数据库中的统计数据,包括:
在提取的所述版本标识符合数据更新条件的情况下,对所述数据库中的日在线计数器进行累加;以及,
根据提取的所述版本标识,对所述数据库中所述用户标识对应的版本标识进行更新。
3.如权利要求2所述的方法,其特征在于,所述版本标识为最后在线时间。
4.如权利要求3所述的方法,其特征在于,所述数据更新条件为:在所述日志数据中提取的最后在线时间晚于所述数据库中所述用户标识对应的最后在线时间。
5.如权利要求1所述的方法,其特征在于,所述根据所述日志数据,更新所述数据库中的统计数据,包括:
对所述数据库中的日在线计数器和新增用户计数器分别进行累加;以及,
在所述数据库中初始化用户数据;所述用户数据包括从所述日志数据中提取出的用户标识和版本标识。
6.一种数据统计装置,其特征在于,包括:
接收和提取模块,用于接收来自客户端的日志数据,并在所述日志数据中提取用户标识;
查询模块,用于查询数据库中是否存在所述用户标识;
第一更新模块,用于在所述查询模块查询到所述用户标识的情况下,调用所述接收和提取模块在所述日志数据中提取版本标识,并根据所述接收和提取模块提取出的所述版本标识,更新所述数据库中的统计数据;
第二更新模块,用于在所述查询模块没有查询到所述用户标识的情况下,根据所述日志数据,更新所述数据库中的统计数据。
7.如权利要求6所述的装置,其特征在于,所述第一更新模块用于:
在提取的所述版本标识符合数据更新条件的情况下,对所述数据库中的日在线计数器进行累加;以及,
根据提取的所述版本标识,对所述数据库中所述用户标识对应的版本标识进行更新。
8.如权利要求7所述的装置,其特征在于,所述版本标识为最后在线时间。
9.如权利要求8所述的装置,其特征在于,所述数据更新条件为:在所述日志数据中提取的最后在线时间晚于所述数据库中所述用户标识对应的最后在线时间。
10.如权利要求6所述的装置,其特征在于,所述第二更新模块用于:
对所述数据库中的日在线计数器和新增用户计数器分别进行累加;以及,
在所述数据库中初始化用户数据;所述用户数据包括从所述日志数据中提取出的用户标识和版本标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610632370.6A CN106294090A (zh) | 2016-08-03 | 2016-08-03 | 一种数据统计方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610632370.6A CN106294090A (zh) | 2016-08-03 | 2016-08-03 | 一种数据统计方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106294090A true CN106294090A (zh) | 2017-01-04 |
Family
ID=57665220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610632370.6A Pending CN106294090A (zh) | 2016-08-03 | 2016-08-03 | 一种数据统计方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106294090A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321373A (zh) * | 2019-07-12 | 2019-10-11 | 中国农业银行股份有限公司 | 一种查询统计方法、装置及系统 |
CN111090879A (zh) * | 2019-12-05 | 2020-05-01 | 达闼科技成都有限公司 | 数据处理方法、装置、可读存储介质、电子设备和系统 |
CN114598559A (zh) * | 2021-07-22 | 2022-06-07 | 湖南亚信软件有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159592A (zh) * | 2007-08-10 | 2008-04-09 | 北大方正集团有限公司 | 互联网数据信息点击量的统计方法和装置 |
CN101188521A (zh) * | 2007-12-05 | 2008-05-28 | 北京金山软件有限公司 | 一种挖掘用户行为数据的方法和网站服务器 |
CN101458684A (zh) * | 2007-02-12 | 2009-06-17 | 北京上行逶式信息公司 | 关键词查找计数技术 |
CN102456017A (zh) * | 2010-10-18 | 2012-05-16 | 北京市金蝶政务软件有限公司 | 存储数据的方法和装置 |
CN103001796A (zh) * | 2012-11-13 | 2013-03-27 | 北界创想(北京)软件有限公司 | 服务端处理网络日志数据的方法及装置 |
CN103500177A (zh) * | 2013-09-06 | 2014-01-08 | 乐视致新电子科技(天津)有限公司 | 一种用户激活数的统计方法及装置 |
CN104504077A (zh) * | 2014-12-22 | 2015-04-08 | 北京国双科技有限公司 | 网页访问数据的统计方法和装置 |
CN104572778A (zh) * | 2013-10-27 | 2015-04-29 | 西安群丰电子信息科技有限公司 | 一种业务数据库查询统计方法 |
CN104660427A (zh) * | 2013-11-18 | 2015-05-27 | 深圳市腾讯计算机系统有限公司 | 日志实时统计方法及装置 |
CN105577455A (zh) * | 2016-03-07 | 2016-05-11 | 达而观信息科技(上海)有限公司 | 一种对海量日志进行实时uv统计的方法及系统 |
-
2016
- 2016-08-03 CN CN201610632370.6A patent/CN106294090A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458684A (zh) * | 2007-02-12 | 2009-06-17 | 北京上行逶式信息公司 | 关键词查找计数技术 |
CN101159592A (zh) * | 2007-08-10 | 2008-04-09 | 北大方正集团有限公司 | 互联网数据信息点击量的统计方法和装置 |
CN101188521A (zh) * | 2007-12-05 | 2008-05-28 | 北京金山软件有限公司 | 一种挖掘用户行为数据的方法和网站服务器 |
CN102456017A (zh) * | 2010-10-18 | 2012-05-16 | 北京市金蝶政务软件有限公司 | 存储数据的方法和装置 |
CN103001796A (zh) * | 2012-11-13 | 2013-03-27 | 北界创想(北京)软件有限公司 | 服务端处理网络日志数据的方法及装置 |
CN103500177A (zh) * | 2013-09-06 | 2014-01-08 | 乐视致新电子科技(天津)有限公司 | 一种用户激活数的统计方法及装置 |
CN104572778A (zh) * | 2013-10-27 | 2015-04-29 | 西安群丰电子信息科技有限公司 | 一种业务数据库查询统计方法 |
CN104660427A (zh) * | 2013-11-18 | 2015-05-27 | 深圳市腾讯计算机系统有限公司 | 日志实时统计方法及装置 |
CN104504077A (zh) * | 2014-12-22 | 2015-04-08 | 北京国双科技有限公司 | 网页访问数据的统计方法和装置 |
CN105577455A (zh) * | 2016-03-07 | 2016-05-11 | 达而观信息科技(上海)有限公司 | 一种对海量日志进行实时uv统计的方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321373A (zh) * | 2019-07-12 | 2019-10-11 | 中国农业银行股份有限公司 | 一种查询统计方法、装置及系统 |
CN111090879A (zh) * | 2019-12-05 | 2020-05-01 | 达闼科技成都有限公司 | 数据处理方法、装置、可读存储介质、电子设备和系统 |
CN111090879B (zh) * | 2019-12-05 | 2023-07-21 | 达闼机器人股份有限公司 | 数据处理方法、装置、可读存储介质、电子设备和系统 |
CN114598559A (zh) * | 2021-07-22 | 2022-06-07 | 湖南亚信软件有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10972282B2 (en) | Distributed logging of application events in a blockchain | |
US20200142864A1 (en) | Shared document editing in the blockchain | |
RU2691595C2 (ru) | Конструируемый поток данных для улучшенной обработки событий | |
US11042899B2 (en) | System and method for tracking users across a plurality of media platforms | |
CN104424229A (zh) | 一种多维度拆分的计算方法及系统 | |
CN103620601A (zh) | 在映射缩减过程中汇合表 | |
TW201800967A (zh) | 分布式流式資料處理的方法和裝置 | |
CN103944799B (zh) | 消息处理方法及系统 | |
WO2019095670A1 (zh) | 业绩追踪方法、应用服务器及计算机可读存储介质 | |
EP3591894A1 (en) | Tariff data determination method and device | |
CN106294090A (zh) | 一种数据统计方法和装置 | |
CN110704675A (zh) | 对象管理方法、装置、计算机设备和存储介质 | |
CN104636395A (zh) | 一种计数处理方法及装置 | |
CN103235793A (zh) | 联机处理数据的方法、设备及系统 | |
US10324956B1 (en) | Automatically mapping organizations to addresses | |
CN116611411A (zh) | 一种业务系统报表生成方法、装置、设备及存储介质 | |
CN112363838A (zh) | 数据处理方法及装置、存储介质、电子装置 | |
US10027754B2 (en) | Large data set updating for network usage records | |
CN111182465A (zh) | 终端归属的确定方法及装置 | |
CN110020166B (zh) | 一种数据分析方法及相关设备 | |
CN110990401B (zh) | 一种酒店搜索方法及系统 | |
KR20190021848A (ko) | 서버 모니터링 방법과 이를 수행하기 위한 장치 및 시스템 | |
CN113037420A (zh) | 读时间戳的获取方法和装置、电子设备和存储介质 | |
US10798196B1 (en) | Wireless communication system self-healing transaction state keeper | |
US11366794B1 (en) | Data store item count service |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170104 |