程序员人生 网站导航

数据库的水平扩展与垂直扩展

栏目:互联网时间:2014-11-20 08:45:05

http://www.wfuyu.com/db/水平扩大与垂直扩大

          在http://www.wfuyu.com/Internet/利用中,http://www.wfuyu.com/db/常常是我们存储和访问数据的经常使用介质。随着负载的增大,对http://www.wfuyu.com/db/读写性能的要求常常成为很大的挑战。在这类情况下我们可以斟酌http://www.wfuyu.com/db/相干的replication机制提高读写的性能。由于1般采取1写多读的replication机制(写master同步到多个slaves),致使这样的机制常常会有缺点。首先它依赖于读写的比例,如果写的操作过量,致使master常常成为性能的瓶颈所在,从而使得slaves的数据同步延迟也变大,进而大大消耗CPU的资源,并且致使数据的不1致从而影响到用户的体验。

       这个时候我们就要斟酌使用http://www.wfuyu.com/db/的sharding(分片)机制,这里面我们所说sharding机制其实不是1个http://www.wfuyu.com/db/软件的附属功能,而是1种相对简朴的软件理念。1般我们把sharding机制分成水平扩大(横向扩大,或向外扩大)和垂直扩大两种方式。具体甚么是http://www.wfuyu.com/db/的水平扩大和垂直扩大呢?我们以下面的例子来讲明。

       比如我们现在有两个表:用户信息表 产品定单表

       水平的拆分的方案,即不修改http://www.wfuyu.com/db/表结构,通过对表中数据的拆分而到达分片的目的:

1)使用用户id做hash,分解http://www.wfuyu.com/db/,在访问http://www.wfuyu.com/db/的使用用户id做路由。

2)将产品定单表依照已下单和未下单辨别成两个表。

       1般水平拆分在查询http://www.wfuyu.com/db/的时候可能会用到union操作。

 

垂直拆分的方案:将表和表分离,或修改表结构,依照访问的差异将某些列拆分出去。

         1)将用户信息表放到1个http://www.wfuyu.com/db/server,将产品定单表放到1个http://www.wfuyu.com/db/server。

         2)将用户信息表中主码(1般是user id)和1些经常使用的信息放到1个表,将主码和不经常使用的信息放到另外的表,这致使1般查询数据的时候可能会用到join操作。

在http://www.wfuyu.com/db/的设计中,我们更关注http://www.wfuyu.com/db/的水平扩大的能力。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐