数据切分——原理

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 声明:本系列教程参考资料《Mysql性能调优与架构设计》         Why Mysql?         大家可能怀疑,数据库有好多种,为什么选择Mysql作为数据切分的案例,为什么不选择Oracle、MS SqlServer或者DB2等等。

声明:本系列教程参考资料《Mysql性能调优与架构设计》


        Why Mysql?


        大家可能怀疑,数据库有好多种,为什么选择Mysql作为数据切分的案例,为什么不选择Oracle、MS SqlServer或者DB2等等。原因是大家都知道,淘宝网最开始选择LAMP的架构设计,即Linux+Apache+Mysql+PHP,最开始系统遇到的瓶颈是当时PHP不支持数据库连接池,国外当时有一个支持连接池的PHP技术,但是价格非常昂贵,后来不得不将核心业务用Java改写,经过一段时间的发展,淘宝的架构变成

Java+ibatis+Oracle,但是Oracle需要跑到IBM的微型机上,成本相当高,这时淘宝又选择了Mysql,因为Mysql是第一个在Linux下运行的数据库,集群性能和稳定性特别好,对服务器的性能要求也不高,所以淘宝最新的系统更多的是用Mysql来承担的。


       抛开淘宝,京东、新浪等等都是选择Mysql,他们在大数据的处理上面都选择Mysql,证明应用Mysql数据库是一个不错的选择。


       什么是数据切分?


        数据切分(Sharding)是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。数据的切分同时还可以提高系统的总体可用性,因为单台设备Crash之后,只有总体数据的某部分不可用,而不是所有的数据。


        数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。


        垂直切分还是水平切分?


       垂直切分的最大特点就是规则简单,实施也更为方便,尤其适合各业务之间的耦合度非常低,相互影响很小,业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业务模块所使用的表分拆到不同的数据库中。根据不同的表来进行拆分,对应用程序的影响也更小,拆分规则也会比较简单清晰。


       水平切分于垂直切分相比,相对来说稍微复杂一些。因为要将同一个表中的不同数据拆分到不同的数据库中,对于应用程序来说,拆分规则本身就较根据表名来拆分更为复杂,后期的数据维护也会更为复杂一些。

        

       在我们的系统中,如果用垂直切分足够解决问题,那么我们首选垂直切分,垂直切分带来的好处是不言而喻的,假如垂直切分仍然不能满足要求的时候,那么我们就不得不垂直切分和水平切分联合使用了,但是进行水平切分的时候一定要仔细斟酌切分规则,不同的切分规则会带来截然不同的维护成本,尽量做到符合业务需求。


         Why Sharding?


       理由通常是这样的,要么数据量很大,要么并发很大,总之,因为数据库不能很好的为他的客户端服务了。


       大家有没有想过,腾讯的QQ号是放在一个数据库了吗?新浪的微博信息是存放在一张表里了吗?还有微信的聊天记录是放在一个数据库的一张表了吗?答案当然是否定的。几个亿的QQ号、海量的微博信息和聊天记录放在一个数据库的一张表里无疑是一场灾难,如此大的数据量就要用到数据的切分技术。


       数据的切分不光是解决大数据的问题,同时也会给高并发提供了一定的帮助。对于聊天记录,我们可以利用数据的垂直切分,将聊天记录业务与其他业务分离开来,这样客户端访问数据库的时候可以有更理想的性能,同时,我们可以利用水平切分,每个人一张表,这样可以保证每个人读取自己的聊天记录的时候也会有更理想的效果,当然,即使你这样做了,数据量还是很大,你也可以根据业务进行更大力度的切分,一般垂直切分和水平切分联合使用可以解决大部分问题。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
存储 缓存 NoSQL
软件体系结构 - 数据分片(1)哈希分片
【4月更文挑战第20天】软件体系结构 - 数据分片(1)哈希分片
24 8
|
4月前
|
存储 消息中间件 对象存储
RocketMQ 中冷热分离的随机索引模块详解
本文主要介绍了RocketMQ 中冷热分离的随机索引特点、具体内容、与其他系统对比等内容。
102622 1
|
6月前
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
c++ 如何做出实现一组数据的实际索引
|
10月前
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
C++是一种计算机高级程序设计语言, 由​​C语言​​​扩展升级而产生 , 最早于1979年由​​本贾尼·斯特劳斯特卢普​​在AT&T贝尔工
|
11月前
|
分布式计算 算法 大数据
白话Elasticsearch45-深入聚合数据分析之易并行聚合算法,三角选择原则,近似聚合算法
白话Elasticsearch45-深入聚合数据分析之易并行聚合算法,三角选择原则,近似聚合算法
68 0
|
存储 负载均衡 并行计算
图数据库中的“分布式”和“数据切分”(切图)
什么是分布式系统?为什么需要分布式系统呢?在本文,我们简单讲解下分布式内容,再快速切入的图数据库,了解图数据库的独有数据切分方式,以及各大图数据库产品是如何处理切图的/
262 0
|
数据采集 消息中间件 监控
数据预处理-数据拆分代码及效果|学习笔记
快速学习数据预处理-数据拆分代码及效果
182 0
数据预处理-数据拆分代码及效果|学习笔记
|
存储 关系型数据库 MySQL
索引结构与检索原理|学习笔记
快速学习索引结构与检索原理
78 0
索引结构与检索原理|学习笔记
|
SQL 存储 缓存
索引不是越多越好,理解索引结构原理,才有助于我们建立合适的索引!
MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引。
589 0
|
数据库
【总结】数据库优化的若干方法
如果您觉得文章对您有帮助,可以【打赏】博主或点击文章右下角【推荐】一下。您的鼓励是博主坚持原创和持续写作的最大动力!
834 0