记录百万级用户每天使用手机流量数据库表设计

zfthinker 2014-03-26 11:00:13
楼主现在的需求就是做手机流量监控功能,要记录客户端发送的用户每天使用的总流量记录,然后根据用户流量使用情况对客户端进行推送提醒。用户至少是百万计的,对于设计表这块不清楚。使用的是Mysql数据库,ssh框架。
现在设计的表是这样的,用户表已经有了。

记录id 用户id 用量 记录日期

我觉得这样设计一段时间后表就会非常大,肯定不合理。有网友说按照日期进行动态建表,不知可行与否。楼主菜鸟,请各位指教,轻喷
...全文
711 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfthinker 2014-04-04
  • 打赏
  • 举报
回复
引用 11 楼 soldierluo 的回复:
这样的话,先根据用户id进行key分区,再在key分区下按时间进行range子分区
我找到的资料都只是单个分区表 你的意思是多重分区 语句是怎样的 大神 可否多多请教下啊 zfthinker@qq.com
zfthinker 2014-04-04
  • 打赏
  • 举报
回复
引用 14 楼 healer_kx 的回复:
没用过分区表,不知道能不能满足需求,我现在甚至觉得领导提的需求有问题。 我不是很了解现在的流量监控软件的监控方式,以我的理解应该是客户端去监控用户的流量使用,然后在客户端做提醒。而我的需求是通过服务器去监控这几百万的用户流量使用,每次上传的都要去计算一下用户的使用总流量,然后给所有超流量的用户发推送,感觉服务器压力很大啊,而且开发起来也有难度。我觉得让客户端去计算,如果超过设置的监控策略,给服务端一个提示,然后服务端根据提示发推送还现实点。不知道这样是否合理? 不过换数据库还是算了,那些都不主流,怕领导不让用。
healer_kx 2014-04-04
  • 打赏
  • 举报
回复
手机流量监控,不可能用了1一个字节,或者1K就上传数据到数据库吧? 换句话说,MySQL的写入时机,你是可以控制的。 另外就是写入的次数多,我觉得分区未必满足你的需求。 其实你是百万次的写入简单数据,但是每次数据量都不大,而且没有关联。 建议你用Memory table,或者Redis,先把这些数据记录下来,然后定时Flush到Archive表中。
soldierluo 2014-04-04
  • 打赏
  • 举报
回复
http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html 这个你看下
soldierluo 2014-04-03
  • 打赏
  • 举报
回复
这样的话,先根据用户id进行key分区,再在key分区下按时间进行range子分区
zfthinker 2014-04-03
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
可以考虑一下MYSQL中的分区表。
我这两天学习了下分区表,但是对于选择哪种分区表还是很困惑。 应该是在key和hash里面选择,但是最后的partitions处,分为几个表有些犯难了,该怎么写呢?
zfthinker 2014-04-03
  • 打赏
  • 举报
回复
引用 8 楼 benluobobo 的回复:
根据你的常用查询方式进行分区,如果经常是时间查询,你可以根据range时间 如果经常是根据用户,你可以用hash用户id进行分区
根据需求,用户可以看到自己历史使用流量记录。 这样的话是根据range还是hash呢?
benluobo 2014-04-02
  • 打赏
  • 举报
回复
根据你的常用查询方式进行分区,如果经常是时间查询,你可以根据range时间 如果经常是根据用户,你可以用hash用户id进行分区
zfthinker 2014-04-02
  • 打赏
  • 举报
回复
引用 6 楼 huahuagongzi9999 的回复:
使用mysql分区表即可,
我刚刚看了下Mysql的分区表相关知识,我觉得水平分区(HorizontalPartitioning),按照年月日氛围3层,不过不知道4个分区类型选哪一种,请指教。 Q443808335
TommyWu01 2014-04-02
  • 打赏
  • 举报
回复
使用mysql分区表即可,
zfthinker 2014-04-02
  • 打赏
  • 举报
回复
引用 2 楼 soldierluo 的回复:
分区表,分区键为用户id,主键为用户id+自增id,建议用key或者hash分区 是记录一段时间的信息,还是一直记录,如果是一直记录的话,还可以将时间加入分区键
感谢,我先根据你的提示查找下mysql分区表信息。
zfthinker 2014-04-02
  • 打赏
  • 举报
回复
引用 3 楼 lumengabc 的回复:
每天一张表, 定时将数据统计到主表中。主要看你的需求是什么啊。
需求还有哪里不清楚的么?
lumengabc 2014-04-01
  • 打赏
  • 举报
回复
每天一张表, 定时将数据统计到主表中。主要看你的需求是什么啊。
soldierluo 2014-04-01
  • 打赏
  • 举报
回复
分区表,分区键为用户id,主键为用户id+自增id,建议用key或者hash分区 是记录一段时间的信息,还是一直记录,如果是一直记录的话,还可以将时间加入分区键
ACMAIN_CHM 2014-03-26
  • 打赏
  • 举报
回复
可以考虑一下MYSQL中的分区表。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧