数据库的水平扩展与垂直扩展
数据库水平扩展与垂直扩展
在互联网应用中。数据库经常是我们存储和訪问数据的经常使用介质。随着负载的增大,对数据库读写性能的要求往往成为非常大的挑战。在这种情况下我们能够考虑数据库相关的replication机制提高读写的性能。因为一般採用一写多读的replication机制(写master同步到多个slaves),导致这种机制往往会有缺陷。首先它依赖于读写的比例,假设写的操作过多,导致master往往成为性能的瓶颈所在,从而使得slaves的数据同步延迟也变大,进而大大消耗CPU的资源,而且导致数据的不一致从而影响到用户的体验。
这个时候我们就要考虑使用数据库的sharding(分片)机制,这里面我们所说sharding机制并非一个数据库软件的附属功能,而是一种相对简朴的软件理念。
一般我们把sharding机制分成水平扩展(横向扩展,或者向外扩展)和垂直扩展两种方式。
详细什么是数据库的水平扩展和垂直扩展呢?我们以以下的样例来说明。
比方我们如今有两个表:用户信息表 产品订单表
水平的拆分的方案,即不改动数据库表结构。通过对表中数据的拆分而达到分片的目的:
1)使用用户id做hash,分解数据库,在訪问数据库的使用用户id做路由。
2)将产品订单表依照已下单和未下单区分成两个表。
一般水平拆分在查询数据库的时候可能会用到union操作。
垂直拆分的方案:将表和表分离,或者改动表结构,依照訪问的差异将某些列拆分出去。
1)将用户信息表放到一个数据库server,将产品订单表放到一个数据库server。
2)将用户信息表中主码(通常是user id)和一些经常使用的信息放到一个表,将主码和不经常使用的信息放到另外的表。这导致一般查询数据的时候可能会用到join操作。
在数据库的设计中,我们更关注数据库的水平扩展的能力。
转载于:https://www.cnblogs.com/blfshiye/p/5059748.html
数据库的水平扩展与垂直扩展相关推荐
- 【转】数据库水平扩展与垂直扩展
数据库水平扩展与垂直扩展 MySQL数据库水平扩容方案 转载于:https://www.cnblogs.com/apeway/p/10870810.html
- 数据库水平扩展和垂直扩展
原地址:https://www.cnblogs.com/blfshiye/p/5059748.html https://www.2cto.com/database/201607/524821.html ...
- 扩展你的Kubernetes集群:理解水平扩展与垂直扩展
这扩展你的Kubernetes集群:理解水平扩展与垂直扩展 一.前言 1.1 什么是 Kubernetes 1.2 扩展集群规模的必要性 二.集群规模扩展概述 2.1 水平扩展 vs 垂直扩展 2.2 ...
- 【架构实践】微服务架构全解析:Scale Cube 横向扩展,垂直扩展,纵向扩展
目录 微服务架构全解析:Scale Cube 横向扩展,垂直扩展,纵向扩展 前言
- 导致集群重启_干货丨如何水平扩展和垂直扩展DolphinDB集群?
随着业务的扩展,数据量不断积累,数据库系统的数据容量和计算能力会逐渐不堪重负,因此优秀的数据库系统必须具备良好的扩展性.DolphinDB集群中的数据节点是集计算和存储于一体的,所以要提高计算能力和数 ...
- 高并发(水平扩展,垂直扩展)
转自:https://www.jianshu.com/p/be66a52d2b9b 一.什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是 ...
- 理解水平扩展和垂直扩展
垂直扩展 提高现有系统部件的能力. 水平扩展 增加更多的系统成员. 转自: http://yunjiechao-163-com.iteye.com/blog/2126981 转载于:https://w ...
- mysql数据库垂直切分_mysql数据库的水平拆分与垂直拆分
近端时间在面试,发现很多面试官或者面试都把数据的水平拆分合垂直拆分给搞混了,今天特意写了一篇博客来说说水平拆分和垂直拆分希望对程序猿们有所帮助. 数据库水平与垂直拆分: 垂直(纵向)拆分:是指按功能模 ...
- mysql数据库水平分割_数据库的水平分割和垂直分割
在数据库操作中,我们常常会听说这两个词语:水平分割和垂直分割.那么到底什么是数据库的水平分割,什么是数据库的垂直分割呢?本文我们就来介绍一下这部分内容. 1.水平分割: 按记录进分分割,不同的记录可以 ...
- 关于数据库的水平切分和垂直切分的一些概念(转)
垂直拆分 垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的.当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起, ...
最新文章
- getrealdays oracle_oracle 日期函数介绍
- Weblogic EJB 学习笔记(3)精
- mysql配置-django
- 【渝粤题库】陕西师范大学200401 初等代数研究 作业(专升本)
- 类文件Spring中空值的写法-java教程
- P1807 最长路 (SPFA写法)
- pytorch错误解决 | 错误‘Widget Javascript not detected. It may not be installed or enabled properly.‘
- LeetCode--64. 最小路径和(动态规划)
- 如何在虚拟linux环境运行python_Python 虚拟环境 | Mac/Linux下如何避坑安装配置Virtualenv...
- C#程序读取MAC地址的方法
- 同问 集成网卡和独立网卡哪个好?
- 什么是CPS模式盈利?
- 怎么把Epub转换成PDF格式?分享两种简单好用的转换方法
- php strpos ctf,CTF php代码审计 strpos()函数漏洞 XXE漏洞xinclude()
- 计算机课有实验课吗,高校计算机实验课的改革探索
- iOS 审核总被拒?如何提升 iOS 审核通过率!
- Odoo中使用的数据关系
- 你真的适合做前端开发吗?
- Coding测试模块配置过程和理解
- 27. Python 列表的索引取值
热门文章
- lisp 设计盘形齿轮铣刀_钨钢铣刀制造厂
- oracle添加字段sql_如何用SQL语句添加和修改字段?
- PAT (Basic Level) Practice1005 继续(3n+1)猜想
- 使用pip安装tensorflow很慢的问题
- Spring.NET依赖注入 - 制作可替换的算法
- 自定义Json解析工具
- k8s与caas--容器云caas平台的落地实践
- [4/10]指定结进程名称的命令taskkill.exe
- 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御
- MyISAM如何查看哪个session持有表锁