Nosql 分布式模型

    作者:课课家教育更新于: 2017-05-18 10:34:34

      类似SQLServer这样的关系型数据库是为过去的典型工作负载设计的。以前的传统应用中,人们对数据库读取速度的关注远远超过写入速度。但现在情况不同了,物联网设备会生成大量信号,可联网汽车会生成大量类似发动机温度之类的信息。信息的生成已经不足以用“海量”来形容。全球各地正在以极高的速度生成大量数据,数据库写入操作开始变得更重要。SQL在响应查询方面的表现很不错,但随着写入操作的崛起,NoSQL顺势而起。

      NoSQL数据库针对写入操作的处理进行了优化,可实现极大的规模。但从数据库读取内容时,NoSQL无法提供丰富的查询功能。用户真正需要的是一种针对写入操作进行优化的数据库引擎,这种引擎必须能支持足够大规模的快速写入,同时依然能提供丰富的查询功能。在一个服务器完全能够胜任工作时就没必要考虑分布式,这样部署简单,维护也方便很多。本文将介绍NoSQL数据库的分布式模型。

    Nosql 分布式模型_数据库_Nosql _数据库模型_课课家教育

      NoSQL数据库的分布式模型

      为什么要引入分布式?分布式的优缺点?分布式的方法?常用分布式技术详解?

      1、分布式要解决的问题

      随着数据量指数级的爆发式增长。用来购买更大服务器来运行数据库的纵向扩展(scaleup)方式会变得越发困难和昂贵。与之相比,将数据库运行在服务器集群上的横向扩展(scaleout)方式,由于技术的愈发成熟,逐渐成为了众多大型企业的首选。

      以京东为例,京东数据库主体发展,经历了MySQL—>sqlserver—>Oracle—>mysql集群。这种演变方式,也是大部分企业数据发展的演变过程。

      2、使用分布式的优势和缺陷

      优势:使用不同的分布式模型,需要安装企业需求来决定。有些模型能够处理超大量数据。有些能够处理超大量网络读写,还有的能应对网络速度慢或者网络故障。都是采用分布式所带来的优势。

      缺陷:成本较高,在集群上运行数据库,较为复杂。所以除非刚刚所说优势对企业很重要,否则不应该随意使用。

      3、常用的分布式途径方法

      较为宏观的分布式分类分为“复制(replication)”与“分片(sharding)”。

      复制:将同一分数据拷贝到多个节点

      分片:将不同数据存放在不同节点。

      这两种技术既可以独立使用,也可以同时使用。复制有两种形式“主从式(master—slave)”和“对等式(peer—to—peer)”。下面有简单到复杂来说说这些技术。

      4、常用分布式技术详解

      单一服务器

      通常,在大多数情况下,都推荐使用最简单的分布形式:也就是根本不分布。将数据放在同一台电脑中,让它处理对数据的存储操作。尽管许多NoSQL都是为集群运行环境而设计的,但是只要某个NoSQL数据库的数据模型符合应用程序需求,那么完全可以按照单一服务器分布模型来使用它。例如图数据库。若使用数据库基本上是为了处理聚合,那么可以考虑在单一服务器上部署“文档数据库”或者“键值数据库”,这样也能简化程序开发。总之,在不需要分布式数据就能应对时,总应该选用“单一服务器方案”。

      分片

      一般来说,数据库的繁忙体现在:不同用户需要访问数据集中不同部分。在这种情况下,我们把数据的各个部分存放在不同服务器中。以此实现横向扩展。该技术就叫“分片(sharding)”

      解决分片的服务器负载均衡难点:

      1)什么样的数据适合分片

      使用面向聚合的数据库,之所以设计聚合,就是把那些经常需要同时访问的数据放在一起。因此,我们把聚合作为分布数据的单元

      2)怎样的数据分布能提升负载均衡程度

      把聚合数据均匀的分布在各个节点中,让它们需要处理的负载量相当。例如我们可以把有可能需要以此读取的聚合放在一起。事实上大部分NoSQL都提供了“自动分片的功能”,让数据库自己负责把数据分布到各个分片,并且将数据访问请求引导至适当的分片上。

      需要考虑的问题

      如何存放数据,让用户基本上只需从一台服务器上获取数据

      如果经常需要与多个结点交互才能取到需要数据,可能分片策略不合适,或者该场景中分片不是一个理想的方案;

      数据节点的分布:地理位置与访问用户的关系

      数据结点分布在全球各地,让北京的用户只需要访问北京的结点就能取到所需数据;

      保持负载均衡

      优点

      同时提升读取和写入性能

      由于分片是将数据分散到多个结点存储,这样在写入时,压力同样分散;

      横向扩展写入能力

      缺点

      降低数据库的错误恢复能力

      分片后,集群中结点的故障将导致部分数据丢失;

      解决方案:每个分片数据不只存放在一个结点上,冗余存放,增加数据安全性(通过后面讲到的与主从复制的结合使用,是常用的手段)

      主从复制

      主从式分布:把数据复制到多个节点中,其中一个为“主节点”,其他为“从节点”。

      特点

      主节点存放权威数据,负责数据更新操作;

      主节点将更新的数据复制到从节点;

      优点

      有助于提升数据读取性能

      从结点只负责查询,增加从结点提升数据读取性能

      增强“读取操作的故障恢复能力”

      主节点损坏,依然可处理读取请求;

      从结点升级为主结点后可以处理更新请求;

      “一拖一”即时备份的单存储方案

      即使不需要分布式部署,主从复制也可以用来做为单机服务器备份的部署方案;

      缺点

      数据的不一致性(未及时更新)

      主节点更新后,同步到各个从结点的数据不能保证及时,可能导致各个结点上查询的数据不一致(只具有最终一致性)

      对提升写入操作性能帮助不大

      所有的更新操作都通过主结点处理,对于更新频繁的业务,使用主从复制模型优势不大;

      主节点是系统的瓶颈和弱点

    缺点    数据的不一致性(未及时更新)    主节点更新后,同步到各个从结点的数据不能保证及时,可能导致各个结点上查询的数据不一致(只具有最终一致性)    对提升写入操作性能帮助不大    所有的更新操作都通过主结点处理,对于更新频繁的业务,使用主从复制模型优势不大;    主节点是系统的瓶颈和弱点

      对等复制

      对等复制:对等复制所有节点地位相同,都可以接受写入请求,而且丢失其一,不影响整个数据库访问。

      特点

      所有节点地位相同,都可接收查询和写入请求;

      各节点将自己的更新的数据复制到其他节点;

      优点

      从容处理出错节点,不必担心数据请求的丢失

      增加节点,轻易提升查询和写入性能

      缺点

      数据不一致性

      写入和读取都有可能发生冲突;

      结合使用

      分片和主从复制中的一拖一方案结合使用;

      分片的作用在于数据的分布式存储;主从复制的作用在于为各个分片结点提供备份,增加数据安全;

      小编结语:

      更多内容尽在课课家教育!

课课家教育

未登录