hjr-大数据 关于分库分表

分类

一般对于大数据有两种优化方式

第一 使用大数据数据库
第二 非大数据数据库的分库分表,单表数据限制1kw以内

分库分表

本节先介绍一下分库分表的思路
对于toB系统来说,
首先根据数据类型分,一般我们分为操作人员手动操作的业务数据,自动上报的事件数据
对与toC系统来说,可以把大量用户的操作或者各处埋点采集的数据类比为toB系统的终端上报数据

所以无论是toB系统还是toC系统,一般我们可以把数据分为,少量的手动操作的业务数据,和大量的终端上报或用户操作的日志数据

由于本人做的多数是toB的项目,大数据主要来源于终端采集,因此下面主要以此举例

举例

分库

水平拆分

同一个表的数据根据id放到字段相同的其他库里的表,缺点是分页查询不方便

可以根据id均匀分布拆分(均匀降低压力),也可以根据前多少条数据放到a库,多少条后放到b库拆分(热点数据分离)

垂直拆分(优先)

不同表放不同数据库,缺点是多表聚合查询不方便

一般终端上报的日志数据是要先进入数据湖的,ETL清洗后一些事件数据会在业务系统中查询,这种数据一般都需要各种聚合和统计。

此处我们可以把事件数据单独存储到一个Mysql数据库,系统的如用户、菜单、角色等业务数据单独放一个数据库,两种类型的数据做分库,降低事件数据占满线程池,占满磁盘导致对业务数据的影响

读写分离

虽然我们的事件数据已经单独存储到了一个数据库,不会对业务数据造成影响,但是当数据量大了之后,我们要对查询速度进行优化,因为连接池是很珍稀的资源,每个查和写都会占用一个连接数,
因此可以把事件数据库加一个从库,主库负责写入,从库负责读取,主从库之间通过binlog同步数据

分表

水平拆分

同一个表的数据根据id放到字段相同的其他表,缺点是分页查询不方便

拆分的目的是为了保障单表数据量低于1kw。

垂直拆分(优先)

同一个表,某些字段单独建一张表,和主表一对一

比如事件数据和事件详情数据,没必要把详情数据都放到事件表,因为一般用户操作是先点击查看事件列表,然后再点击查看事件详情。

问题

水平拆分的分库和分表的区别?
分库是为了降低数据库的单点压力,降低数据库连接池压力
分表是为了降低单表数据量检索的压力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师小侯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值