NoSQL数据库的分布式模型

时间:2022-11-12 23:56:14

NoSQL数据库的分布式模型

单一服务器

在一个服务器完全能够胜任工作时就没必要考虑分布式,这样部署简单,维护也方便很多;

分片

特点

数据的各个部分存放在集群的不同服务器中;
比如按字母来划分:以a-g开头的键值都存放到第一台服务器上,以h-n开头的存放到第二台...

需要考虑的问题

  • 如何存放数据,让用户基本上只需从一台服务器上获取数据
    如果经常需要与多个结点交互才能取到需要数据,可能分片策略不合适,或者该场景中分片不是一个理想的方案;

  • 数据节点的分布:地理位置与访问用户的关系
    数据结点分布在全球各地,让北京的用户只需要访问北京的结点就能取到所需数据;

  • 保持负载均衡

优点

  • 同时提升读取和写入性能
    由于分片是将数据分散到多个结点存储,这样在写入时,压力同样分散;

  • 横向扩展写入能力

缺点

降低数据库的错误恢复能力
分片后,集群中结点的故障将导致部分数据丢失;
解决方案:每个分片数据不只存放在一个结点上,冗余存放,增加数据安全性(通过后面讲到的与主从复制的结合使用,是常用的手段)

主从复制

特点

主节点存放权威数据,负责数据更新操作;
主节点将更新的数据复制到从节点;

优点

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

  • 增强“读取操作的故障恢复能力”
    主节点损坏,依然可处理读取请求;
    从结点升级为主结点后可以处理更新请求;

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

缺点

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

  • 对提升写入操作性能帮助不大
    所有的更新操作都通过主结点处理,对于更新频繁的业务,使用主从复制模型优势不大;

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

对等复制

特点

所有节点地位相同,都可接收查询和写入请求;
各节点将自己的更新的数据复制到其他节点;

优点

  • 从容处理出错节点,不必担心数据请求的丢失
  • 增加节点,轻易提升查询和写入性能

缺点

  • 数据不一致性
    写入和读取都有可能发生冲突;

结合使用

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

注:新浪Redis集群的部署使用的是这种方案,关于新浪redis的使用详见大CC之前的博客:
Redis 在新浪微博中的应用

附思维导图

NoSQL数据库的分布式模型

参考

《NoSQL精粹》

Posted by: 大CC | 30JUN,2014
博客:blog.me115.com [订阅]
微博:新浪微博

NoSQL数据库的分布式模型的更多相关文章

  1. Atitit.nosql api 标准化 以及nosql数据库的实现模型分类差异

    Atitit.nosql api 标准化 以及nosql数据库的实现模型分类差异 1. 常用的nosql数据库MongoDB  Cassandra1 1.1. 查询> db.blogposts. ...

  2. 各NoSQL数据库管理系统与模型比较

    提供:ZStack云计算 内容简介 NoSQL数据库的存在意义在于提供传统关系数据库管理系统所不具备的特定功能.无论是负责承载简单的键-值对存储以实现短期缓存,抑或是处理传统数据库及结构化查询语言(简 ...

  3. [转载] nosql 数据库的分布式算法

    原文: http://juliashine.com/distributed-algorithms-in-nosql-databases/ NoSQL数据库的分布式算法 On 2012年11月9日 in ...

  4. NoSQL数据库的分布式算法

    本文译自 Distributed Algorithms in NoSQL Databases 系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性 ...

  5. NoSQL数据库的分布式算法详解

    系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性.这么讲使得NoSQL听起来像是一个大筐,什么都能塞进去.尽管NoSQL运动并没有给分布式数据 ...

  6. 关系型数据库与NoSQL数据库

    关系型数据库的优缺点 优点: 可以做事务处理,从而保证了数据的一致性: 可以进行JOIN等多表查询: 由于以SQL标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处). 缺点: 大量数据的写 ...

  7. Nosql数据库的四大分类及分布式数据库CAP原理

    1. Nosql数据库的四大分类 2. 分布式数据库CAP原理 2.1 关系型数据库事务遵循的ACID规则 首先了解传统关系型数据库事务遵循的ACID规则: 原子性(Atomicity):事务里的所有 ...

  8. NoSQL数据库 Couchbase Server - 分布式缓存

    Couchbase Server (前身是 Membase) 是一个分布式的面向文档的 NoSQL 数据库管理系统,该系统联合了 CouchDB 的简单和可靠以及 Memcached 的高性能以及 M ...

  9. 《滴滴自研分布式 NoSQL 数据库 Fusion 的演进之路》

    SSD:采用闪存: 读的速度很快:写入数据时,因为需要通过加压的方式对存储单元进行电子填充,所以速度略慢:擦除速度最慢,擦除块的时间在ms级.在使用SSD的时,需要考虑到SSD的读写不平衡的特性. 滴 ...

随机推荐

  1. WebApi系列~目录

    回到占占推荐博客索引 写了这个系列的文章不少了,也应该为大家写个目录了,最近很刮了很多SOA的风,很多企业都将自己的系统进行分割,通常是按模块进行拆分,为这个模块提供统一的接口提供业务服务,这不紧可以 ...

  2. Android Instrumention.sendPointerSync发送Event失败分析

    问题场景 Android4.3,进入被测app某个Activity后,测试案例ClickOnScreen出现异常(Click can not be completed!). Android4.4正常. ...

  3. 简单搭建React-Native环境

    1. 背景 差不多半年前安装这个RN环境,由于各种原因,一直安装不成功.时至今日,现在安装这个环境现在方便很多了. 2. 安装软件 安装nodejs,npm  https://nodejs.org/e ...

  4. 统一样式的View应该用style修饰

    我们的应用中,常常有一些统一的组件,这时候应该用style来修饰.这样的话,修改起来也方便,代码也更简洁 比如,下面的代码,没有用style修饰 <LinearLayout xmlns:andr ...

  5. tr命令的使用

    tr是translate的简写,亦即翻译,但是遗憾的是,它不能翻译句子,只能翻译单个字符. 1 tr的工作原理是什么? 先记住一点,tr命令不接受指定的文件参数,而只是对标准输入进行翻译.好了,记住这 ...

  6. windows环境自动获取SVN仓库当前版本

    如果我们的软件能够自动引入SVN修订号(仓库版本号),那么我们开发软件的时候就能快速定位bug出自哪个SVN版本.那么如何让软件直接自动生成并引用SVN版本号呢? 我们可以使用SVN info命令,在 ...

  7. C&num; 开发系列&lpar;一&rpar;

    1.开发环境搭建: win7 32位系统,然后安装 visual studio 2012. 2.将 .net_framework 加入到windows 的环境变量当中. C:\Windows\Micr ...

  8. Linux 搭建Zookeeper集群

    1.使用root创建zookeeper用户:     useradd zookeeper:     passwd  zookeeper; 2.登录zookeeper用户,将下载的zookeeper-3 ...

  9. Spring 学习笔记(七)—— 切入点表达式

    为了能够灵活定义切入点位置,Spring AOP提供了多种切入点指示符. execution———用来匹配执行方法的连接点 语法结构:   execution(   方法修饰符  方法返回值  方法所 ...

  10. 使用Rapidxml读取xml文件

    现有xml文件如上,写在一个string中.需要获取节点上元素的类别和属性信息,并存储到结构体表中. 结构体如下: 得到的结果如下: