读写分离-分库分表2

举报
object 发表于 2024/03/21 14:45:56 2024/03/21
【摘要】 上述已经讲了一些分库分表的基础概念和一些特点。下面主要讲一下分库分表的一些推荐方案分库分表以后可能产生的问题开篇讲过,不建议分库分表,但是数据量达到一定量时,为了依旧能有较好的性能体验,分库分表是个不错的选择,但是分库分表以后可能会产生什问题呢,这个是平时项目开发不得不面对的问题。join连接无法使用:对于分库的情况,join无法使用,之前在一个库,但是多个库就无法使用了。 就需要使用业务处...

上述已经讲了一些分库分表的基础概念和一些特点。下面主要讲一下分库分表的一些推荐方案

分库分表以后可能产生的问题

开篇讲过,不建议分库分表,但是数据量达到一定量时,为了依旧能有较好的性能体验,分库分表是个不错的选择,但是分库分表以后可能会产生什问题呢,这个是平时项目开发不得不面对的问题。

  • join连接无法使用:对于分库的情况,join无法使用,之前在一个库,但是多个库就无法使用了。 就需要使用业务处理代替sql的连接查询,需要考虑多次查询的事务性容忍度。
  • 事务问题:分库以后,spring的事务是基于单个数据库开发的,多个库就需要使用分布式事务进行处理。
    • // todo spring的事务实现原理
    • // todo 分布式事务
  • 分布式ID: 分库以后,数据遍布在不同的数据库,数据库的自增主键已经没办法满足生成的主键唯一,常规的UUID也会存在重复的问题,且效率没有有序主键好,所以就需要使用到分布式ID了,之前似乎写过一篇分布式ID的简单实现,可以参考。
  • 聚合查询:这个跟join差不多,就是在不同库,导致了无法使用聚合查询,需要使用代码程序代替,增加了代码的复杂性。
  • 需要维护新的数据库,新增了项目成本...等等

以上就是常见的一些问题,虽然上面只说了分库的缺点,但是实际业务场景一般分表分库是同时出现的,大多数单独的分表不能解决问题

分库分表推荐的方案

  • Apache ShardingSphere 分布式的数据库生态系统
    • 支持数据分片
    • 分布式事务
    • 读写分离
    • 数据迁移
    • 联邦查询
    • 数据加密
    • 影子库
  • TiDB分布式关系型数据库

// todo ShardingSphere的一些使用案例

// todo TiDB分布式关系型数据库使用案例

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。