通过阅读this question,我刚刚了解了blackhole表技巧的存在:基本上包括使用单个表插入数据,然后使用触发器将数据拆分为许多其他表。

我想知道,一旦从事该项目的开发人员意识到这一点,是否会引起问题。

这种技术的优缺点是什么?

编辑:
当我看到示例时,我想到的眨眼是关于事务的:如果由于某种原因事务失败,您会发现带有原始数据的blackhole行,出于历史目的,也许还有调试的帮助-但这似乎是我可以看到的唯一黑洞+1。有想法吗?

最佳答案

我认为黑洞没有任何真正的优点。

编写触发代码来移动数据的工作可能并不比编写代码以首先将数据插入正确的地方少得多。

正如克里斯蒂安·奥达德(Christian Oudard)所写,它并没有降低复杂性-只是将其移动到确实很难调试的地方。

缺点:

在软件开发中,“副作用”通常是一个坏主意。触发器是副作用-我打算做一件事(将数据插入表中),实际上它还做很多其他事情。现在,当我调试代码时,我也必须将所有副作用都保留在头脑中-副作用本身也可能具有副作用。

与开发相比,大多数软件在维护上花费的时间要多得多。将新开发人员引入团队并解释黑洞技巧可能会增加学习曲线- yield 微不足道(我认为)。

因为触发器是副作用,并且如果您不小心的话,触发大量触发器是相对容易的,所以我一直试图在不依赖触发器的情况下设计数据库。在触发器显然是正确的方法的地方,我只让最有经验的开发人员创建触发器。黑洞技巧使触发器成为正常的常规工作方式。当然,这是个人观点。

10-07 12:37