1

从我的角度来看,数据库始终是瓶颈。因为我可以将 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... 不是更快吗

当然,垮台可能会不一致,但这根本不会减少数据库负载吗?

4

1 回答 1

0

在我看来,你应该使用独立的对象(行)而不是关系,这样你就不需要再使用任何复杂的查询了。除此之外,它还可以更轻松地缓存您的查询(服务器端和数据库端)。

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

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

所以,基本上,它可能更难编码,但它会给你一个更好的数据库设计,它具有令人难以置信的性能并且非常可扩展。

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

于 2011-07-27T14:40:34.710 回答