ShardingSphere-分库分表介绍 | 学习笔记

简介: 快速学习ShardingSphere-分库分表介绍。

开发者学堂课程【数据库中间件ShardingSphere详解ShardingSphere-分库分表介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/666/detail/11240


ShardingSphere-分库分表介绍

 

什么是分库分表,怎样用 ShardingSphere 对关系型数据库进行分库分表操作。

举个例子说明为什么要分库分表包括分库分表用在什么场景下。

打开网站 www.jd.com 京东网是一个电商平台,在里面能买很多产品,比如随便点一个手机,点全部手机,在界面中列入了很多手机,手机属于某一个店铺。比如是京东自营的,或者是属于某一个店铺。在这个过程中,在关系型数据库中分很多数据,比如里面有一个商品表,有一个店铺表。各位注意,随着数据库里面的数据量是不一定的,或者说是不可控的。比如电商平台的数据量会不断地增加。而数据库中的数据量也会不断增多。数据库中的数量增多的话,表数据量也会不断增大。相应的数据库在做增删改操作时它的性能会产生很大的问题。这个时候需要根据问题做一个相应的处理。

比如现在有一个电商平台。假如说就是京东。而电商平台随着时间和业务的发展,向表里面存的数据会越来越多。假如现在有最基本的商品,现在画一个表,表里面就是基本的商品。下面还有一个表,是店铺表。商品要属于某一个店铺。比如是京东自营的,或者是某一个商家的。里面还有可能会有其他的表,会涉及很多表。现在业务量增加,平台中会有很多商家入驻。每个商家都要在里面卖商品,商品表里会加入大量的商品数据。随着数量的增加,这个表中的数据会越来越多。随着数据增加,就算在里面加入了从表的处理,或者索引的处理。他并不能从根本上解决这种性能的降低。数量一多平台做这种增删改的操作他的消耗会对他的性能产生很大的影响。现在就要对他这些相应的问题来进行处理。要不然会对平台造成很大的性能的瓶颈。这是一个背景。问题到底要怎么解决,虽然问题有很多的解决方案。比如现在业务量增加,表中的数据也在不断增加。现在商品表的数据达到了千万,甚至超过了千万的量级。肯定会产生很多的性能瓶颈。

7.1.png

当遇到性能瓶颈这些问题要怎么解决,

方案一,从硬件上

这个方案肯定不是最优的方案,但是也是一个解决的方式。第一种方案很简单,从硬件上来解决,比如此刻这个数据库服务器性能的提高,加内存,加存储量。加硬盘让他的性能能有很大的提高。注意这样操作的话,从表面上解决了。比如加了服务器,加了 CPU,加了硬盘,加了内存,第一个成本很高,第二,并没有从根本上解决。数据量在不断增加,不可能每天都加服务,加内存,所以这只是一种治标不治本的方案,但是他也算是一种方案,但是他只从表面上来解决,这种方案并不能从根本上解决。

第二种方案,可以对数据库作为一个分库分表的处理。

分库分表到底怎么做如下:现在有一个数据库,商平台这个 db 数据库,在数据库中有商品表,有商家表。现在有一个电商平台的db数据库,第一步可以将数据库进行拆分。即为商品表建一个数据库,为商家表建一个数据库。不要把所有数据都存到一张表中。数据库拆分完之后,把商品表进行拆分,分为商品表1和商品表2。比如每张表中只存1万个数据或10万个数据,要有数量的限制。同样把商家表再拆分,让数据存在不同表中,分为商家表1和商家表2,让每张表中有一个固定的数据量,有新的数据增加再加多张表,这是一种简单的分库分表处理。这样做会带来很多好处。如果现在使用原始方式一个库一个表中会有上千万甚至更多数据,用一张表查询数据。但是现在在无形中就把数据做了分担,让每张表数据急剧减少,让数据库做了拆分,每张数据库单独表示数据,这样做可以极大地提高性能。让多个数据库里面分担压力,让多张表分担一张大表中的数据。把一个数据库拆分成若干个数据库,把数据大表拆分成若干个小表共同组成一个数据 DB 表拆分成商品 DB 表和商家 DB 表,商品表拆分成商品表1和商品表2,商家表拆分成商家表1和商家表2,多个小表。让单一库和单一表中数据变小。这样能够极大地提高数据库的性能,这是关于分库分表的一个基本场景。7.2.png

什么是分库分表:

1、数据库数据量不可控,是会变化的,随着时间和业务发展,造成表里面数据越来越多,如果再去对数据库表 curd 操作是,造成性能问题

2、方案1:从硬件上

3、方案2:分库分表

*为了解决由于数据量过大而造成数据库性能降低问题。是将原有的数据库拆分成若干数据库组成,将大表拆分成若干小表组成,使单一数据库和单一表数据变小,从而提高数据库的性能。比如这张图,对应的数据库和对应的表做拆分,让单一库单一表中的数据量减少,从而提高数据库的性能。

相关文章
|
Java 关系型数据库 中间件
分库分表(3)——ShardingJDBC实践
分库分表(3)——ShardingJDBC实践
366 0
分库分表(3)——ShardingJDBC实践
|
5月前
|
Java Apache Maven
Apache ShardingSphere 实现分库分表及读写分离
Apache ShardingSphere 实现分库分表及读写分离
101 0
|
7月前
|
SQL 负载均衡 算法
使用ShardingJDBC实现分库分表
使用ShardingJDBC实现分库分表
|
6月前
|
算法 Java 数据库连接
【分库分表】基于mysql+shardingSphere的分库分表技术
【分库分表】基于mysql+shardingSphere的分库分表技术
263 0
|
关系型数据库 MySQL Java
ShardingSphere 实战之读写分离
采用 ShardingShpere 的 Sharding-Porxy(透明化的数据库代理端) 模式在本地实现 mysql 数据库读写分离,并通过 java 应用程序连接.
ShardingSphere 实战之读写分离
|
存储 算法 Java
从零玩转ShardingSphere分库分表 (概括)
从零玩转ShardingSphere分库分表 (概括)
105 0
|
SQL 存储 算法
聊聊 Sharding-JDBC 分库分表
聊聊 Sharding-JDBC 分库分表
|
存储 SQL 缓存
分库分表之ShardingSphere(一)
分库分表之ShardingSphere
|
SQL cobar 算法
分库分表之ShardingSphere(二)
分库分表之ShardingSphere
|
存储 缓存 中间件
ShardingSphere-分库分表小结和问题 | 学习笔记
快速学习ShardingSphere-分库分表小结和问题。
ShardingSphere-分库分表小结和问题 | 学习笔记
下一篇
DataWorks