使用MySQL储存用户历史数据-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用MySQL储存用户历史数据

2016-02-08 11:55:01 2963 1

使用MySQL储存用户数据。目前想增加一个功能:显示用户在过去7天的服务器使用量。目前,数据库中和该功能相关的Columns有两个:

usedTraffic (int) 储存用户已经使用服务量。
allTraffic (int) 储存用户能够使用的服务量上限。
后端会定时更新所有用户的usedTraffic,其字段储存的是用户已使用服务量的总量。

为了实现期望的功能,我目前的想法是:
1.新建一个表,其中一个Column储存用户ID
2.其余7个Columns对应用户过去7天每天的使用量。
3.后端定时更新7个储存数据的Columns。

这样做的问题有:
1.Columns会随时间出现对应的问题:如用户在星期1注册,后端就需要从第一个Column开始读取;如果用户在星期4注册,就要从第四个Column开始读取。
2.数据冗余。目前的站点用户注册量还不算大,但这样设计会出现大量的冗余数据。

取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:39:33

    你的方案扩展性不强,包括横向扩展和纵向扩展。横向扩展已经有同学说的,如果要改成30天就跪了,纵向扩展是如果你要增加一个用户属性呢?比如假设要考虑用户的性别,年龄,喜好,使用服务器时间等。
    采用一个表单独记录的方案对大数据量的支持也不够好。一个表的记录数是有限的,现在是7天的数据可能不多,要是未来要做一个月,一年的呢?查询会非常慢。
    解决方案:分区表。按照时间分区,一天一个表,每一个表中记录当天用户使用的记录。用脚本控制删除或者打包保存失效的表。每天创建新的表写当天数据进去。类似于服务器日志文件的处理方式。
    这种方案扩展性比较好,而且非常适合分布式处理,如MapReduce。数据量大的时候非常合理,而用户行为数据就是典型的大数据场景。Mysql并不是很适合做这种应用,可以参考Hive,或者阿里云的ODPS

    0 0
相关问答

1

回答

自建MySQL迁移至RDS MySQL中源库信息的说明是什么?

2021-12-14 15:26:40 131浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB-X 2.0中源库限制的说明是什么?

2021-12-14 16:03:30 162浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB-X 2.0支持的源数据库是什么?

2021-12-14 16:00:21 387浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中信息配置的说明是什么?

2021-12-14 15:59:51 180浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中源、目标库无法连接重试时间的说明是什么?

2021-12-14 15:59:29 234浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中源表DMS_ONLINE_DDL的说明是什么?

2021-12-14 15:59:07 213浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中目标库对象名称大小写策略的说明是什么?

2021-12-14 15:58:39 208浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中设置告警的说明是什么?

2021-12-14 15:58:02 124浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中增量迁移的SQL操作的说明是什么?

2021-12-14 15:57:40 162浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中过滤待迁移数据的说明是什么?

2021-12-14 15:57:22 153浏览量 回答数 1
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
文章
问答
问答排行榜
最热
最新
相关电子书
更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL
立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL
立即下载
高效MySQL的N个习惯
立即下载