软件开发者喜欢重构代码。重构会很快(有时),且当正确重构后,减少了代码量,还加快了应用的响应速度。DAB们也喜欢重构代码。当我们正确重构后,我们也可以获得一样的益处。
另一方面,重构数据库架构,是一个要命的恶梦。 修改边缘代码很容易,但是从一张表里将100,000,000条记录及时地移动到另一张表中多少是有些难度。它将花费大量时间。 然而,因为这些年来,数据库通过发展,很多内容都改变了,而数据库也需要通过它们来改变。
一个我曾经为其工作过的客户(他们不愿意透露身份,但我希望他们知道自己是谁)有一个急切需要重构的数据库。在此数据库中,一张表中的键是一列,但另一张表通过两列的联合键来与前……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
软件开发者喜欢重构代码。重构会很快(有时),且当正确重构后,减少了代码量,还加快了应用的响应速度。DAB们也喜欢重构代码。当我们正确重构后,我们也可以获得一样的益处。另一方面,重构数据库架构,是一个要命的恶梦。
修改边缘代码很容易,但是从一张表里将100,000,000条记录及时地移动到另一张表中多少是有些难度。它将花费大量时间。
然而,因为这些年来,数据库通过发展,很多内容都改变了,而数据库也需要通过它们来改变。
一个我曾经为其工作过的客户(他们不愿意透露身份,但我希望他们知道自己是谁)有一个急切需要重构的数据库。在此数据库中,一张表中的键是一列,但另一张表通过两列的联合键来与前一张表的键来关联。他们还有数据类型是varchar的但存有数据类型的值的列,这是因为很久之前此列是保存varchar类型的值。他们在所有的存储过程和函数中使用ISNULL来约束空值,当应用逻辑不允许在列中有空值时(有时数据库列没有NOT NULL属性),但是WHERE子句中的列名后边仍有ISNULL()函数。
我很久之前就给他们指出了此问题,但悲哀的是得到这样的回复:我们没有时间,而且没有足够的商业影响来证明花这些时间是值得的。这样的放,他们的服务器要花钱,且他们经常使服务器的运行状态达到饱和,没有增长的空间。要移动到更大的服务器上则需要从一个双核服务器移到四核服务器上。那将花费大量时间来迁移,每个月还要花钱来买SQL许可(它们由服务提供者管理)。那些成本将远比通过数据库重构将其设计为一个更为正常的数据库所花费的成本要多。
最糟糕的地方是他们明知道如果想保持业务增长,最终必将要这样做,但是他们就是不这样做。在此问题上,他们还是继续在硬件上花费越来越多的钱,而不是在恰当的地方使得投资最大化。
一直以来你都在躲避数据库重构,现在不要躲避了,开始做吧。最后你会发现它是值得的。假设你不会很快有新的硬件使用,但是在经济方面,我们都需要尽我们的职责来为公司省钱。这就是我们这些DBA们真正可以帮到忙的地方。
作者
翻译
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
Notre Dame对云端SQL Server性能基准的探索实践
确立SQL Server的性能基准,对于云端迁移来说是至关重要的第一步,一位来自于University of Notre Dame 的DBA表示,他正在试图通过数据库监控软件,找出SQL server的性能基准。
-
DBA必须掌握的数据库恢复管理技术
如果没有备份副本,数据库管理员就无法还原数据库,所以DBA在恢复之前倾向于考虑备份是合乎逻辑的。 但是,对我来说,这种逻辑一直是错误的。