没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
平切分,分库,分表,主从,集群 数据库水平切分的实现原理解析-
--分库,分表,主从,集群,负载均衡器
mysql 2010-12-28 10:03:31 阅读 181 评论 0 字号:大中小%订阅
第 1 章% 引言
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的
互联网应用,每天几十亿的 PV 无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极
大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分
数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。通过负载均衡策略,有效
的降低了单台机器的访问负载,降低了宕机的可能性;通过集群方案,解决了数据库宕机带来的单点数据
库不能访问的问题;通过读写分离策略更是最大限度了提高了应用中读取(Read)数据的速度和并发量。
目前国内的大型互联网应用中,大量的采用了这样的数据切分方案,Taobao,Alibaba,Tencent,它们大都
实现了自己的分布式数据访问层(DDAL)。以实现方式和实现的层次来划分,大概分为两个层次(Java
应用为例):JDBC 层的封装,ORM 框架层的实现。就 JDBC 层的直接封装而言,现在国内发展较好的
一个项目是被称作“变形虫”(Amoeba)的项目,由阿里集团的研究院开发,现在仍然处于测试阶段(beta
版),其运行效率和生产时效性有待考究。就 ORM 框架层的实现而言,比如 Taobao 的基于 ibatis 和
Spring 的的分布式数据访问层,已有多年的应用,运行效率和生产实效性得到了开发人员和用户的肯定。
本文就是以 ORM 框架层为基础而实现的分布式数据访问层。本课题的难点在于分库后,路由规则的制定
和选择以及后期的扩展性,比如:如何做到用最少的数据迁移量,达到扩充数据库容量(增加机器节点)
的目的。核心问题将围绕数据库分库分表的路由规则和负载均衡策略展开。
第 2 章 基本原理和概念
2.1 基本原理:
人类认知问题的过程总是这样的:what(什么)-?why(为什么)-?how(怎么
做),接下来,本文将就这三个问题展开讨论和研究:
2.1.1 什么是数据切分
"Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,似乎最早见于大型多人在线角
色扮演游戏中。"Sharding" 姑且称之为"分片"。Sharding 不是一门新技术,而是一个相对简朴的软件理念。
众所周知,MySQL 5 之后才有了数据表分区功能,那么在此之前,很多 MySQL 的潜在用户都对 MySQL
的扩展性有所顾虑,而是否具备分区功能就成了衡量一个数据库可扩展性与否的一个关键指标(当然不是
唯一指标)。数据库扩展性是一个永恒的话题,MySQL 的推广者经常会被问到:如在单一数据库上处理应
用数据捉襟见肘而需要进行分区化之类的处理,是如何办到的呢? 答案是:Sharding。% Sharding 不是一
个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或
横向扩展、向外扩展)的解决方案,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据
库扩展性问题。
通过一系列的切分规则将数据水平分布到不同的 DB 或 table 中,在通过相应的 DB 路由 或者 table
路由规则找到需要查询的具体的 DB 或者 table,以进行 Query 操作。这里所说的“sharding”通常是指“水
平切分”, 这也是本文讨论的重点。具体将有什么样的切分方式呢和路由方式呢?行文至此,读者难免有
资源评论
- stefan3212012-08-10建议不要下载 骗分的资源 网上有类似的文章都不完整,第4章以后都没有 http://zhengdl126.iteye.com/blog/419850
- baggiosharp2012-12-21很好,学习了很多数据库的拆分知识
yzy85
- 粉丝: 27
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功