web服务层不需要外键
来源:互联网 发布:单片机 液晶屏与电机 编辑:程序博客网 时间:2024/06/14 03:13
尽管在讨论数据库时知道表与表之间有外键关系, 但是具体到表定义就省略掉外键定义, 而选择在应用层管理相关的外键逻辑. 只因为听说外键性能不好, 或者说有外键后表与表之间太耦合了, update, delete等操作都会涉及相关的表.
学院派告诉你建表的时候必须使用键,而实践派除了主键和非空约束外,其他的都不要。主要通过程序来控制外键关联!
数据库的诸多设计,帐号,权限,约束,触发器,都是为 C/S 结构设计的,是以 C 端不可信做为假设前提的。B/S 模式安全边界前移到 web 服务层,应用与数据库之间是可信的,应用自行完成这些功能更加灵活。
所以能不用就不用。
外键是否采用看业务应用场景,以及开发成本的,大致列下什么时候适合,什么时候不适合使用:
1. 互联网行业应用不推荐使用外键: 用户量大,并发度高,为此数据库服务器很容易成为性能瓶颈,尤其受IO能力限制,且不能轻易地水平扩展;若是把数据一致性的控制放到事务中,也即让应用服务器承担此部分的压力,而引用服务器一般都是可以做到轻松地水平的伸缩;
2.传统行业
1>.软件应用的人数有限,换句话说是可控的;
2>.数据库服务器的数据量也一般不会超大,且活跃数据有限;
综合上述2句话描述,也即数据库服务器的性能不是问题,所以不用过多考虑性能的问题;另外,使用外键可以降低开发成本,借助数据库产品自身的触发器可以实现表与关联表之间的数据一致性和更新;最后一点,使用外键的方式,还可以做到开发人员和数据库设计人员的分工,可以为程序员承担更多的工作量;
为何说外键有性能问题:
1.数据库需要维护外键的内部管理;
2.外键等于把数据的一致性事务实现,全部交给数据库服务器完成;
3.有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源;
4.外键还会因为需要请求对其他表内部加锁而容易出现死锁情况;
- web服务层不需要外键
- struts中的Action层调用服务层时,不需要在Spring配置文件中做属性注入
- 第 12 章 Web 层服务
- windows 关闭不需要的数据库服务 禁止不用的web服务扩展的方法 图文
- spring整合struts2后,struts2的action中调用服务层时,不需要在spring配置文件中去注入
- 为Web层提供灵活的安全服务
- Web服务架构之路--数据层组件DAL_SET
- 关闭不需要的fedora服务
- 关闭linux不需要的服务
- 一个典型Web应用的中间部分是业务层或服务层
- Esper企业版介绍(三)Esper推送服务--从CEP层到WEB层的数据推送
- ArcGis 通过web发布图层,服务启动失败,不显示图层等问题
- web层
- 关闭XP不需要的服务 XP
- 关闭不需要服务 为Windows系统提速
- 最高境界是不需要人去服务
- Windows下删除不需要的服务
- 如何手动删除不需要的windows服务
- python核心编程第九章(9-10)
- highcharts特殊定制:x轴文字竖直显示(兼容各浏览器)
- 远程备份还原SQL数据库
- RabbitMQ学习之集群部署
- UVA - 757 Gone Fishing 贪心+枚举
- web服务层不需要外键
- 程序员也文艺:海燕——高尔基
- 第九章 内联函数
- zoj 3430 Detect the Virus(AC自动机)
- Java Comparator (比较器接口 Comparator)
- 优酷真实视频地址解析
- HDOJ题目1231最大连续子序列(动态规划)
- mysql集群搭建
- Gray code