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

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

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

扫码了解 Chat 专题

作者沈剑

“架构师之路”公众号作者,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。

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

  1. 1对多业务,数据库水平切分架构一次搞定 | 架构师之路

    1对多业务,数据库水平切分架构一次搞定 | 架构师之路 原创 2017-07-10 58沈剑 架构师之路 架构师之路 架构师之路 微信号 road5858 功能介绍 架构师之路,坚持撰写接地气的架构文 ...

  2. 神策数据成林松:数据智能在业务场景下的应用(附 PPT 下载)

     在神策 2020 数据驱动用户大会「上海站」现场,神策数据业务咨询师成林松分享了<数据智能在业务场景下的应用>的演讲.(文末附 PPT 下载地址) 本文根据其演讲内容整理,数据均为虚拟. ...

  3. 单KEY业务,数据库水平切分架构实践

    本文将以"用户中心"为例,介绍"单KEY"类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践: 如何来实施水平切分 水平切分后常见的 ...

  4. 多对多业务,数据库水平切分架构一次搞定(58沈剑)

    本文将以"好友中心"为例,介绍"多对多"类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践. 一.什么是多对多关系 所谓的" ...

  5. 1688 复杂业务场景下的 Serverless 提效实践

    前言 首先为大家简单介绍一下我们的业务场景,1688 隶属于阿里集团的国内贸易事业部(CBU),是阿里最早起家的业务,已有十几年的历史.我们主要负责 PC 端 1688.com 以及手机端阿里巴巴 A ...

  6. 报名 | 美团技术沙龙第64期:美团不同业务场景下的系统架构实践

    [美团技术沙龙]由美团技术团队和美团科协主办,每期沙龙邀请美团及其他互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域.从2015年7月举办第一期美团技术沙龙至今,已经吸引了三万多名工程师 ...

  7. 数据分析:复杂业务场景下,量化评估流程

    本文源码:GitHub·点这里 || GitEE·点这里 一.量化思维 在编程体系中有很多复杂的业务是很难理解的,但是又需要做一个量化分析,给业务人员或者运营,或者用户一个参考标准,例如常见指数,芝麻 ...

  8. 【实践】美团到店综合业务场景下的知识图谱构建与应用实践.pdf(附下载链接)...

    猜你喜欢 0.[免费下载]2021年12月热门报告盘点1.如何搭建一套个性化推荐系统?2.快手推荐系统精排模型实践.pdf3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进 ...

  9. 【云原生|实践指北】5:真实业务场景下云原生项目落地实践学习

    真实业务场景下云原生项目落地实践学习 写在前面的话 1.容器化的落地实践 搜题APP的云上之旅 2.Serverless的落地实践 某电商APP的Serverless改造之旅 3.云原生TKE的落地实 ...

最新文章

  1. Machine Learning Techniques -6-Support Vector Regression
  2. iOS 9音频应用播放音频之音量设置与声道设置
  3. mysql读写分离_Mysql数据库09MySQL读写分离
  4. odoo10学习笔记十四:mixin其他功能模块
  5. RTSP摄像机为什么还保留MJPEG编码格式
  6. Nginx学习之十一-Nginx启动框架处理流程
  7. MyBatis集成SpringMVC
  8. Flutter动画系列之SizeTransition
  9. 安装Reporting Service即时报表模型
  10. Ubuntu 14.04 系统安装后无法上网的问题(eth0识别不出)
  11. 超级计算机比赛规则,介绍围棋的规则与玩法
  12. 【Spring】概述及IOC理论推导
  13. qpython3手机版怎么运行不了_QPython3手机版
  14. 利用N2N内网穿透,并实现直连
  15. PHP网页输出xml数据
  16. 使用python开发一个剪切视频、音频的小工具(完整案例)
  17. client-go实战之四:dynamicClient
  18. console 篇 - console 中的 '$'
  19. matlab数据统计和分析
  20. Android系统替换默认输入法

热门文章

  1. iStream DDS
  2. 用深度GHOST XP SP3在虚拟机下的安装发表于 : 2009-06-21 17:02
  3. Hive数据导出的三种方式
  4. 《Linux编程》课堂测验 ·002【Shell编程】
  5. mysql root_mysql root 没有任何权限
  6. open3d连续读取pcd文件及实现点云视角转换
  7. 解决pytorch安装过程中下载总是出错的问题
  8. 高位在前低位在后是啥意思_两年前满仓买的一支股,买时28,现在8块多点,股民怎么处理好?...
  9. SNIFE 和 std::enable_if
  10. 剑指Offer之数组中只出现一次的数字