数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

数据库开发者常犯的十大错误,你有吗?[2]


发布日期:2023年12月14日
 
数据库开发者常犯的十大错误,你有吗?[2]

第三范式并不是至高无上

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

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

隐藏应用逻辑的黑匣子

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

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

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

备份!备份!备份!

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

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

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

你需要版本控制

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

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

使用数据库自带的工具

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

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

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

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

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

某些数据可能的确适合存放在本地文件中而不是存放在网络的客户—服务器数据库中当你存储数据的时候你需要分析一下你的数据适合存放在什么地方是数据库?注册表?文本文件?还是XML文件?然后为其选择最适合的存储类型不要因为你有一个锤子就认为什么都是钉子不要因为有一个数据库就把所有东西都扔到数据库中——现在还存在一种对XML文件的过度滥用也是同样的情况

[] []

               

上一篇:在PB中如何实现数据模糊查询(一)

下一篇:数据库开发者常犯的十大错误,你有吗?[1]