【发布时间】:2011-07-06 12:29:37
【问题描述】:
你能给我一个数据库设计建议吗?
我想出售活动门票,但问题是当许多用户同时购买同一活动的门票时,数据库可能会成为瓶颈。
- 如果我为每个活动提供剩余门票的柜台,则此字段将有更多更新(锁定),但我会很容易找到剩余的门票数量
- 如果我提前为每个活动生成门票,将很难知道还剩多少门票
如果每个事件都可以使用单独的数据库可能会更好(如果对该事件的请求预计很高)?
可能预留也得异步操作?
我必须使用关系数据库(MySQL、Postgres)还是无关系数据库(MongoDB)?
我计划使用 AWS EC2 服务器,以便在需要时运行更多服务器。
我听说“关系数据库无法扩展”,但我认为我需要它们,因为它们具有事务和数据一致性,这是我在处理确定数量的工单时所需要的,我说的对吗?
你知道互联网上有一些这类主题的资源吗?
【问题讨论】:
-
您听说过“关系数据库无法扩展”。我听说猪会飞。想想世界上最复杂、最大的数据处理,它是一个关系数据库。直到最近,NoSQL 数据库才解决了非常具体的问题,并通过改变关系范式来解决这些问题。
-
实际上,当您想到一些最大、最复杂的数据处理时,您可能会喜欢 CICS 之类的东西,这就像我父亲的 NoSQL... ;-)
-
带有 ID 键的设计糟糕的“关系”数据库无法扩展,设计良好的关系数据库可以很好地扩展。所以要正确设计。并确保您了解事务控制、OLTP 和并发要求并实施它们。所有高端的关系型数据库平台都提供异步操作,您不必自己动手。低端的免费软件平台甚至没有真正的服务器架构,所以要小心。
-
但它们是网络规模吗? youtube.com/watch?v=b2F-DItXtZs
-
@PerformanceDBA:这是个玩笑,而且你显然不会明白,因为视频是针对反对漫画的 NoSQL 狂热分子编写的。如果你只是假装我不存在,我会很高兴,因为我发现你的 cmets 很累。
标签: sql mongodb postgresql database-design nosql