海量数据存储策略

海量数据存储策略

1.分区

​表分区是一种数据存储方案, 可解决单表数据过多的问题.
MySQL5.1开始支持分区, 分区是数据库底层逻辑的改变. 当一张表数据过多, 数据库的底层逻辑就会将数据分成几张表, 一张表对应一个文件存储在磁盘当中.
​分区物理上是分成了几张表, 但逻辑上还是一张表. 增删改查的方式不会发生改变, 只是底层处理的时候会有部分变化.

1.1 分类:
  • Range分区:按照指定字段的取值范围分区
  • List分区:按照指定字段的枚举值分区,必须提前指定好所有的分区值,如果数据找不到分区会报错
  • Hash分区:基于字段做hash运算后分区,一般做hash运算的字段都是数值类型
  • Key分区:根据指定字段的值做运算的结果分区,与hash分区类似,但不限定字段类型
1.2 好处:
  • 可以存储更多的数据, 突破单表上限. 甚至可以存储到不同的磁盘, 突破磁盘的上限.
  • 查询时可以根据规则只检索一个文件,而不需要将所有文件检索, 提高了查询效率.
  • 数据统计时, 可以使用多文件并行处理,最后汇总结果,提高统计效率.
  • 对于一些历史数据, 如果不需要可以直接删除对应的分区文件, 而不需要使用语句去检索删除, 提高删除效率.

2.分表

​分表就是一种表设计的方案. 在构建数据库时考虑好根据什么分表, 表中存储哪部分数据, 将一张表的数据分为多张表来存储, 分表与分区物理上都是分为了多张表, 差别在于逻辑上, 分表也是多张表, 需要考虑之后增删改查所需访问的是哪张表.

分表又分为水平分表垂直分表

2.1 水平分表

我们将数据水平,表结构不变,只是每张表数据不同,这就是水平分表。由于分表是开发者的行为,因此拆分方式更加灵活。

2.1.1 好处:
  • 比分区方式更为灵活的解决了单表数据过多问题.

但是 在数据操作的时候需要自己判断访问哪一张表, 而且需要处理聚合操作的数据合并问题

2.2 垂直分表

当一张表的列非常多,比如达到30个以上,这样的表我们称为宽表。宽表由于字段太多,单行数据体积就会非常大,虽然数据不多,但可能表体积也会非常大!从而影响查询效率, 此时我们对其进行垂直拆分, 将不同的字段通过相同的主键, 存储在不同的表中,这些表中的结构不同,数据也就不同, 这就是垂直分表.

2.2.1 好处:
  • 解决了单表字段过多引起的问题.

但是 需要使用事务处理,来解决数据关联的问题.

3.分库

当数据库的访问量达到一定程度后, 数据库就会产生性能瓶颈,又或者是出现磁盘瓶颈时,可以使用分库的方式解决. 将数据存储在多个数据库中, 减轻单个数据库的压力. 将数据库分布在不同磁盘中,缓解磁盘压力,讲题磁盘使用频率.

分库又分为垂直分库水平分库.

3.1 垂直分库

当数据库中数据量猛增导致数据库压力过大时, 我们可以将其根据业务划分, 将不同的业务表分成一个个数据库,每个数据库中的表仅仅只涉及某一部分业务, 这些数据库可以部署在不同的服务器来减轻数据库的压力.

3.1.1 好处
  • 专库专用, 在业务层面解耦.
  • 在一定程度上提升了IO、数据库连接数、降低单机硬件资源的瓶颈, 提高了项目整体并发能力
  • 对不同业务的数据进行分级管理、维护、监控、扩展

但是,有可能出现分布式事务问题(数据一致性)
热点服务容易出现单点故障的问题仍未解决(可使用水平分库或集群的方式解决)

3.2 水平分库

对于访问频繁的热点服务, 我们可以将单张表的数据切分到多个服务器上去,每个服务器具有相应的库与表,只是表中数据集合不同, 水平分库的本质其实也就是分表。

3.2.1 好处
  • 可以解决数据量过大的问题
  • ​能够有效的缓解单机和单库的性能瓶颈和压力,突破IO、连接数、硬件资源等的瓶颈 。

但是,​ 这种方式维护的成本较高并且访问数据库(做增删改查)时需要我们自行判断是哪一个数据库中的哪一张表(操作复杂)

4.集群

事实上水平分库就属于集群. 除了水平分库的集群外, 还有一种读写分离的集群可以解决热点业务高并发的问题.

读写分离的集群也叫主从集群. 可以是一主一从,也可以是一主多从. 数据库主服务器负责读写操作, 从服务器只负责读的操作, 主服务器通过复制将数据同步给从服务器, 因此每台服务器都会存储业务数据.

4.1 好处

提高了读写数据的并发能力, 减缓了单点故障的问题.

但是, 可能会出现组主从数据同步问题.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值