数据库开发者常犯的错误(二)

运维 数据库运维
数据库的开发在技术上市非常先进的,在过程上更是不允许犯错误的,本文将为大家介绍数据库开发者常犯的错误,以提高大家的重视度。

数据库开发者易犯的错误是开发人员在长期的经验积累中总结出来的,之前已经为大家介绍了四个数据库开发者常犯的错误,即数据库开发者常犯的错误(一),下文将为大家介绍更多的数据库开发者常犯的错误类型。

1、第三范式并不是至高无上


另一方面,开发人员对数据库的一知半解可能是一件比较危险的事情。我看到过很多数据库被设计得过于死板,这些数据库的设计者坚持把所有东西都放在查询表中。


是的,数据库开发者需要知道规范化的规则,但是你也需要知道什么时候要停止去用规范化,什么时候逆规范化反而可能会带来更好的效果。


2、隐藏应用逻辑的“黑匣子”


存储过程和触发器是两个非常伟大的功能。当你有多个客户访问一个数据库的时候,它们可以帮助你确保对数据的一致性处理。


不过,它们也可能会变成一个隐藏应用逻辑的“黑匣子”,让Web和瘦客户端开发者无法查看和调试这些逻辑。在大多数情况下,数据库代码不能像其他应用程序代码一样被进行代码测试和代码调试。


因此,当你要将代码放到数据库中的时候,花点时间来问一下自己:这些代码是否真的适合放在数据库中?


3、备份!备份!备份!


你的数据库需要备份吗?当然需要!


我们为什么要把数据存在数据库中的原因之一就是想长久地保存它们。然而,我却经常碰到这样的情况,有的开发人员却因为这样或那样的原因——例如硬件故障、黑客或数据库错误——因为没有备份而导致珍贵的数据永远丢失。因此在你开始开发之前,就应该制定一个数据备份计划,包括备份的频率、备份的类型,以及离线备份的频率等等,而不应该在数据丢失后才想起备份的重要。


我不希望“亡羊补牢”的故事发生在各位数据库程序员的身上。


4、你需要版本控制


说到备份,你需要担心的不仅仅是数据的变化,还有数据库的修改。你需要跟踪并记录下这些数据库版本的变化,以便在任何需要的时候重新创建这个数据库。如果你想真正专业化的开发软件,你需要在你的数据库设计中增加版本控制。


举个例子来说,如果你想调试某个软件版本中的客户漏洞,但是你无法恢复到该软件版本所对应的数据库版本的话,调试可能不会正常进行。因此数据库开发者必须要做好版本控制,否则可能因此带来很多以后的麻烦。


5、使用数据库自带的工具


现代数据库中已经不仅仅是一些让你存放数据的工具。它们还具有很多潜在的工具来使得管理数据库更容易。


举个例子来说,SQL Server中有工具可以检测SQL语句中潜在的攻击,甚至包括了一个向导,来告诉你该使用什么样的索引才能使你的查询上更高效,甚至可以模拟在真实服务器上的实际负载。


通过这些工具,我们的确在有的时候加速了数据库运行的速度,降低了CPU的利用率,但是实际情况是,很多人只有在一些专家顾问告诉他们后才知道在数据库中存在这样的工具。如果你不知道在你的数据库中存在什么样的工具,以及这些工具能帮你做什么,那么你花的钱就没有得到应有的回报。


6、不要因为你有一个锤子就认为什么都是钉子


现在有一种潮流,一些开发人员把应用程序用到的所有数据都存储在数据库中。我曾经看到有的应用程序试图创建一个完全数据元驱动(metadata-driven)的用户界面,它把元数据和用户偏好的数据都存放在相同的数据库中。显然这会让开发人员的生活变得复杂和降低性能。


某些数据可能的确适合存放在本地文件中,而不是存放在网络的客户—服务器数据库中。当你存储数据的时候,你需要分析一下你的数据适合存放在什么地方,是数据库?注册表?文本文件?还是XML文件?然后为其选择最适合的存储类型。“不要因为你有一个锤子就认为什么都是钉子”,不要因为有一个数据库,就把所有东西都扔到数据库中——现在还存在一种对XML文件的过度滥用,也是同样的情况。
这就是我要为大家介绍的有关数据库开发者常犯的错误类型,可能我介绍的还不够全面,我会在以后的文章中为大家发布,谢谢大家的关注。

【编辑推荐】

  1. MS-SQL Server数据库开发中技巧总结
  2. MS-SQL server数据库开发中的一些精典技巧
  3. 甲骨文将发布首款图形界面数据库开发工具
  4. 数据库开发管理中的十条建议
责任编辑:迎迎 来源: 比特网
相关推荐

2011-03-16 09:33:45

数据库开发错误

2013-12-27 09:03:47

开发项目

2011-03-17 15:25:31

2014-10-09 09:29:25

AngularJS

2015-04-21 12:54:21

2022-12-14 07:31:35

JavaScript错误关键字

2009-04-29 11:20:24

.NET开发常见错误

2023-03-10 09:00:49

Swift开发者工具

2020-10-09 09:44:25

JavaScript 开发 应用

2017-04-01 18:00:08

开发者数据库

2017-08-14 16:30:38

数据库常犯错误

2017-11-23 15:06:14

前端数据库开发

2022-01-16 22:16:59

数据库Sentry开发者

2016-09-08 23:28:06

2023-12-08 09:35:37

2013-03-28 10:22:33

数据库关系型数据库数据库设计

2022-07-25 09:46:25

React数据库

2010-03-18 14:23:28

SQL Azure

2014-12-24 09:51:22

WebNoSQL

2014-12-24 09:48:13

NoSQL关系数据库
点赞
收藏

51CTO技术栈公众号