`

DB - mysql海量数据的存储和访问解决方案

    博客分类:
  • DB
 
阅读更多

1.需求

        海量数据存储和访问成为了系统设计的瓶颈问题。

2.实际环境

        对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。

3.解决方案

       通过 数据切分来提高网站性能,横向扩展数据层实现了分布式数据访问层(DDAL) 已经成为架构研发人员首选的方式。

      水平切分数据库     可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。

      负载均衡策略        有效的降低了单台机器的访问负载,降低了宕机的可能性;

      集群方案               解决了数据库宕机带来的单点数据库不能访问的问题;

      读写分离策略        最大限度了提高了应用中读取(Read)数据的速度和并发量。

4.分布式数据访问层(DDAL) - JDBC层 和 ORM层

      ORM - 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如:Hibernate,ibatis

5.什么(what)是数据切分

       通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由 或者 table路由规则找到需要查询的具体的DB或者table,以进行Query操作。

6.为什么(why)数据切分

        ●oracle 支持海量数据查询与存储,但价格昂贵。mysql免费,通过对mysql实现sharding(碎片)理念,来支持海量数据的查询与存储。

        ●只通过Replication机制来提高读写的吞吐和性能存在一定缺陷:它的有效很依赖于读操作的比例,Master往往会成为瓶颈所在,写操作需要顺序排队来执行,过载的话Master首先扛不住,Slaves的数据同步的延迟也可能比较大,而且会大大耗费CPU的计算能力,因为write操作在Master上执行以后还是需要在每台slave机器上都跑一次。

        ●Sharding可以轻松的将计算,存储,I/O并行分发到多台机器上,这样可以充分利用多台机器各种处理能力,同时可以避免单点失败,提供系统的可用性,进行很好的错误隔离。

        综合以上因素,数据切分是很有必要的

7.怎么(how)数据切分

       数据切分可以是物理 上的,对数据通过一系列的切分规则将数据分布到不同的DB服务器上,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器的负载压力

       对数据通过一系列的切分规则,将数据分布到一个数据库的不同表中,比如将article分为article_001,article_002等子表,若干个子表水平拼合有组成了逻辑上一个完整的article表,这样做的目的其实也是很简单的。提高了数据操作的效率,尤其是Write操作的效率。

 

8.分布式数据方案提供功能

(1)提供分库规则和路由规则(RouteRule简称RR),将上面的说明中提到的三中切分规则直接内嵌入本系统,具体的嵌入方式在接下来的内容中进行详细的说明和论述;

(2)引入集群(Group)的概念,保证数据的高可用性;

(3)引入负载均衡策略(LoadBalancePolicy简称LB);

(4)引入集群节点可用性探测机制,对单点机器的可用性进行定时的侦测,以保证LB策略的正确实施,以确保系统的高度稳定性;

(5)引入读/写分离,提高数据的查询速度;

 

来自: http://www.jb51.net/article/23345.htm

Replication: http://www.cnblogs.com/hustcat/archive/2009/12/19/1627525.html

 

    

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics