分库分表基本思路 引入中间表 主键生成

简介: 【7月更文挑战第20天】

基本思路

面试官都是直接问类似的问题,比如介绍了分库分表方案后,提到订单表是按照买家ID来进行分库分表的之后,会顺势问如果卖家要查询ID应该怎么办?
可以按照这个模板来介绍不同的方案

这一类没有按照分库分表键来筛选数据的查询,是需要一些额外的手段来支持的。目前来说,主流的方案是引入中间表、二次分库分表或是使用其他中间件。当然,广播作为一个兜底的解决方案,逼不得已的时候也可以使用。当然,如果自己的主键生成策略比较特殊的话,也能部分支持这一类查询。

接下来按照这些关键词一个一个地问

主键生成策略

有一种主键生成的策略是在主键里面带上分库分表的列,如果能够拿到主键,就应该知道去哪个数据库上的哪个数据表里查找。
比如:在订单ID里带上了买家ID,那么在根据订单ID来查询数据的时候,就可以通过订单ID来判断订单的数据在哪个库哪个表里。

这是一种很优雅的解决方案,既不需要任何第三方工具的帮助,也不需要额外存储数据。但是这个方案只能解决一部分问题,而且大多数时候主键都不是采用这种策略生成的,只能考虑其他方案了,比如引入中间表。

引入中间表

如果想支持按照卖家来搜索,可以引入一个中间表,记录了ID、卖家ID和买家ID三个数据。

当然也可以考虑把买家ID换成目标库和目标表,这样就省去了根据买家ID来定位目标库和目标表的步骤。
查询的基本步骤也很清晰:

  1. 先在中间表里根据卖家ID找到想要的订单ID和买家ID
  2. 再根据买家ID和订单号找到具体的订单数据

关键词就是中间表:

我们用了一个比较简单的方案,引入中间表来解决卖家查询的问题。中间表主要是根据卖家找到对应的订单,并且根据订单表中的买家ID来确定目标库、目标表,再去对应的数据表里把所有的数据都查询出来。

目录
相关文章
|
Ubuntu 网络协议 Linux
嵌入式Linux系列第8篇:操作网口
嵌入式Linux系列第8篇:操作网口
|
Linux
百度搜索:蓝易云【Linux中如何对文件进行压缩和解压缩?】
这些是在Linux中进行文件压缩和解压缩的常见方法。根据您的需求和具体情况,可能会使用其他压缩工具和选项。您可以通过查阅相应命令的帮助文档来获取更多详细信息。
299 1
|
Kubernetes Java Docker
利用(K8S)配合Docker部署jar包
通过Docker打包并部署到Kubernetes(K8S)集群的过程。首先,通过SpringBoot生成jar包,接着在K8S环境中创建并编辑Dockerfile文件。随后构建Docker镜像,并将其推送到镜像仓库。最后,通过一系列kubectl命令(如get pods、get svc、logs等),展示了如何在K8S中管理应用,包括查看Pod状态、服务信息、Pod日志以及重启Pod等操作。
996 3
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
JSON SpringCloudAlibaba Java
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
1504 1
Springcloud Alibaba + jdk17+nacos 项目实践
|
负载均衡 算法 应用服务中间件
Nginx的负载均衡
Nginx 是一款高性能的Web服务器与反向代理服务器,支持负载均衡功能,能有效提升系统性能与可靠性。其负载均衡策略包括基于轮询和权重的分配方法,以及IP哈希、最小连接数等算法,可根据实际需求灵活选择。
419 5
|
存储 安全 IDE
电脑开机时报错No Bootable Device找不到索引的解决方法
【9月更文挑战第1天】当电脑开机时报错 “no bootable device”(找不到可引导设备),可能原因包括硬件连接问题、引导顺序设置错误、系统引导文件损坏及 BIOS 设置问题。解决方法有检查硬盘连接与状态、调整 BIOS 引导顺序、使用安装盘修复引导文件、检查硬盘模式设置及恢复 BIOS 默认设置等。若问题依旧,建议寻求专业维修帮助,并备份重要数据。
8541 9
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow 1.x 深度学习秘籍:1~5(1)
TensorFlow 1.x 深度学习秘籍:1~5
408 0
|
XML Java 调度
Spring task:annotation-driven配置之 @Scheduled定时任务的fixedRate,fixedDelay,cron执行差异
Spring task:annotation-driven配置之 @Scheduled定时任务的fixedRate,fixedDelay,cron执行差异
557 0
|
机器学习/深度学习 编解码 自然语言处理
【虚拟人综述论文】Human-Computer Interaction System: A Survey of Talking-Head Generation
【虚拟人综述论文】Human-Computer Interaction System: A Survey of Talking-Head Generation

热门文章

最新文章

下一篇
开通oss服务