› 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 · Feb 28, 2015 · 4840 views
    This topic created in 4227 days ago, the information mentioned may be changed or developed.

    匿名版是不用注册的论坛,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 replies  •  2015-02-28 23:57:21 +08:00
    swordfeng
        1
    swordfeng  
       Feb 28, 2015
    `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  
       Feb 28, 2015
    而且,通过IP生成的uid不具备匿名性啊,不如用存在会话session里的随机值生成
    schezuk
        3
    schezuk  
    OP
       Feb 28, 2015
    @swordfeng 我这个只有一个版面,版面上一堆帖子,显示的是楼主和最后20贴
    除了这个地方别的地方都用不到recentReply##……所以不想每次都select一遍

    IP我是先过了掩码0xEEEEEEEE然后加盐SHA1,就算把40亿IP全跑一遍还有256个重复值
    schezuk
        4
    schezuk  
    OP
       Feb 28, 2015
    这个是免Cookie的
    zjxubinbin
        5
    zjxubinbin  
       Feb 28, 2015
    匿名论坛?不就是留言板么?
    schezuk
        6
    schezuk  
    OP
       Feb 28, 2015
    @zjxubinbin 嗯,就是不用注册,留言板自动派发UID
    linkupmylife
        7
    linkupmylife  
       Feb 28, 2015
    建议使用.onion域名,身居暗网以免被GFW。
    RIcter
        8
    RIcter  
       Feb 28, 2015 via iPad
    参考 pixmicat
    blaboy
        9
    blaboy  
       Feb 28, 2015
    。。内网的用户 共用一个帐号?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   890 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 19:45 · PVG 03:45 · LAX 12:45 · JFK 15:45
    ♥ Do have faith in what you're doing.