› 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 · Jul 23, 2014 · 4190 views
    This topic created in 4447 days ago, the information mentioned may be changed or developed.
    假设我要做社区排名,不断有新用户加入,每个用户有得分,每天根据得分做个头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 replies  •  2014-07-25 00:51:07 +08:00
    loddit
        1
    loddit  
       Jul 23, 2014
    我觉得每天做一个前100名的快照就可以,用什么形式存无所谓,只不过这样新上榜的就不计算上升多少了。

    用户获得的每一次积分,都要有记录时间,这样可以回溯出来历史的数据。
    vixvix
        2
    vixvix  
    OP
       Jul 24, 2014
    @loddit 如果我以后要实事排名呢? 每次用户request的时候才生成这个排名表? 好像会很慢。
    loddit
        3
    loddit  
       Jul 24, 2014
    这时就用快照,就是像相当于生成好的一份历史数据。
    vixvix
        4
    vixvix  
    OP
       Jul 24, 2014
    @loddit 这个快照是啥意思,就单纯生成一个表,还是mysql或者其他dbms的功能?
    loddit
        5
    loddit  
       Jul 24, 2014   ❤️ 1
    可以是一个表,甚至也可以用文件或者什么。
    不过最适合的应该是一个key-value的存储结构吧。
    vixvix
        6
    vixvix  
    OP
       Jul 25, 2014
    我也想过用这个小project试试nosql, 不过历史数据还是得用table, 查询方便。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2504 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:06 · PVG 09:06 · LAX 18:06 · JFK 21:06
    ♥ Do have faith in what you're doing.