• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Discuz!NT千万级数据量上的两驾马车 TokyoCabinet,MongoDB

    发布者: 酸菜鱼 | 发布时间: 2025-7-24 17:38| 查看数: 90| 评论数: 0|帖子模式

    特别是像主题表(topic),用户表(user)等,因为对于一个流量和发帖量都很大的论坛而言,在运行几年之后,这两个表的数据量可能会破千万(注:因为帖子表采用分表机制,所以这里暂未涉及,但出于性能考虑,也提供了本文中类似的解决方案)。当时考虑的架构设计中有两种思路来解决这种问题:
          一种是采用类似MYSPACE的方式,即按一定记录KEY值(比如用户表的UID)来对大数据表中的记录进行分割,比如前200万用户(即:UID t.Fid == 2 && t.Displayorder == 0).Skip(skip).OrderByDescending(t=>t.Lastpostid).Take(16).ToList();     Discuz.Common.Generic.List topicList = new List();     foreach (var topic  in topicInfoList)     {         topicList.Add(LoadTopicInfo(topic));     }     db.Disconnect();     return topicList;

    不过在使用上述代码进行1500万主题分页时,发现LR的测试周期延长(前者(document方式)从2:10秒延长到后者(linq)2:30秒)和吞吐量降低。 
    所以这里还是最终延用了samus的document访问方式,参照上面的LINQ写法,下面是document写法,形如: 
    public Discuz.Common.Generic.List GetTopicList(int fid, int pageSize, int pageIndex, int startNumber){    int skip = 0;    if (pageIndex

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表