V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vilic
V2EX  ›  程序员

请教下背单词应用 (NodeJS + MongoDB) 的性能优化方案

  •  
  •   vilic ·
    vilicvane · 2014-03-18 20:35:16 +08:00 · 4363 次点击
    这是一个创建于 3903 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前因为一个学长的建议使用了 MongoDB, 开发起来的确是挺方便的, 但是现在看到后台统计的写入时间还是心有余悸. 后台我反反复复改了好几次方案, 主要的问题是一个用户可能有几千上万条单词学习记录, 每次登录的时候都会读取出所有记录, 放在内存里.

    从数据库中读取几千条记录这个过程比较耗时. 目前学习记录数总共是 70 万. 今天看 log 发现其中一个用户有接近 6000 条记录了, 但是初始化花掉了一秒钟左右的时间. 这个时间是否可以接受? (现在用的是阿里云, 听说如果是 SSD 会棒很多?)

    因为最近基础功能基本上开发完了, 想接下来一边完善一边准备连接 SNS (打卡), 怕万一用户涨得快服务器撑不住. 加上自己是做前端的, 这方面懂得很少, 希望有经验的同学给点建议. 谢过先!
    15 条回复    1970-01-01 08:00:00 +08:00
    icevil
        1
    icevil  
       2014-03-18 21:27:35 +08:00
    为什么每次登录的时候要一次性读取全部的学习记录?
    vilic
        2
    vilic  
    OP
       2014-03-18 21:42:38 +08:00
    @icevil 主要是单词背诵的时候优先级计算稍微复杂, 不好估计说那些单词是今天或者短时间内会用到的, 所以只好全部拿出来, 先选出几个优先级对应的候选单词, 再在各个优先级中排序.
    notcome
        3
    notcome  
       2014-03-19 06:55:58 +08:00 via iPhone
    同样类型我用的是 Redis……
    notcome
        4
    notcome  
       2014-03-19 06:57:10 +08:00 via iPhone
    已经进入生产了哦我动作太慢……
    EPr2hh6LADQWqRVH
        5
    EPr2hh6LADQWqRVH  
       2014-03-19 08:49:17 +08:00   ❤️ 1
    反正你也是一次性都拿出来,要不就按人头每人的记录都融成一条或者几条,人多了之后做sharding
    chenlong451
        6
    chenlong451  
       2014-03-19 09:18:08 +08:00
    IOS下是obj-c开发的?
    gkiwi
        7
    gkiwi  
       2014-03-19 09:47:59 +08:00
    @vilic 我觉得可以适当做个分级沉淀,比如说这6000个词的用户,在计算一次后,根据是否需要再次取出分成4000,1000,500,300,200这样子的级别,第一次用户优先计算300,200的,然后再后台慢慢计算500和1000级别的,没晚上再统一更新下4000那组的数据,这样子可能会好些。
    cdffh
        8
    cdffh  
       2014-03-19 10:15:17 +08:00   ❤️ 1
    早就叫你上Redis了 然后你那个winserver 的服务器是在卖萌吗..
    vilic
        9
    vilic  
    OP
       2014-03-19 11:42:43 +08:00
    @notcome 其实之前拖了很久了…
    @avastms 之前有试过每个用户数据存在一条里,读取是快不少,但每次更新都有重写整个大数组开销有点大。不过可能我的做法不对,一会儿搜搜去。
    @chenlong451 其实是web app,套了层壳子。
    @gkiwi 嗯,确实有想过这个,不过逻辑上估计稍稍困难,但未来估计必须得弄的感觉。
    谢过大家的回复!
    chenlong451
        10
    chenlong451  
       2014-03-19 22:54:48 +08:00
    颇想结识楼主。
    vilic
        11
    vilic  
    OP
       2014-03-20 04:01:07 +08:00
    @chenlong451 哈哈, 话说我都没提你怎知道...
    towser
        12
    towser  
       2014-03-22 19:23:43 +08:00
    @vilic 提什么?
    vilic
        13
    vilic  
    OP
       2014-03-23 15:14:24 +08:00
    @towser 没提这个东西有 iOS 版囧.
    towser
        14
    towser  
       2014-03-24 00:13:46 +08:00
    @vilic 我打开看了的,还顺带看了你的博客。
    哦,这是我小号。方便加个QQ认识认识么?
    vilic
        15
    vilic  
    OP
       2014-03-24 01:51:12 +08:00
    @towser 囧, 要是不怎么说话的话加 QQ 还是没问题的... 闲聊就... email 给我下 qq 吧.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2264 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.