热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

访问统计的数据库设计

访问统计的数据库设计
用户向系统申请,系统会随机给用户生成一个不重复的短网址 xx.xx.xx/abced1用于编辑内容(其中abcde1就是短网址标识,称coding)
现在要统计所有coding的访问记录。
目前有一张access_log表,每当某个coding的短网址被访问时,先是根据UA信息、ip地址、有效时间经过算法得到一个uvmark(访客标识),如果表里已经有相同的uvmark,表示是同一个人访问了多次,此时不做insert记录,而是update该条数据的number字段+1。不过没有uvmark,就添加insert一条记录(记录包括coding.访问的设备.系统环境.浏览器环境.访问城市.访问时间等等)

但是随着访问量的增大,表里的数据已经非常多了。将近9000万条数据,每天增量大概200万。统计一些扫描量大的码,比如按时间的sql是这样的: select number from access_log where coding = XXXX and time between time_start and time_end
取出来的数据 uv就是条数的数量 pv就是每条的number相加(按地域.环境等等同理) 效率比较低。如果一个短网址每天平均有2W的访问量,那么我要统计他最近一个月的访问量,需要的时间达到50S以上
随便找了个coding的访问统计。如下


我这么做有问题吗? 有可以优化的地方吗?像百度统计这种的数据库设计是怎样的,为什么感觉他们的非常快。




回复讨论(解决方案)

每天总结一下,过去的访问量直接取总结的结果,而不是从头统计

每天总结一下,过去的访问量直接取总结的结果,而不是从头统计



可是有一个模块是实时统计的,就是在某一天里,每半小时的数据也是有的。总结掉的话,我想知道30天之前的某一天的24小时实时统计怎么算

30天之前的某一天 还是实时吗?
显然就不是了!
除了今天的数据会发生变化以外,过去的任何一天的数据多不会发生变化(过去了就过去了)
所以你只要按统计方案记录下统计结果就可以了

30天之前的某一天 还是实时吗?
显然就不是了!
除了今天的数据会发生变化以外,过去的任何一天的数据多不会发生变化(过去了就过去了)
所以你只要按统计方案记录下统计结果就可以了



那我要知道8月1号 9点到12点的数据呢

那没关系,你按每小时一统计,一天的才24条记录
你也可以按每分钟,甚至每秒钟一统计,都会比你重新从原始数据中汇总起来要快

那没关系,你按每小时一统计,一天的才24条记录
你也可以按每分钟,甚至每秒钟一统计,都会比你重新从原始数据中汇总起来要快



受教。 哦对了,那对于其他统计方式怎么每天总结呢,比如地区统计呢。既有时间条件又有地区条件

每个省下有市

这些数据我要怎么总结呢

你这些数据是怎么计算得来的?
1+1 会算,10+10 就不会算啦?

你这些数据是怎么计算得来的?
1+1 会算,10+10 就不会算啦?



第一种是只有单条件的(时间),我可以把每小时 每个短网址的pv uv都存一条数据。
第二种是多条件的(时间与地点),我按每小时来总结数据,我需要把每小时 每个短网址 按照地区存N条数据 是这样吗

以 #6 下图的苏州为例:访问量519 表示的是迄今为止的访问量,而明天的访问量是 519 + n
这个不会有疑问吧?
那么到了明天,今天的这个 519 还会变吗?显然是不会变的

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 如何在PHPcms网站中添加广告
    本文详细介绍了在PHPcms网站后台添加广告的方法,涵盖多种常见的广告形式,如百度广告和Google广告,并提供了相关设置的步骤。同时,文章还探讨了优化网站流量的SEO策略。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • Windows 系统下 MySQL 8.0.11 的安装与配置
    本文详细介绍了在 Windows 操作系统中安装和配置 MySQL 8.0.11 的步骤,包括环境准备、安装过程以及后续配置,帮助用户顺利完成数据库的部署。 ... [详细]
  • 在Windows系统上安装VMware Workstation 2022的详细步骤
    本文将详细介绍如何在Windows系统上安装VMware Workstation 2022。包括从官方网站下载软件、选择合适的版本以及安装过程中的关键步骤。此外,还将提供一些激活密钥供参考。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • 精选30本C# ASP.NET SQL中文PDF电子书合集
    欢迎订阅我们的技术博客,获取更多关于C#、ASP.NET和SQL的最新资讯和资源。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文介绍如何在 FireDAC 环境下实现 FDMEMTable 字段的自动获取,为开发人员提供便捷的数据处理方式。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
author-avatar
写bug小能手
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有