垂直拆分
垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站不断丰富和壮大的时候,也会变成多个子系统来支撑,这时就有按模块和功能把表划分出来的需求。其实,相对于垂直切分更进一步的是服务化改造,说得简单就是要把原来强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看,因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表,淘宝在架构不断演变过程,最重要的一环就是服务化改造,把用户、交易、店铺、宝贝这些核心的概念抽取成独立的服务,也非常有利于进行局部的优化和治理,保障核心模块的稳定性
垂直拆分:单表大数据量依然存在性能瓶颈
水平拆分
上面谈到垂直切分只是把表按模块划分到不同数据库,但没有解决单表大数据量的问题,而水平切分就是要把一个表按照某种规则把数据划分到不同表或数据库里。例如像计费系统,通过按时间来划分表就比较合适,因为系统都是处理某一时间段的数据。而像SaaS应用,通过按用户维度来划分数据比较合适,因为用户与用户之间的隔离的,一般不存在处理多个用户数据的情况,简单的按user_id范围来水平切分
通俗理解:水平拆分行,行数据拆分到不同表中, 垂直拆分列,表数据拆分到不同表中
垂直与水平联合切分
由上面可知垂直切分能更清晰化模块划分,区分治理,水平切分能解决大数据量性能瓶颈问题,因此常常就会把两者结合使用,这在大型网站里是种常见的策略
案例:
以mysql为例,简单购物系统暂设涉及如下表:
1.产品表(数据量10w,稳定)
2.订单表(数据量200w,且有增长趋势)
3.用户表 (数据量100w,且有增长趋势)
以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万
垂直拆分:
解决问题:
表与表之间的io竞争
不解决问题:
单表中数据量增长出现的压力
方案:
把产品表和用户表放到一个server
订单表单独放到一个server上
 水平拆分:
解决问题:
单表中数据量增长出现的压力
不解决问题:
表与表之间的io争夺
方案:
用户表通过性别拆分为男用户表和女用户表
订单表通过已完成和完成中拆分为已完成订单和未完成订单
产品表 未完成订单放一个server上
已完成订单表盒男用户表放一个server上
女用户表放一个server上(女的爱购物)

关于数据库的水平切分和垂直切分的一些概念(转)相关推荐

  1. 数据库:数据库水平切分?垂直切分?整合方案?可能存在的问题?

    前言 通过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我们就必须许 ...

  2. 开源分布式数据库中间件MyCat架构简介(一)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 开源分布式数据库中间件MyCat架构简介--MyCat源起 一.数据库切分概述:OLTP和OLAP 二.关系型数据库和NoSQL数据库 三.关系型数据库和NoSQL数据库的特点及优缺点 1 ...

  3. 开源分布式数据库中间件MyCat架构简介(二)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理 一.关于Mycat 二.Mycat 实现原理 三.MyCat 应用场景 四.MyCat 未来展望 五.Mycat 中相关概念 ...

  4. mysql数据库垂直切分_mysql数据库的水平拆分与垂直拆分

    近端时间在面试,发现很多面试官或者面试都把数据的水平拆分合垂直拆分给搞混了,今天特意写了一篇博客来说说水平拆分和垂直拆分希望对程序猿们有所帮助. 数据库水平与垂直拆分: 垂直(纵向)拆分:是指按功能模 ...

  5. mysql 切分_MySQL 切分(Sharding)、水平切分、垂直切分以及读写分离的区别

    切分(Sharding)并不是特定数据库产品所附属的功能,而是在具体技术细节之上的抽象处理.是水平扩展(Scale Out)的解决方案,主要目的是解决单节点数据库服务器的能力限制,以及整个应用其架构的 ...

  6. mysql数据库水平分割_数据库的水平分割和垂直分割

    在数据库操作中,我们常常会听说这两个词语:水平分割和垂直分割.那么到底什么是数据库的水平分割,什么是数据库的垂直分割呢?本文我们就来介绍一下这部分内容. 1.水平分割: 按记录进分分割,不同的记录可以 ...

  7. 数据切分 垂直切分、垂直拆分与水平拆分的优缺点

    数据切分 垂直切分 关于数据库的水平切分和垂直切分的一些概念垂直拆分垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的.当一个网站还在 ...

  8. Mysql 扩展性设计之数据切分、那么数据切分后会带来哪些问题呢?比如分布式事务、数据的一致性、垂直切分和水平切分应用场景

    Mysql 扩展性设计之数据切分.那么数据切分后会带来哪些问题呢?比如分布式事务.数据的一致性.垂直切分和水平切分应用场景 前言.什么是数据切分 垂直(纵向)切分.水平(横向)切分.他们各自的特点 垂 ...

  9. 数据库Sharding的基本思想和切分策略

    为什么80%的码农都做不了架构师?>>>    本文着重介绍sharding的基本思想和理论上的切分策略,关于更加细致的实施策略和参考事例请参考我的另一篇博文:数据库分库分表(sha ...

最新文章

  1. 计算机话筒接口,电脑麦克风插口是哪个哪位知道?
  2. django mysql 表单_Python Django 表单提交数据到mysql并展示
  3. 微型计算机键盘上的西服的间称为,一台完整的微型计算机主要由主机箱. .键盘.鼠标及音箱.打印机组成....
  4. 夺命雷公狗---javascript NO:19 Navigator浏览器对象
  5. 控制文件丢失 如何恢复
  6. php上js实现ajax请求,原生JS实现ajax与ajax的跨域请求实例
  7. python比较两个文件内容是否一样_python判断两个json文件是否相等
  8. SQL Server 创建游标(cursor)
  9. 思科交换机路由器破解密码
  10. android 拼图验证码,android滑动拼图验证码控件
  11. 选择永远比努力更重要!
  12. 一个好用的智能抠图网站
  13. 这些年,这些ACM大佬-吴作凡访谈
  14. kinetis FTM 分析笔记
  15. 解决Pycharm出现的Debug无法正常运行(Frames are not available)的问题
  16. zTree的使用教程
  17. POI生成word文档,图片显示为空白或不显示
  18. 纯干货,面试题分享,让你打有准备的战!
  19. CC1101调试入门
  20. 基于PHP大学生旧货交易网站

热门文章

  1. javascript中的小括号
  2. Visual Studio统计有效代码行数
  3. Oracle Merge Into 的用法详解实例
  4. (5):Silverlight 2 实现简单的拖放功能
  5. Java使用InetAddress类获取主机名和IP地址
  6. Hadoop Jobhistory配置启用
  7. Date型时间获取每周第一天,每月第一天,每季第一天,每年第一天
  8. 腾讯云linux vnc端口,用腾讯云手把手教你用VNC搭建Ubuntu可视化界面(一)
  9. csgo 机器人模式_分享一个休闲模式机器人Bug
  10. lcd1602怎么利用按键清屏_边学边练,8个LCD1602精选电路方案大合辑