【问题标题】:db relations vs software solutions to keep consistancy (performance)数据库关系与软件解决方案保持一致性(性能)
【发布时间】:2011-07-27 14:31:03
【问题描述】:

在我看来,数据库始终是瓶颈。因为我可以将 cpu 功率缩放到任何需要的值。即使使用集群或复制,数据库资源也是有限的。我在这里可能错了,但这些是我迄今为止在云软件方面的经验。

所以我认为让关系远离数据库会节省数据库资源,不是吗?

例如,如果您有一个 users 表和一个 user_friends 表。 user_friends 中的外键是 users 表的主键。因此,如果我在 users 表中有 ON DELETE 之类的关系 - > DELETE FROM user_friends... 数据库将神奇地保持一致性并运行所有需要的查询。如果我的软件将运行两个简单的查询 DELETE FROM users WHERE user_id... 和 DELETE FROM user_friends WHERE friend_id... 不是更快吗?

当然可能会出现不一致的情况,但这不会减少数据库负载吗?

【问题讨论】:

    标签: performance innodb scaling myisam database-relations


    【解决方案1】:

    在我看来,您应该使用独立对象(行)而不是关系,因此您不再需要使用任何复杂的查询。除此之外,它还可以让缓存查询变得更加容易(无论是服务器端还是数据库端)。

    为防止不一致,您应该使用:

    • 事务,因此所有“相关”数据对象都会更新。
    • 分片,因此您无需垂直扩展数据库。横向更容易(在大多数情况下)。
    • 复制,因此当服务器出现故障时,您的应用不会变得不一致。

    因此,基本上,编码可能更难,但它会为您提供更好的数据库设计,具有令人难以置信的性能并且非常可扩展。

    顺便说一句。如果您确实考虑不使用关系,我建议您使用 no-SQL-db。 SQL 数据库很难扩展(与无 SQL 数据库相比),并且在您不使用关系时会导致大量开销(与无 SQL 数据库相比)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-22
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      相关资源
      最近更新 更多