数据库关系与软件解决方案保持一致性(性能)

时间:2011-07-27 14:31:03

标签: performance innodb scaling myisam database-relations

从我的角度来看,数据库始终是瓶颈。因为我可以将CPU功率扩展到任何所需的值。即使使用群集或复制,db资源也是有限的。我可能在这里错了,但这些是我迄今为止使用云软件的expierences。

所以我认为保持数据库关系将保存db资源不会吗?

例如,如果您有一个users表和一个user_friends表。 user_friends中的外键是users表的主键。所以如果我在users表中有像ON DELETE这样的关系 - >从user_friends中删除...数据库将保持一致性并运行所有需要的查询。如果我的软件将运行两个简单的查询DELETE FROM users WHERE user_id ...和DELETE FROM user_friends WHERE friend_id ...

当然,这种垮台可能会出现不一致,但这不会减少数据库负荷吗?

1 个答案:

答案 0 :(得分:0)

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

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

  • 交易,因此所有“相关”数据对象都会更新。
  • 分片,因此您不需要垂直缩放数据库。水平方面更容易(在大多数情况下)。
  • 复制,因此当服务器出现故障时,您的应用程序不会出现不一致。

所以,基本上,它可能更难编码,但它会让你获得更好的数据库设计,它具有令人难以置信的性能并且具有很高的可扩展性。

顺便说一句。如果您考虑不使用关系,我建议您使用no-SQL-db。 SQL数据库非常难以扩展(与无SQL数据库相比),并且当您不使用关系时也会导致显着的开销(同样,与无SQL数据库相比)。