zoukankan      html  css  js  c++  java
  • 阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-9 数据库物理外键移除原因讲解


    打开我们的数据库



    关系图,把所有的表都拖进来了。这里具体的表机构,先不说,到后面做到这块的时候,再去讲解。

    官网上的图。表与表之间的关联通过连接线可以看出来。

    我们在设计数据库的时候,并没有这样的屋里关系。

    外键

    外键的好处,数据的完整性,数据的强力执行。
    在我们的分布式项目里面。在发并发的情况下,数据库的性能会有相应的影响的,所以数据库的外键移除掉。
    分布式的项目,绝大多数都需要热更新的,热更新就是不停机去进行维护。不管是互联网产品,还是一些游戏 手游。大多都会采用热更新的方式。如果数据库有外键,可能会造成新更新的代码 无法运行。 因为要匹配现有的外键,可能要重启服务器。那么这样就达不到热更新的目的了。因为外键是强力执行的。注意点和分布式绝对是冲突的。
    降低耦合度:删除了外键,并不是我们不要外键,而是物理的外键,物理的这一层关系我们不需要了。但是逻辑上的话,这样的外键还是存在的。这样子适当的降低了表和表之间的耦合度。
    什么叫做物理和逻辑呢?
    大型的系统里面都是多个数据库的。分布式的数据库集群,如果说我们有外键关联的话,会导致难以做分库分表。因为耦合度实在是太高了。
    假设现在有两张表,用户表和商品表。用户表和商品表假设有外键关联的话。当我们现在要做一个分库,要吧两张表放在两个不同的数据里面,但是他们却有外键关联关系。这个时候就很难去实现了,这仅仅只是一个外键而已。如果说我们的数据库有上百张表。有几十个外键关联的话。这个时候分库分表该怎么做呢?? 难以进行,难以去实现。如果一个互联网项目在前期没有做到很好的控制,就是控制我们的外键关系。当业务上来以后。物理的外键一定会让运维人员欲仙欲死。。所以很多的架构师 数据库DBA 都会弃用数据库的外键。



    如果你设计的是传统的小型项目的话,物理的外键存不存在都可以 。
    如果你设计的是一个互联网项目,或者是一个大型项目的时候,我们是绝对不能用数据库外键的,一定要为以后的架构多多考虑。

    结束





     

  • 相关阅读:
    C语言归并排序
    三重for循环实现对二维数组的按列排序(JavaScript)
    MySQL创建子视图并查看的时候,字符集报错问题
    Windows下配置lua环境
    《机器学习》周志华西瓜书读书笔记
    《消费金融真经》读书笔记
    北海之行-小纪
    2017中国资产管理行业发展报告——思维导图
    工作小纪
    全球化3.0:世界是红的 (转载)
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/12028525.html
Copyright © 2011-2022 走看看