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

请问像知乎这种超大型的论坛项目是数据库底层是如何设计的?

  •  2
     
  •   noble4cc · 2019-05-09 11:08:39 +08:00 · 6852 次点击
    这是一个创建于 2032 天前的主题,其中的信息可能已经有所发展或是发生改变。

    底层持久化肯定要分库分表了,像这种要分多少库呢?每个库中的回答或者说评论又要分多少表呢?

    打开首页看到的是关注人的热数据 这种肯定不是靠直接查库了(肯定分布在不同的库中),这种功能又是如何实现的呢?

    只是想和大家头脑风暴下,大牛轻喷

    26 条回复    2019-05-10 11:54:02 +08:00
    ccchooko
        1
    ccchooko  
       2019-05-09 11:33:30 +08:00
    mark~前排搬个小板凳
    CEBBCAT
        2
    CEBBCAT  
       2019-05-09 12:38:59 +08:00
    BihuBihu 我不知道,bilibili 我倒是可以推荐给你 (逃)

    @ccchooko #1 有更好用的收藏功能可用,或者加浏览器书签
    noble4cc
        3
    noble4cc  
    OP
       2019-05-09 12:54:05 +08:00
    @CEBBCAT 大佬详细说说 b 站的也行,交流下
    SmallDream1995
        4
    SmallDream1995  
       2019-05-09 13:24:42 +08:00
    @noble4cc 这位老哥应该只是在调侃之前的 B 站源码泄漏事件。。
    janxin
        5
    janxin  
       2019-05-09 13:28:35 +08:00
    哪有提前要知道自己要分多少的...
    gemini767
        6
    gemini767  
       2019-05-09 13:31:52 +08:00
    从来都是按照业务的发展来定义的,没有银弹

    热门数据肯定有推荐系统,查库太粗暴了
    jswh
        7
    jswh  
       2019-05-09 13:37:46 +08:00   ❤️ 4
    分库分表并没有定数,一定是根据你的业务属性做的。
    推荐系统基本不会直接查库。以前做的推荐系统设计,是每一个发布的内容进来,会推到队列里面等着做特征的计算,然后和之前的已经算好的用户特征做匹配,然后推到每个用户自己的内容队列里面。最终的 api 只有从这个内容队列里面取数据就行了,然后组合其他的非推荐内容数据就行了。
    leegoo
        8
    leegoo  
       2019-05-09 13:46:17 +08:00
    经常查的数据肯定不会直接通过数据库查询的,性能太差(相比于搜索引擎), 估计你看知乎大部分都是看知乎推荐给你的,或者是排行榜的 自己去搜索内容肯定很少是吧? 至少别人肯定也是用 es 什么的来提供这方面的功能,当然降到最底层肯定是用数据库了,或许都不是你认为的关系型数据库呢?论坛这种东西丢一条回复又有什么影响呢?而且知乎的后端好像还用 Golang 重构过
    uxstone
        9
    uxstone  
       2019-05-09 14:37:05 +08:00
    首先 知乎目前用的是啥数据库?
    taozle
        10
    taozle  
       2019-05-09 15:09:08 +08:00
    这么感兴趣,投个简历进来看看就知道了
    opengps
        11
    opengps  
       2019-05-09 15:10:54 +08:00
    这个能说的太多了,对于很多数据既然只读性质,那么肯定有内存性数据库当缓存用
    est
        12
    est  
       2019-05-09 15:19:14 +08:00
    zhihu 哪里算大了。。。。。天天都在 X 治 X 感删帖。
    geniusmyn
        13
    geniusmyn  
       2019-05-09 15:22:44 +08:00
    插眼
    raysmond
        14
    raysmond  
       2019-05-09 15:25:17 +08:00   ❤️ 3
    可以研究一下 reddit 以前的设计,memcache+cassandra+postgres,网上有分享。
    gramyang
        15
    gramyang  
       2019-05-09 17:36:28 +08:00
    我记得知乎上有回答的,知乎的架构,你要搜索一下
    nimrc
        16
    nimrc  
       2019-05-09 17:40:04 +08:00   ❤️ 2
    逼乎就是个小破站 啊 一台 mysql 绰绰有余
    jjianwen68
        17
    jjianwen68  
       2019-05-09 17:47:22 +08:00
    不同模块可能是不同的系统提供的服务,不同的系统可能又是不同的设计
    OakScript
        18
    OakScript  
       2019-05-09 19:12:29 +08:00
    看到是多种存储啊,应该是 redis/memcache + mysql/postfresql + mongo/dynamo... 组合使用
    Weixiao0725
        19
    Weixiao0725  
       2019-05-09 19:23:03 +08:00
    知乎好像也上 TiDB 了吧
    noble4cc
        20
    noble4cc  
    OP
       2019-05-09 19:23:36 +08:00
    @jswh 每个用户都有自己的推荐队列是否是太浪费存储了
    dexterzzz
        21
    dexterzzz  
       2019-05-09 19:35:04 +08:00 via Android
    stack overflow 架构,表结构,数据都有公开
    mamahaha
        22
    mamahaha  
       2019-05-09 22:26:35 +08:00
    有钱能使鬼推磨,自己做好业务逻辑,剩下的花钱买机器雇人就行了。
    mamahaha
        23
    mamahaha  
       2019-05-09 22:29:26 +08:00
    我的花瓣+知乎+豆瓣全方位娱乐汇总网站马上就要出世了
    ETiV
        24
    ETiV  
       2019-05-09 23:25:13 +08:00   ❤️ 1
    我觉得,改造、优化 InnoDB,才能叫「数据库底层」

    标题改叫「用的啥数据库,数据表咋设计的,缓存咋用的」比较合理些
    coder9778
        25
    coder9778  
       2019-05-10 10:30:34 +08:00
    @noble4cc 大 Vpush mq, 小透明直接查库。
    NB40B938mff85mtq
        26
    NB40B938mff85mtq  
       2019-05-10 11:54:02 +08:00
    分享你刚编的故事~~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2583 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:40 · PVG 12:40 · LAX 20:40 · JFK 23:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.