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

做一个匿名版(无注册论坛),求表结构优化意见

  •  
  •   schezuk · 2015-02-28 14:20:30 +08:00 · 3875 次点击
    这是一个创建于 3555 天前的主题,其中的信息可能已经有所发展或是发生改变。

    匿名版是不用注册的论坛,UID由IP生成,故只使用一个表记录发言。表结构见最下,求优化意见。
    表中回复和主题地位平等,但回复不能有子节点。回复的父节点是主题,主题的父节点是主题0。
    主题0的replyCount挪用作论坛主题计数,content记录最近发帖/回复人(逗号分隔,防spam用)。
    recentReply00-19记录主题最近的20条回复,有新回复时00-18顺次覆盖01-19,并更新00。

    CREATE TABLE IF NOT EXISTS `sougou` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `parent` int(11) NOT NULL,
      `updatedAt` int(11) NOT NULL,
      `createdAt` int(11) NOT NULL,
      `replyCount` int(11) NOT NULL,
    
      `uid` char(8) NOT NULL,
      `name` varchar(255) NOT NULL,
      `email` varchar(255) NOT NULL,
      `title` varchar(255) NOT NULL,
      `image` varchar(255) NOT NULL,
      `content` varchar(2048) NOT NULL,
    
      `hide` tinyint(1) NOT NULL,
      `sage` tinyint(1) NOT NULL,
      `lock` tinyint(1) NOT NULL,
      `delete` tinyint(1) NOT NULL,
    
      `pwd` varchar(8) NOT NULL,
      `like` int(11) NOT NULL,
      `liker` varchar(512) NOT NULL,
      `dislike` int(11) NOT NULL,
      `disliker` varchar(512) NOT NULL,
    
      `recentReply00` int(11) NOT NULL,
      `recentReply01` int(11) NOT NULL,
      `recentReply02` int(11) NOT NULL,
      `recentReply03` int(11) NOT NULL,
      `recentReply04` int(11) NOT NULL,
      `recentReply05` int(11) NOT NULL,
      `recentReply06` int(11) NOT NULL,
      `recentReply07` int(11) NOT NULL,
      `recentReply08` int(11) NOT NULL,
      `recentReply09` int(11) NOT NULL,
      `recentReply10` int(11) NOT NULL,
      `recentReply11` int(11) NOT NULL,
      `recentReply12` int(11) NOT NULL,
      `recentReply13` int(11) NOT NULL,
      `recentReply14` int(11) NOT NULL,
      `recentReply15` int(11) NOT NULL,
      `recentReply16` int(11) NOT NULL,
      `recentReply17` int(11) NOT NULL,
      `recentReply18` int(11) NOT NULL,
      `recentReply19` int(11) NOT NULL,
    
      PRIMARY KEY (`id`),
      KEY `updatedAt` (`updatedAt`),
      KEY `createdAt` (`createdAt`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    
    9 条回复    2015-02-28 23:57:21 +08:00
    swordfeng
        1
    swordfeng  
       2015-02-28 19:15:59 +08:00
    `recentReply00` int(11) NOT NULL,
    `recentReply01` int(11) NOT NULL,
    `recentReply02` int(11) NOT NULL,
    `recentReply03` int(11) NOT NULL,
    `recentReply04` int(11) NOT NULL,
    `recentReply05` int(11) NOT NULL,
    `recentReply06` int(11) NOT NULL,
    `recentReply07` int(11) NOT NULL,
    `recentReply08` int(11) NOT NULL,
    `recentReply09` int(11) NOT NULL,
    `recentReply10` int(11) NOT NULL,
    `recentReply11` int(11) NOT NULL,
    `recentReply12` int(11) NOT NULL,
    `recentReply13` int(11) NOT NULL,
    `recentReply14` int(11) NOT NULL,
    `recentReply15` int(11) NOT NULL,
    `recentReply16` int(11) NOT NULL,
    `recentReply17` int(11) NOT NULL,
    `recentReply18` int(11) NOT NULL,
    `recentReply19` int(11) NOT NULL,

    大姐,这简直糟透了啊,为什么不做parent-createdAt索引呢……
    swordfeng
        2
    swordfeng  
       2015-02-28 19:18:20 +08:00
    而且,通过IP生成的uid不具备匿名性啊,不如用存在会话session里的随机值生成
    schezuk
        3
    schezuk  
    OP
       2015-02-28 19:27:59 +08:00
    @swordfeng 我这个只有一个版面,版面上一堆帖子,显示的是楼主和最后20贴
    除了这个地方别的地方都用不到recentReply##……所以不想每次都select一遍

    IP我是先过了掩码0xEEEEEEEE然后加盐SHA1,就算把40亿IP全跑一遍还有256个重复值
    schezuk
        4
    schezuk  
    OP
       2015-02-28 19:29:46 +08:00
    这个是免Cookie的
    zjxubinbin
        5
    zjxubinbin  
       2015-02-28 19:37:54 +08:00
    匿名论坛?不就是留言板么?
    schezuk
        6
    schezuk  
    OP
       2015-02-28 19:42:10 +08:00
    @zjxubinbin 嗯,就是不用注册,留言板自动派发UID
    linkupmylife
        7
    linkupmylife  
       2015-02-28 20:38:34 +08:00
    建议使用.onion域名,身居暗网以免被GFW。
    RIcter
        8
    RIcter  
       2015-02-28 21:52:16 +08:00 via iPad
    参考 pixmicat
    blaboy
        9
    blaboy  
       2015-02-28 23:57:21 +08:00
    。。内网的用户 共用一个帐号?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:09 · PVG 03:09 · LAX 11:09 · JFK 14:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.