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
vixvix
V2EX  ›  MySQL

请教能追踪物件排名的表单设计

  •  
  •   vixvix · 2014-07-23 23:46:45 +08:00 · 3117 次点击
    这是一个创建于 3795 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设我要做社区排名,不断有新用户加入,每个用户有得分,每天根据得分做个头100名的排行榜,还要显示每个排名的变化,例如今天ABC升了2名,efg排名下降了5名。对于没个用户,还能查到位置的每天变化。请问一下这样的表单要怎么设计才能做到快速查询?

    我的想法是一个大表存历史数据

    name point date
    ----------------------
    abc 2,700 20140702
    efg 2,600 20140702
    ...
    abc 2,100 20140701
    efg 2,500 20140701

    然后再每天更新排名表

    name point date position delta
    --------------------------------------------
    abc 2,700 20140702 1 +1
    efg 2,600 20140702 2 -1


    从来没做过数据库设计,知识也就限于学校学的和日常用的pk, m2m之类的。有没有一些入门的表单设计读物? 或者google keyword? 我暂时找到的是db design pattern.

    先谢.
    6 条回复    2014-07-25 00:51:07 +08:00
    loddit
        1
    loddit  
       2014-07-23 23:51:47 +08:00
    我觉得每天做一个前100名的快照就可以,用什么形式存无所谓,只不过这样新上榜的就不计算上升多少了。

    用户获得的每一次积分,都要有记录时间,这样可以回溯出来历史的数据。
    vixvix
        2
    vixvix  
    OP
       2014-07-24 00:18:42 +08:00
    @loddit 如果我以后要实事排名呢? 每次用户request的时候才生成这个排名表? 好像会很慢。
    loddit
        3
    loddit  
       2014-07-24 00:34:36 +08:00
    这时就用快照,就是像相当于生成好的一份历史数据。
    vixvix
        4
    vixvix  
    OP
       2014-07-24 23:03:27 +08:00
    @loddit 这个快照是啥意思,就单纯生成一个表,还是mysql或者其他dbms的功能?
    loddit
        5
    loddit  
       2014-07-24 23:07:44 +08:00   ❤️ 1
    可以是一个表,甚至也可以用文件或者什么。
    不过最适合的应该是一个key-value的存储结构吧。
    vixvix
        6
    vixvix  
    OP
       2014-07-25 00:51:07 +08:00
    我也想过用这个小project试试nosql, 不过历史数据还是得用table, 查询方便。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   882 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:39 · PVG 04:39 · LAX 12:39 · JFK 15:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.