更新:更准确的措辞可能是“开发 CRUD Web 应用程序时典型的性能瓶颈是什么?
我正在考虑 Web 应用程序,例如:
我正在考虑编程语言,例如:
我正在考虑数据库系统,例如:
我正在考虑这样的操作系统:
我正在考虑典型的现成硬件配置:
http://english.keyweb.de/dedicated/index.shtml
我想到的可能的软件瓶颈是:
我想到的可能的硬件瓶颈是:
最佳答案
如果您构建 Web 应用程序以获得最大的可扩展性,那么您的瓶颈最终将归结为 协调可变状态的管理 (即需要某种形式的事务语义的数据库部分)
需要考虑的几点:
鉴于您正在查看的应用程序类型,我可能会偏向 NoSQL 解决方案,因为听起来有效地处理大量数据比拥有大量事务数据更重要。您始终可以为需要事务语义的有限数据子集保留一个 PostgreSQL 框(用户帐户?主引用数据?一些工作流状态?)
另一种(更经典的)方法是获取典型的大型数据库(例如 Oracle、DB2)并购买昂贵的高端数据库机器集群。然后让大量廉价的、可复制的 Web 服务器完成大部分工作,并在需要执行事务时根据需要访问数据库集群。这可以非常好地工作到数据库集群开始过载的地步,此时它可能是一个昂贵的瓶颈扩大......但可以说,如果你得到那么多负载,你可以负担得起.如果你正在 build 例如,我会沿着这条路线走。金融服务应用程序。
如果您只是在做一个原型(prototype)或期望从小负载开始,那么您可以使用单个商品 PostgreSQL 机器来代替昂贵的数据库集群。这可能是最简单/最便宜的设置选项。而且,如果您将数据库访问保持在最低限度(大量缓存、仔细的查询设计),它实际上可以带您走很长一段路。请注意,如果您继续成长,它最终将成为您的瓶颈。
p.s.您提到您正在查看 Clojure,如果您还没有这样做,那么我强烈建议您观看此视频:http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey - 一个非常独特的关于并发的观点,它也对在并发环境中管理事务数据的问题提供了一些见解。
关于ruby-on-rails - 开发 CRUD Web 应用程序时的典型瓶颈是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992820/