V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
hennywei
V2EX  ›  MySQL

请教下这样的需求数据库怎么设计?

  •  
  •   hennywei · 2013-04-11 16:54:52 +08:00 · 3292 次点击
    这是一个创建于 4249 天前的主题,其中的信息可能已经有所发展或是发生改变。
    按天统计用户的数据,比如关注数 发帖 帖子被浏览数等,想了几个方案按天分表day1 day2.。。。或者塞进一个表里,求更好的建议!!
    4 条回复    1970-01-01 08:00:00 +08:00
    wy315700
        1
    wy315700  
       2013-04-11 17:01:34 +08:00   ❤️ 1
    一张表表示今天的
    一张表表示历史数据
    每天0点的时候把今天的数据塞进历史数据中
    fywtat
        2
    fywtat  
       2013-04-12 09:29:33 +08:00   ❤️ 1
    @wy315700 如果项目不是特别大,一张表放一个月也行!
    shunai
        3
    shunai  
       2013-04-12 09:54:39 +08:00   ❤️ 1
    一张表保存这些数据,每次往cache中更新,一段时间持久化到数据库,每次从cache读
    foxidea
        4
    foxidea  
       2013-04-12 10:42:29 +08:00
    表结构:

    [TableName]
    YEAR (年)
    MONTH (月)
    DAY (日)
    Times (次数)
    UserId (用户ID)


    假设要用到用户2个月的统计数据,那就是 删除掉 二个月以前的数据


    如果有 10万用户,那么表的最大数据量就是 10万 * 30天 * 2个月 = 600 万 条数据

    所以考虑分表,分表不能按照日期进行分表,因为一个用户的数据,要在一张表里面,才便进行聚合运算

    把表名进行命名 按照用户ID 把用户ID 反过来 取 3位

    如用户ID 为 123456789

    统计信息 存储在 tableName = "table_"+987;

    然后再进行存储
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1624 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:01 · PVG 01:01 · LAX 09:01 · JFK 12:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.