当前位置: 首页 > news >正文

【表设计】外键的取舍-分布式中逐渐消失的外键

在分布式大行其道的今天,为什么外键约束越来越少?

外键-数据链接带来强制完整性

在关系型数据库中,外键(Foreign Key)可以用于建立和强制两个表之间的数据链接。

在层次数据结构一篇的闭包表简单设计中,就有使用外键进行数据链接。
像这样:
![[Pasted image 20250506093355.png]]

我们很容易发现,外键最直接的体现是强制完整性,即引用表中的外键值必须先存在于被引用表。
删除被引用的行数据时,必须先删除引用表数据(级联删除)。
通过外键,我们很容易理清楚表之间的关系,即理解数据模型,且也有利于ER图的生成和可视化。

外键-强制完整性不适应微服务

分布式与微服务追求服务的自洽,要求服务具备独立性,要求架构整体具备容错,服务之间不会互相阻塞。
这些与外键的强制关联特性相冲突。
且在数据库与服务基本是N对N的环境下,数据库外键约束通常无法跨越不同的数据库实例或服务边界来强制执行。
另外数据库每次执行外键操作还需要额外的检查来验证外键约束。在高并发、高写入吞吐量的场景下,这样的额外开销可能会成为性能瓶颈。

因此,高耦合强制的外键,并不适应现在主流的微服务、分布式。

应用层处理代替外键约束

外键不合适了,但是外键要做的事情却不能不做,常见的做法是在应用层完成外键原本的工作。

  • 数据链接
    在执行删除或更新操作前,应用程序代码需要检查是否存在关联数据。
    通过逻辑删除,保留数据的链接。

  • 数据稽核
    建立一个稽核系统,处理数据的不一致与孤儿数据(在引用表有数据,被引用表没有数据)。

相关文章:

  • 【十五】Mybatis动态SQL实现原理
  • 在Unity AR应用中实现摄像头切换功能
  • 2025年服务器技术全景解析:量子计算、液冷革命与未来生态构建
  • 基于图像处理的道路监控与路面障碍检测系统设计与实现 (源码+定制+开发) 图像处理 计算机视觉 道路监控系统 视频帧分析 道路安全监控 城市道路管理
  • HTTP请求与前端资源未优化的系统性风险与高性能优化方案
  • Java高频面试之并发编程-12
  • 论文速读:《CoM:从多模态人类视频中学习机器人操作,助力视觉语言模型推理与执行》
  • element-ui日期时间选择器禁止输入日期
  • css filter 常用方法函数和应用实例
  • Android SDK 国内镜像及配置方法(2025最新,包好使!)
  • vue3+ts继续学习
  • 【自然语言处理与大模型】LlamaIndex的词嵌入模型和向量数据库
  • laravel 12 监听syslog消息,并将消息格式化后存入mongodb
  • CVE-2025-24813:Apache Tomcat RCE 漏洞分析
  • CyberSentinel AI开源程序 是一个自动化安全监控与AI分析系统
  • Tomcat中Web应用程序停止时为了防止内存泄漏,JDBC驱动程序被强制取消注册出现原因
  • 【落羽的落羽 C++】list及其模拟实现
  • 某公园楼栋自由曲面薄壳结构自动化监测
  • 薪技术|0到1学会性能测试第45课-apache调优技术
  • Apache Doris 使用指南:从入门到生产实践
  • 呼和浩特65户业主被一房两卖,十年诉讼却难胜
  • 上海市委常委会扩大会议传达学习习近平总书记考察上海重要讲话和在部分省区市“十五五”时期经济社会发展座谈会上的重要讲话精神
  • 工人日报关注跟着演出去旅游:票根经济新模式兴起,让过路客变过夜客
  • 9金收官!跳水世界杯总决赛朱子锋、程子龙包揽男子10米台冠亚军
  • 印度扩大对巴措施:封锁巴基斯坦名人账号、热门影像平台社媒
  • 两千万粉丝网红“大LOGO”带货茶叶被指虚假宣传,涉事茶企被立案调查