分库分表,可能真的要退出历史舞台了!

本文涉及的产品
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 分库分表,可能真的要退出历史舞台了!


即使是不懂编程的玩家,在对比 NAS 的时候,也会两眼放光,考虑很多因素,比如 RAID 级别、速度、易用程度等。作为时时刻刻与代码打交道的我们,更需要关注数据的存取问题。

一开始,开箱即用的 MySQL,一定是企业的首选。不仅仅因为用的人多,更重要的是生态成熟。要工具有工具,要人有人。对于老板来说,员工看着不爽,可以随时辞退,是一个非常理想的状态。

但是,没有胸怀的老板,干的一定不会长久,因为如果商务会吹、老板会忽悠,业务会飞速发展(虽然现在这种机会比较少了)。对于 MySQL 来说,很快就会遇到问题。

这个时候,就需要一些比只会用 MySQL 级别高一些的人才,来配合老板圆梦。

是时候了,由单机 MySQL 向分布式发展了。

单机 MySQL 面临很多问题。

  1. 单表太大,比如超过 500w,查询就非常吃力
  2. 单库太大,各种资源告急
  3. 读请求太高,严重影响写请求

对此,一堆概念也是腾空而出,比如分库分表、读写分离等。

很长时间以来,国内互联网的做法普遍是采用加入一个中间件的方式来解决,但随着分布式数据库的技术越来越成熟,这些魔法逐渐下沉到它本应该解决的层面--数据库实现层。

留给分库分表技术的时间,已经不多了,它的存量市场越来越少了。分库分表技术,退出历史舞台,也是迟早的事情了。

解决上面三个单机 MySQL 问题,有很多种切入层面。比如,你简单的在 MyBatis 或者 JPA 之上使用 AOP 或者拦截器封装一层,也可以实现,这也是最傻的方式。

再进一步,就可以采用在 JDBC 之上的驱动层来实现,把分库分表的路由维护在内存里,通过重写的 DataSource、Connection、Statment、ResultSet等,对业务进行无侵入的改进。但可惜的是,我们还必须要维护与逻辑表相对应的物理表,而且功能也是阉割的,不确定性依然不小。更要命的是,JDBC 只支持 Java,对于某些公司来说,就非常的不适用。

再就是中间件的传统模式,Proxy。把自己伪装成一个MySQL Server,接受 Client 的请求。至于它后面怎么去操作真实的数据库,你都不需要知道。但 Proxy 本身也是一套服务,你有运维成本在里面,同时功能依然是阉割的。

框架层,驱动层,代理层,在过去很长一段时间里,有无数的互联网公司前赴后继的试水,从 TDDL、Cobar,到 MyCat、ShardingSphere,各种层面的中间件也是层出不穷。但最近几年,这种争相斗艳的场面逐渐不再,到最后剩下来的,也就ShardingSphere这一枝独秀了。

是问题不存在了么?不,正好相反,问题越来越严重。并不是问题消失了,而是它被转化成其他解决方式了。

抛开关系型数据库不说,很久之前,类似于 ElasticSearch、Cassandra这样的 NoSQL 存储,分片和副本的概念,就已经非常成熟了,而且它们是内置的,并不需要 DBA 去人工维护它们的物理位置。

对于关系型数据库来说,走向分布式也终将成为必然。随着 Raft 等协议应用越来越广泛,分布式数据库的可靠性也逐渐得到了保证。如果你以前因为事务问题而拒绝采用某些 NoSQL 产品,那么如今完全兼容 MySQL 的分布式数据库,你没有理由再说 No。

云厂商,直接提供了像Aurora、PolarDB之类的MySQL增强,更有类似 TiDB、OceanBase 这样纯粹的分布式数据库,越来越多的业务走向了这个终途。当你的团队加班加点验证着分库分表中间件的时候,却发现其实换个兼容的存储就能玩得转,你会怎么选,简直不用再多说。

当然,一旦你选用了分布式数据库,以前的 DBA 经验可能就不管用了,比如说索引及其二级索引。你的团队不得不学习新的知识,来应对分布式环境。

但这些都是阵痛,长远看来,分布式数据库是趋势,而分库分表中间件只能吃存量。

当你的业务有了常年累积的复杂数据,你可能会采用复杂的分库分表组件,但如果你的业务比较新,可预见的未来会有大量数据,那一个分布式数据库可能是最合适的。

分库分表中间件并不是消失了。它摇身一变,变成了分布式数据库的一部分。

你可能会听到很多切到分布式数据库,又从分布式数据库切回到 MySQL 的案例,这属于想吃螃蟹但并没有吃到。目前来看,分布式数据库越来越稳定,生态建设也越来越好。而分库分表,则属于存量业务,终将会退出历史的舞台。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
人工智能 Linux API
测试小白的第一课:从零安装OpenClaw,亲手跑通第一个AI智能体
本教程专为小白设计,手把手带你零基础安装并运行OpenClaw智能体。涵盖环境准备(Win/macOS/Linux、Python 3.9–3.11)、虚拟环境创建、OpenClaw安装、API密钥配置,以及首个天气查询智能体的完整实践,附常见问题排障指南。
|
2月前
|
人工智能 Linux API
告别AI“失忆”:OpenClaw(阿里云/Win11/Mac/Linux)超详细部署+百炼API配置+自我迭代技能+FAQ
“同一个错误犯三次”“纠正过的知识点转头就忘”“项目规范要反复强调”——这是很多OpenClaw(昵称“小龙虾”)用户的共同痛点。作为开源AI代理框架,OpenClaw虽能高效执行编码、自动化等任务,但原生缺乏长期记忆能力,导致相同问题反复出现,既浪费时间又影响体验。
1151 6
|
5月前
|
人工智能 Cloud Native 关系型数据库
云原生视角:AI数字人vs数字员工,玄晶引擎等工具的架构选型与落地实践
本文对比AI数字人与云原生AI数字员工的技术差异,揭示“交互组件”到“智能体”的进化路径。基于玄晶引擎与阿里云生态的实践案例,从功能闭环、架构设计、成本收益三维度解析,并提供开发者选型工具包,助力企业实现直播引流、智能下单、库存同步等全链路自动化,降低算力成本60%,提升业务转化率。
331 6
|
机器学习/深度学习 数据可视化 数据处理
构建可靠的时间序列预测模型:数据泄露检测、前瞻性偏差消除与因果关系验证
在时间序列分析中,数据泄露、前瞻性偏差和因果关系违反是三大常见且严重影响模型有效性的技术挑战。数据泄露指预测模型错误使用了未来信息,导致训练时表现优异但实际性能差;前瞻性偏差则是因获取未来数据而产生的系统性误差;因果关系违反则可能导致虚假相关性和误导性结论。通过严格的时序数据分割、特征工程规范化及因果分析方法(如格兰杰因果检验),可以有效防范这些问题,确保模型的可靠性和实用性。示例分析展示了日本天然气价格数据中的具体影响及防范措施。 [深入阅读](https://avoid.overfit.cn/post/122b36fdb8cb402f95cc5b6f2a22f105)
889 24
构建可靠的时间序列预测模型:数据泄露检测、前瞻性偏差消除与因果关系验证
|
Web App开发 移动开发 小程序
公众号小程序H5网页像素流送UE5模型的方法分享
本文探讨了如何通过像素流送技术在小程序、公众号等平台展示复杂的3D模型(如UE5引擎开发的楼盘模型、数字孪生展厅)。该技术将GPU和CPU算力需求转移到服务器端,使用户侧无需高性能硬件即可流畅体验。通过Webrtc实现实时云渲染,确保毫秒级响应,且兼容多种浏览器。使用点量云流等产品级软件,老项目只需重新打包为EXE格式,即可轻松嵌入H5网页、小程序或公众号中,支持Unity、WebGL等多种3D应用及传统CAD模型。
456 1
|
存储 前端开发 JavaScript
35.2K star!双链笔记+知识图谱+本地优先,这款开源知识管理神器绝了!
嗨,大家好,我是小华同学。Logseq是一款融合「双链笔记+知识图谱+本地优先」理念的开源知识管理工具,支持Markdown/Org-mode格式,助力打造你的第二大脑。它采用Clojure语言开发,注重隐私,数据完全存储在用户本地设备,提供双向链接、块级引用、PDF标注等功能,适用于程序员、学者和个人目标管理等多种场景
1634 1
|
C语言
C语言中的无参函数
C语言中的无参函数
1242 1
|
存储 消息中间件 Java
Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)
Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)
|
网络协议 Linux 开发工具
Centos7 /etc/sysconfig/network-scripts/ifcfg-<interface>网络配置
自动化网络配置:NetworkManager 可以自动检测网络连接,并根据网络环境自动配置网络。这使得用户可以无需手动配置即可连接到网络。 支持多种网络连接:NetworkManager 支持多种网络连接,包括有线、无线、VPN、Wi-Fi 热点等。这使得用户可以根据需要选择合适的网络连接。 提供图形化和命令行工具:NetworkManager 提供了图形化工具和命令行工具,用户可以根据自己的喜好选择使用。
2532 4
|
机器学习/深度学习 人工智能 算法
一、单层感知器(MCP人工神经元模型)
一、单层感知器(MCP人工神经元模型)