不同业务场景下如何进行数据库水平切分?

640?wx_fmt=gif

很多互联网业务,有着数据量大的特点,随着数据量的逐步增加,数据库逐渐成为系统的瓶颈。

主从同步读写分离的架构方案只能提升数据库的读性能,对单库数据量的膨胀,以及写性能的瓶颈并不能够很好解决。此时数据库水平切分技术孕育而生,不同的业务场景下该如何进行水平切分,切分过程中需要注意的技术点,切分后遇到新的问题及解决方案,是本专题将要讨论的问题。

本专题期望达到的效果:从今之后,不管什么业务场景,数据量大水平切分的技术问题从此就不用再担心了

扫码了解 Chat 专题

640?wx_fmt=png

作者沈剑

“架构师之路”公众号作者,58到家高级总监,技术委员会主席。前百度高工,58同城高架,技委主席。


章节介绍

第一节:数据库典型架构实践

这是一个引子,在互联网数据库架构设计中,水平切分技术相关的概念与释疑:什么是水平切分,垂直切分,什么是分组,什么是分片,什么是路由规则,有哪些常见的路由规则,各自的优缺点是什么,水平切分的方法论,经常遇到的困难是什么,为后续的四场做一个铺垫。

覆盖90%互联网业务特性的四类业务,用户中心(“单KEY”类业务),帖子中心(“1对多”类业务),好友关系(“多对多”类业务),订单中心(“多KEY”类业务)分别如何实施水平切分。

第二节:从用户中心开始,聊“单KEY”类业务数据库水平切分架构实践

有一类“单KEY”特征的业务,典型代表是“用户中心”这个业务场景,随着用户数据量越来越大,数据库性能显著降低,如何来对用户中心业务进行水平切分是场Chat的重点:

  1. “单KEY”类业务的特点与场景。

  2. “单KEY”类业务如何进行水平切分核心指导思想。

  3. “单KEY”类业务水平切分后遇到的潜在问题(最典型的问题->通过userid来切分,username上的查询怎么办?)。

  4. “单KEY”类业务水平切分最佳实践。

第三节:从帖子中心开始,聊“1对多”类业务数据库水平切分架构实践

有一类“1对多”特征的业务,典型代表是“帖子中心”,1个帖子对应1个发布用户,1个发布用户能够发布多个帖子,这个业务场景,随着用户数据量越来越大,数据库性能显著降低,如何来对帖子中心业务进行水平切分是本章的重点:

  1. “1对多”类业务的特点与场景。

  2. “1对多”类业务如何进行水平切分核心指导思想。

  3. “1对多”类业务水平切分后遇到的潜在问题(最典型的问题->通过tieziid来切分,userid上的查询怎么办?)。

  4. “1对多”类业务水平切分最佳实践。

第四节:从好友关系开始,聊“多对多”类业务数据库水平切分架构实践

有一类“多对多”特征的业务,典型代表是“好友关系”,1个用户能加多个好友,1个用户又能被多个人反加好友,这个业务场景,随着用户数据量越来越大,数据库性能显著降低,如何来对好友关系业务进行水平切分是本章的重点:

  1. “多对多”类业务的特点与场景。

  2. “多对多”类业务如何进行水平切分核心指导思想。

  3. “多对多”类业务水平切分后遇到的潜在问题(最典型的问题->通过userid来切分,friendid上的查询怎么办?)。

  4. “多对多”类业务水平切分最佳实践。

第五节:从订单中心开始,聊“多KEY”类业务数据库水平切分架构实践

有一类“多KEY”特征的业务,典型代表是“订单中心”,业务查询维度会覆盖order_id/buyer_id/seller_id,这个业务场景,随着用户数据量越来越大,数据库性能显著降低,如何来对订单中心业务进行水平切分是本章的重点:

  1. “多KEY”类业务的特点与场景。

  2. “多KEY”类业务如何进行水平切分核心指导思想。

  3. “多KEY”类业务水平切分后遇到的潜在问题(最典型的问题->通过order_id来切分,buyer_id/seller_id上的查询怎么办?)。

  4. “多KEY”类业务水平切分最佳实践。

第六节:后语:除了水平切分,数据库架构设计还经常遇到哪些问题

这是一个总结,在互联网数据库架构设计中,除了遇到水平切分类问题,还会遇到可用性、读性能、一致性、SQL等众多问题,这些问题的解决思路是什么,且听后文分解。

你能获得什么?

合集实录中以下问题沈剑都做了解答

  • 有一类典型操作是列表页操作,这个过程是怎样的?对分库分表策略有什么影响?

  • 元数据是什么意思,是数据库的基础数据?还是指的是注解编程模式?

  • 数据库要分片前期的准备工作是什么,怎么区分这表要分片?

  • 文章中的库对于不同的数据库软件分别是指什么?

  • 分布式事务如何处理?

  • 分库分表在微服务模式下怎么配合使用?

  • 类似用户表、权限表、部门表,做微服务需要做冗余吗?

  • 做冗余的目的是为了解决数据量大时候的查询性能?

  • 多对多关系除了冗余数据,还有其他处理办法吗?

  • 分布式开发,多对多数据,如何封装可用的 API?加密解密的安全性怎么办?

  • 现在 58 到家内部是用自己开发的 rpc,还是用springcloud+springboot?

  • 信息脱敏在 58 是如何设计的?

  • 两种方案的综合方案,能具体说下这个方案的具体玩法吗?

  • 单日 5000 万的 Log 可以设计在 MySQL 里吗?

  • 若是已在线使用的业务系统中的“多 key ”表应该如何着手进行拆分?

  • 多库的分页和数量 count 统计,如何做是每个库进行统计和查询?

  • 用客户端分库分表与服务器端分库分表各有什么好处,怎么选型?

  • 最终一致性有什么好的中间件软件吗?算法自己实现起来要花很多时间吗?

上面这些问题,都不是简单三言两语能够说清楚的,大家对哪个话题感兴趣,欢迎订阅这个 Chat 专题。

点击阅读原文,订阅沈剑大佬的 Chat。

Sharding-JDBC分库分表从入门到精通

09-26
课程简介 随着互联网的发展,软件的规模在逐渐变大,用关系型数据库如何存储和处理大规模的业务数据成为企业面临的挑战, 关系型数据库作为OLTP(联机事务处理过程)系统的首选毋庸置疑,但是关系型数据面对大规模数据的处理有其先天的不足,比如单表存储上千万数据时便会出现不同程度的处理速度缓慢问题,如何解决?分库分表技术就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。本课程将系统的讲解分库分表技术。 课程价值 分库分表技术是为解决关系型数据库存储和处理大规模数据的问题,主要应用于OLTP系统,它与应用于OLAP(联机分析处理)的大数据技术有不同的应用场景,本课程本着从解决生产实际问题出发,讲授分库分表技术的解决方案,包括:垂直分库、垂直分表、水平分库、水平分表、读写分离,涵盖了分库分表的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法,通过学习本课程可以快速应用到生产实践中。 课程优势 本课程不仅讲解多种有效的分库分表的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将分库分表技术应用到生产实践中,解决大数据存储与处理的问题。
©️2020 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值