想要学习分布式数据库应该如何入门? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
black11black
V2EX    Java

想要学习分布式数据库应该如何入门?

  •  
  •   black11black 2020-08-22 05:59:55 +08:00 via Android 4956 次点击
    这是一个创建于 1884 天前的主题,其中的信息可能已经有所发展或是发生改变。
    利益相关: 在学校里没接触过相关概念,毕业后也没用过

    事情是这样,我司最近几个月时间在做的一个项目后台数据规模在几十亿(不到一百亿)的水平,好在可用性需求不是特别高,我们当初开会最后决定入库还是用 oracle 硬刚。

    最近在 v2 看到一些帖子提到分布式数据库的概念,以前感觉一直是个比较神秘的领域,但是最近正好借着项目机会,是不是能更容易理解概念了,心想是不是能把这部分知识学起来

    主要问题就是对分布式数据库相关完全不了解,不知道概念从哪澄清,从哪入门。

    分布式数据库是不是就是合理搭建以后,对表现无限接近于传统数据库,但是可用性有明显提高这样?再加上存储也是分布在不同节点的?
    23 条回复    2020-11-09 03:43:06 +08:00
    singerll
        1
    singerll  
       2020-08-22 06:28:36 +08:00 via Android
    阿里云官方的 drds 文档
    opengps
        2
    opengps  
       2020-08-22 07:29:59 +08:00 via Android
    先搞清楚用分布式的目的:
    硬盘空间不够?
    硬盘 io 不够?
    副本容灾?
    yulang
        3
    yulang  
       2020-08-22 08:42:29 +08:00 via Android
    我们最近正在搞分布式数据库,可以交流下
    kidlj
        4
    kidlj  
       2020-08-22 09:16:16 +08:00 via iPhone
    TiDB
    CockroachDB
    sparkle2015
        5
    sparkle2015  
       2020-08-22 10:28:28 +08:00   1
    PingCAP University 以及 PingCAP Talent Plan 了解一下: https://university.pingcap.com/ https://university.pingcap.com/talent-plan/ 教你学习,使用和实现分布式数据库
    snappyone
        6
    snappyone  
       2020-08-22 10:30:36 +08:00   1
    raft 论文走一遍,看明白了论文就全懂了
    zoharSoul
        7
    zoharSoul  
    &nbp;  2020-08-22 10:42:14 +08:00
    阿里云 drds 掏钱就行了
    azureus
        8
    azureus  
       2020-08-22 11:09:03 +08:00
    可以了解一下腾讯开源的 tbase,分布式数据库
    chihiro2014
        9
    chihiro2014  
       2020-08-22 14:53:20 +08:00
    学下 6.824 和 DBMS 差不多就行了
    TypeError
        10
    TypeError  
       2020-08-22 18:31:43 +08:00 via Android   1
    强烈推荐“DDIA” 中文书名《数据密集型应用系统设计》

    跟着翻一遍就可以系统了解数据库和分布式系统了,
    深入的话可以跟着书中给出的论文引用走
    laminux29
        11
    laminux29  
       2020-08-22 19:17:08 +08:00
    如果你有时间,或者自己能挤出时间,并且有两三年的学习计划,建议是:

    模电 -> 数电 -> 组成 -> 汇编 -> C/C++ -> Java/C#/PHP/Python -> 操作系统 / 计算机网络 / *多媒体 -> 数据库 -> 分布式。

    之所以要这样设置,是因为,分布式主要是为了能以低成本来解决性能问题。

    性能问题,要弄彻底清楚原因,需要从模电开始。

    然后汇编、C/C++以及操作系统,能够从指令、操作、基本架构上说明单机的性能问题。

    计算机网络、数据库,这些是对分布式问题的应用。

    多媒体作为选修,如果工作有接触,可以去了解一下。
    black11black
        12
    black11black  
    OP
       2020-08-23 04:43:40 +08:00 via Android
    @opengps 目的是提高可用性,以后跳槽时可以回答人家的百万并发问题
    black11black
        13
    black11black  
    OP
       2020-08-23 04:46:35 +08:00 via Android
    @laminux29 神 tm 从模电开始,我本人比较孤陋寡闻,无名三本毕业的,我们学校组原也是从数电开始讲,我想听大神讲讲模电怎么影响分布式性能的?
    labulaka521
        14
    labulaka521  
       2020-08-23 13:41:06 +08:00 via iPhone   1
    @laminux29 建议从造 cpu 硬盘 内存开始
    yanyueio
        15
    yanyueio  
       2020-08-23 18:09:42 +08:00
    让题主从头开始修炼的也真是够了。

    分布式数据库多半就是 redis, cassandra, mongodb, hbase 这类 nosql 了,和传统数据库的百万级数据量不同,这里处理能力都在百万以上,多半是集群方式部署的。抽象来看(从外部来看)他们既可以是 source,也可以作为 sink,所以说和传统数据库用起来有啥不同,外部是感受不到的(但实际上内部是不同的,比如存储方式,核心数据模型) --- 一般都会有类似传统 SQL 一样的封装 API 给你。

    但分布式数据库引入了高可用,高并发存储的同时也引入了诸如一致性问题,节点维护,通信问题,备份容灾等等,这比传统数据库的主从复制, 分表分库等要复杂一些。

    入门的话,找一个分布式数据库比如 hbase 看看就知道怎么回事儿了,其他虽然有不同但只要不离开分布式(相对的是单机),大同小异。
    black11black
        16
    black11black  
    OP
       2020-08-23 18:35:41 +08:00 via Android
    @yanyueio 感谢回复,分布式都是基于 nosql 技术吗?跟想象中差别很大,几个问题,一个比如 nosql 放在内存里实际上能存的数据很少,比如我们这种百亿级的业务,一般内存扛不住。再一个是持久化储存的问题,为了防止突发情况断电丢数据,一般应该都会有一些持久化策略,但是毕竟 nosql,边际情况的可靠性如何确保呢?
    yanyueio
        17
    yanyueio  
       2020-08-23 19:41:22 +08:00   1
    @black11black 这个要具体数据库具体分析。你问的问题已经设计到了其存储模型。首先这些 nosql 本身没有约束限制,所以存储起来要比检查约束的传统数据库快;其次,诸如列式存储的 hbase 更是如此,即并非都是行式存储。最后,nosql 并非都是 redis 这样存储在内存中的(分布式计算框架才大多都是在内存中处理),他们多半也是要落地到磁盘&文件系统,然而集群的读写,外加底层有 hdfs 等这样专门设计的文件系统,所以读写效率也是不错的,至少比传统型的 oracle 抗打(不绝对啊,你可以参考一下 ocean base 这类与 oracle 集群的对比看看是否有虚假宣传)。最后可靠性问题,这本质是集群管理的问题,比如 leader 挂了,怎么重新选举,怎么冗余备份等,具体还是要落实到各个数据库,比如 cassandra 解决方案就是无中心化架构,不分主从。一点浅见,仅供参考。
    laminux29
        18
    laminux29  
       2020-08-23 20:22:44 +08:00
    @black11black 思考一下,为什么高温会影响电脑运算速度。

    另外,提高技术水平,会受很多因素。专业学习是一方面,思想品德也很重要。
    laminux29
        19
    laminux29  
       2020-08-23 20:29:50 +08:00
    @labulaka521 CPU 和内存这种门槛太高的就不说了,说说简单一些的存储设备吧,你可以尝试举出几种你知道的存储设备类型,然后思考一下,这些存储设备,是因为怎样的需求而诞生的?
    laminux29
        20
    laminux29  
       2020-08-23 20:34:26 +08:00
    @yanyueio

    你如果觉得,我建议题主从头修炼不合适,那么,就说说你提到 nosql 与传统数据库,对于以下问题:

    1.nosql 与传统数据库,为什么会存在性能差别?

    2.既然 nosql 性能那么高,为什么很多项目选型仍然会选择传统数据库?

    3.nosql 为什么通常会采用分布式,而非单机方式来部署?

    你觉得,如果不从头修炼,他如何回答这些问题?
    gaius
        21
    gaius  
       2020-08-24 02:34:07 +08:00 via Android
    mit 6.824 ,cmu 15-721 入门。
    想啥呢肯定直接买商用
    gaius
        22
    gaius  
       2020-08-24 02:37:25 +08:00 via Android
    而且确定需要 oltp ?
    chinafengzhao
        23
    chinafengzhao  
       2020-11-09 03:43:06 +08:00 via iPhone
    @gaius 这两个专业
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     881 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:38 PVG 06:38 LAX 15:38 JFK 18:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86