Nosql 理解篇+实战篇 四 分布式模型
来源:互联网 发布:鲁能泰山 网络直播 编辑:程序博客网 时间:2024/06/05 08:18
四 分布式模型
为什么要引入分布式?分布式的优缺点?分布式的方法?常用分布式技术详解
1 分布式要解决的问题。
随着数据量指数级的爆发式增长。用来购买更大服务器来运行数据库的纵向扩展(scale up)方式会变得越发困难和昂贵。与之相比,将数据库运行在服务器集群上的横向扩展(scale out)方式,由于技术的愈发成熟,逐渐成为了众多大型企业的首选。
以京东为例,京东数据库主体发展,经历了mysql—>sqlserver—>oracle—>mysql集群。这种演变方式,也是大部分企业数据发展的演变过程。
2 使用分布式的优势和缺陷。
优势:使用不同的分布式模型,需要安装企业需求来决定。有些模型能够处理超大量数据。有些能够处理超大量网络读写,还有的能应对网络速度慢或者网络故障。都是采用分布式所带来的优势。
缺陷:成本较高,在集群上运行数据库,较为复杂。所以除非刚刚所说优势对企业很重要,否则不应该随意使用。
3 常用的分布式途径方法
较为宏观的分布式分类分为“复制(replication)” 与“分片(sharding)”。
复制:将同一分数据拷贝到多个节点
分片:将不同数据存放在不同节点。
这两种技术既可以独立使用,也可以同时使用。复制有两种形式“主从式(master—slave)”和“对等式(peer—to—peer)”。下面有简单到复杂来说说这些技术。
4 常用分布式技术详解
1 单一服务器
通常,在大多数情况下,都推荐使用最简单的分布形式:也就是根本不分布。将数据放在同一台电脑中,让它处理对数据的存储操作。尽管许多NoSQL都是为集群运行环境而设计的,但是只要某个NoSQL数据库的数据模型符合应用程序需求,那么完全可以按照单一服务器分布模型来使用它。例如图数据库。若使用数据库基本上是为了处理聚合,那么可以考虑在单一服务器上部署“文档数据库”或者“键值数据库”,这样也能简化程序开发。总之,在不需要分布式数据就能应对时,总应该选用“单一服务器方案”。
2分片
分片:一般来说,数据库的繁忙体现在:不同用户需要访问数据集中不同部分。在这种情况下,我们把数据的各个部分存放在不同服务器中。以此实现横向扩展。该技术就叫“分片(sharding)”
解决分片的服务器负载均衡难点:
1) 什么样的数据适合分片
使用面向聚合的数据库,之所以设计聚合,就是把那些经常需要同时访问的数据放在一起。因此,我们把聚合作为分布数据的单元
2) 怎样的数据分布能提升负载均衡程度
把聚合数据均匀的分布在各个节点中,让它们需要处理的负载量相当。例如我们可以把有可能需要以此读取的聚合放在一起。事实上大部分NoSQL都提供了“自动分片的功能”,让数据库自己负责把数据分布到各个分片,并且将数据访问请求引导至适当的分片上。
3 主从复制
主从式分布:把数据复制到多个节点中,其中一个为“主节点”,其他为“从节点”。
优势:1 在频繁读写数据集情况下,提示数据访问性能
2 提示读取操作的故障恢复能力
4对等复制
对等复制:对等复制所有节点地位相同,都可以接受写入请求,而且丢失其一,不影响整个数据库访问。
优势:处理出错的节点得心应手。
只需增加节点就能提升性能。
缺点:数据一致性问题。例如写入冲突。
- Nosql 理解篇+实战篇 四 分布式模型
- Nosql 理解篇+实战篇 一 了解nosql
- Nosql 理解篇+实战篇 二 NoSQL的数据模型Ⅰ
- Nosql 理解篇+实战篇 五 NoSQL一致性解决方案
- NoSQL数据库的分布式模型
- NoSQL数据库的分布式模型
- 分布式系统(四)---Web Service实战--CXF实践篇
- Nosql 理解篇+实战篇 三 数据模型Ⅱ 聚合数据库关系处理及图数据库
- 分布式队列编程:模型、实战
- 分布式队列编程模型、实战
- 分布式队列编程:模型、实战
- 分布式消息队列模型 实战
- 分布式 Nosql
- 分布式数据库集群中间件理解------分布式模型
- 深入理解NoSQL数据库分布式算法及策略
- 多线程编程 实战篇 (四)
- 多线程编程 实战篇 (四)
- 多线程编程 实战篇 (四)
- ORACLE RAC IP修改(ORACLE 11.2.0.4)
- MySQL抓包工具:MySQL Sniffer
- DFS与BFS的代码实现
- cleanup_highmap之后的页表
- Hibernate实现分页 笔记
- Nosql 理解篇+实战篇 四 分布式模型
- caffe编译成功之后的一些步骤
- Knockout应用开发指南 第一章:入门
- Caused by: Action class [com.struts.action.LoginAction] not found 解决方法
- 正则表达式
- jQuery省市的二级联动
- js基础--数据类型转换
- 使用Dev-C++查看vector数组中的变量值
- 烈酒的博客