数据库中有太多表有什么不利影响

  • 本文关键字:影响 太多 数据库 database
  • 更新时间 :
  • 英文 :


在我解释我的问题之前,我想说我知道这种问题以前在SO上被问过,但我的问题规模完全不同,情况似乎与我在其他人的问题上读到的有着根本的不同。

背景:

我正在为一个拥有包含 2505 个表的数据库的客户做一些工作。这 2505 个表由几百个 WordPress 实例的表组成,因此这些表不需要相互通信或进行任何通信。它可以是 250 个数据库,每个数据库包含 10 个表,而不是一个包含 2505 个表的数据库。

更重要的是:这个特定的应用程序目前只在美国的一个州使用,目标是在所有50个州使用它。因此,这可能意味着最终将有 2500 * 50 = 125,000 个表。轻描淡写地说,这在我看来是一种次优设计的标志。

问题在于客户端的开发人员对数据库知之甚少(例如,他不知道规范化、外键或唯一约束),以至于解释为什么数据库中的 2505 表不是好的数据库设计是一个真正的挑战。

对于不太了解数据库的人,您将如何解释单个数据库中的 2505 个表是一个坏主意? (我正在寻找具体的、基于事实的、无可辩驳的理由。

(顺便说一下,我认为问题的根源在于平台选择 - WordPress可能不是适合这项工作的工具 - 但我想先解决数据库问题。

如果这个人不了解数据库,使用特定的技术参数可能不会有太大帮助。最好使用普通人可以(假装)理解的东西,最好是在老板在场的情况下(或者给他们发一封带有抄送的电子邮件:给他们的老板)。

老板可能会说,在一个数据库中保留许多表是不安全的,或者根本不是行业标准。生成的数据库会很慢,可能会崩溃,这可能会让客户非常生气。

这种沟通是操纵性的,但直接的技术谈话可能会让你一事无成。如果开发人员什么都不懂,并且仍然坚持不同意你的观点,那么谈论好的或坏的设计是没有用的(甚至可能比无用更糟糕 - 菜鸟有时为使用糟糕的设计感到自豪,因为能够使用糟糕的设计证明了他们所谓的leet skillz)。你要说服老板;所以你必须说老板能听懂的语言。老板希望避免项目失败的风险,他们可能会同意使用非标准技术会增加风险。确切的技术证明可能不是必需的,表达对你所说的内容的强烈确定性效果更好(这通常是可悲的,但在这种特定情况下它对你有用)。

你为什么不直接测试它并报告你的测试结果呢?只需将现有生产数据克隆 50 次到新表中,并针对它运行一些流量即可。

这是无可辩驳的,不需要简化隐喻,也不具有欺骗性(就像其他答案之一所暗示的那样)。

你为什么不试着告诉他,数据库就像一个柜子,每张桌子都是一个抽屉。

现在让他想象在有 2505 或 125.000 个抽屉的橱柜中翻看......为了使它更具挑战性,他将没有梯子或其他方式到达最上面的抽屉。

如果你试图向一个非技术人员解释为什么这样的数据库不好,你不能像我们许多人那样详细介绍。

现在,虽然它可能(或不是)是真的,但您可以使用一些简单的答案:

a) "如果你有更多的表,获取日期的命令(查询)将太复杂/太大 - 这意味着你的系统不会那么灵敏/快速/等"

b) "如果发生任何不好的事情,或者你需要修改数据库,你将不得不支付更多费用,因为它没有优化,无论你付钱给谁做这件事都会更难"

无论如何,我就是这样解释的。

祝你好运!

钱。

开发人员要花钱。维护需要花钱。

使用黑板开会或发送类似以下内容的电子邮件:

开发人员每天花费 500 英镑在应用程序后面创建表-----------------------------------创建 1 个表的时间 = 20 分钟创建 125000 个表的时间 = 125000 x 20 = 2500000 分钟创建 125000 个表的成本 = 2500000/60/8 * 500 = 2604166 英镑更新应用程序-----------------------------------更新 1 个表的时间 = 5 分钟更新时间 125000 表 = 125000 * 5 = 625000 分钟更新 125000 个表的成本 = 625000/60/8 * 500 = 651041 英镑第1个月费用-----------------------------------£654,041 + £2,604,166 = £3.258m

翻译成当地货币,并指出"老板"每次想要改变某些东西时都会节省这么多的维护现金。只是为了确保您不会无缘无故地这样做,指出这是正常程序之上的额外内容

最新更新