• Eternal
    2019-11-23
    老师的问题:传统单机关系型数据库与分布式数据库的区别是什么?

    回答老师的问题,我任务首先需要需要梳理几个维度,然后通过这些维度来比较单机数据库和分布式数据库的区别,其实课程内容中老师已经
    回描述了很多了,我这里总结一下自己的思考:

    1.需求场景的演进
    在互联网和移动互联网还没爆发的时候,系统的用户量,数据量,系统的交互实时性都比较低。这个时候单机的关系型数据库就已经够用了。
    但是随着互联网和移动互联网的发展,单机的关系型数据库不能满足需求的迭代,于是分布式数据据演化出来。我们可以通过分库分表,
    数据的水平拆分,垂直拆分来扩展数据库的服务能力,但是这样没有本质的改变单机的关系型数据库。

    2.数据量
    传统单机关系型数据库单表1亿数据量我们认为比较高了,需要拆分,分布式数据库OceanBase能支持上千亿上百TB级别的数据跨行跨表事务
    处理,传统单机关系型是完全不能抗衡的。

    3.数据的存储格式
    传统单机关系型数据库:存储的是结构化的表数据
    分布式数据库:支持结构化的表数据、半结构化数据、非结构化数据

    4.数据的索引
    传统单机关系型数据库:B树、B+树、hash、倒排索引;比如Mysql目前主流使用都是Innodb的 B+树索引
    分布式数据库:hash、一致性hash环、数据范围分类
    因为数据的格式变化得更加丰富,数据的索引也变化了

    5.数据分片和数据复制
    传统单机关系型数据库:可以主从复制(主提供写,从提供读);可以数据拆分。拆分后一个节点故障后不能提供服务。
    分布式数据库:可以将数据拆分成很多个节点,每个节点都有多个数据副本,每个节点都能提供数据的读写,数据自动合并

    6.老师上一节将的CAP理论维度
    传统单机关系型数据库:支持CA,不支持P
    分布式数据库:支持P,CA之间根据业务场景取舍


    7.使用效率:关联查询、事务处理、排序处理
    传统单机关系型数据库:三个维度都支持得很好,很成熟
    分布式数据库:关联查询复杂度提高了、事务数据复杂度提高了,排序的复杂度提高了
    展开
    
     8
  • 💢 星星💢
    2019-12-19
    传统单机数据库,首先单机存储容量肯定有限制的,而且存在单点,但是上一讲说了它是不存在网络分区的,处理数据简单明了。这讲来讲拿货取货,都非常方便,可以没有导购。
    而分布式数据库,存储容量是根据你业务增长来的。解决了单兵作战问题。但是处理数据比较麻烦,还要参考cap理论,做相应的技术手段应对。拿货取货都比较麻烦,必须要有导购,而且还要根据各种货物的类型,选择合适的货架放置。

    作者回复: 总结的非常好!加油!

    
     1
  • leslie
    2019-11-20
    传统的单机其实问题在于处理并发的能力弱,早期的网络速度和使用用户没那么多;单机足以支撑,现在网速、连接数、需求更加多样化了,单机就难以支撑了。生产环境不可能是读写1:1,大多数场景还是会是70%的读30%的写或者更高,故而后期的做法基本都是用读写分离去平衡这种问题。
          用擅长的东西去做擅长的事情吧,故而MYSQL会有MYISAM和INNODB两种存储引擎,MYSQL5.0时MYISAM为主innodb可辅,10年后到了5.7完全反向了。人不可能全能:多件事情都需要做可能就需要团队了。MYSQL的分布式主要是做了读写分离:针对生产线上的压力去增加只读数据库或者写数据库从而平衡线上的压力。
          老师的课程今天讲的3个东西其实就是目前的中间件存储/数据系统:MQ+NOSQL DB+ RMDB;不再是用单一的数据库去支持整个业务,而是用整个数据系统去支撑整个业务。
           
      
    展开
    
     1
  • Jackey
    2019-11-20
    刚好公司目前在拆分数据库,我从使用的角度聊一聊单机和分布式的区别吧。首先影响最大的可能是联查,分布式数据库的联查是一件很麻烦的事情,因为要关联的数据可能不在同一个库里。然后是取前n个值,由于数据分散在各个库中,如果不是根据sharding字段排序,要得到准确排序,可能需要把m(数据库数量)倍的数据都查出来,放到内存中排序,这个效率会非常低。
     1
     1
  • Geek_f6f02b
    2019-12-23
    oceanbase好像1.4之后就不开源了,走商业化了
    
    
  • 阿卡牛
    2019-11-23
    老师会说单主节点、多主节点、无主节点复制的相关内容吗
    
    
  • 随心而至
    2019-11-20
    这篇文章真是太赞了,之前我总是觉得Mongodb,Redis,Elasticsearch,Kafka等等关于数据存储都好像好像。
    下面是我之前的留言:
    分布式数据存储,好像都是利用某种hash算法将数据存在不同的机器上。Kafka: hash(消息的键)来确定分区;Redis:hash(key)来确定slot;ES:hash(docId)来确定shard。

    看了今天的文章,顾客(生产者/消费者),导购(数据索引),货架(数据库),真是有种拨开云雾见青天的感觉,茅塞顿开,赞赞赞。
    展开
    
    
  • xingoo
    2019-11-20
    在存储位置方面,传统数据库一般很少做集群,点也很少。分布式数据库一般会由几十,几百,几千个节点组成。而数据的查询分布都是靠数据分片的规则来定。

    在存储格式上,传统数据库一般采用b+树,适合增删改查重建索引;分布式数据库一般采用lsm树,顺序插入,合并更新机制。

    存储的内容上,分布式数据库一般结构化不明显,偏向稀疏的列式存储,不容易做到acid,锁的机制也没有数据库丰富。
    
    
我们在线,来聊聊吧