我最终决定使用实体框架,因为它在所有ORM中都具有最佳性能。但在我开始阅读和编写代码之前,我只想知道是否有任何使用ORM的高流量网站。
答案 0 :(得分:13)
目前,在.NET 3.5中发布的EF版本v1.0具有糟糕的性能。我做了大量测试,并在一年前首次发布时与微软进行了几次长时间的电子邮件讨论。 EF的当前效率有很多需要,并且在许多情况下,可以生成绝对残酷的SQL查询,从而降低您的性能。
.NET 4.0中的Entity Framework v4.0更好。他们已经修复了大部分(如果不是全部)困扰EF v1.0的SQL生成问题(包括我一年前提交给他们的问题。)EF v4.0是否具有最佳性能还有待观察。它比LINQ to SQL更复杂,因为它提供了更大的灵活性。由于尚未提供发布版本,因此无法确定EF v4.0是否最快。
这是客观的答案,这将需要一个目的,主要ORM contendors,诸如EF,LINQ到SQL,的nHibernate(优选与LINQ提供商),LLBLGEN,甚至一些newcommers,如Telerik的之间无偏的比较ORM,亚音速等。
对于使用ORM的大规模,大批量生产系统。我建议查看使用LINQ to SQL的StackOverflow.com本身。如果不是 ,互联网上的顶级程序员社区,SO已成为其中之一。绝对是高音量,这个网站表现非常好。至于其他网站,我真的不能说。大多数主要Web应用程序的内部实现细节通常都是个谜。我所知道的ORM的大多数用途也适用于内部企业系统。财务系统,医疗保健等。对象数据库也用于相同类型的系统,尽管它们的频率要低得多。我会搜索ORM使用和大量网站。
在搜索中需要注意的一件事。确保您找到的评论是最新的。 ORM场景在过去两年里改变了很多。自ORM首次创建于十年前以来,性能,效率,功能,动态SQL的RDBMS调优能力等都得到了显着提升。
答案 1 :(得分:6)
我知道在其中一个播客中,Jeff提到stackoverflow使用Linq-to-SQL
答案 2 :(得分:6)
真正的高流量网站实际上完全脱离了SQL数据库,因为在今天的应用程序中常常出现写入繁重的工作负载,几乎不可能使它们扩展到超出一台机器,ORM或没有ORM 。这被称为“NoSQL movement”
然而,虽然这是一个非常时髦的主题,但对于没有数千个活跃并发用户的网站来说,它是completely irrelevant。担心ORM性能也是一个类似的问题:大多数网站实际上并不足以让ORM成为一个问题(除非严重错误实施或应用)。
答案 3 :(得分:4)
jrista是对的。我只想补充一点,你应该认真考虑LINQ to SQL。从简单性和性能角度来看,它是更好的技术(目前)。这是非常快速和合理的开箱即用。如果要进一步改进LINQ to SQL,请查看PLINQO framework。
PLINQO是一个围绕标准LINQ to SQL的框架,并添加了大量功能,包括一些非常优雅的批量操作和缓存功能。最重要的是PLINQO适应数据库模式的变化,但保留了自定义代码。这是非常光滑的,在我看来,是最有价值的方面。
答案 4 :(得分:2)
虽然没有直接解决哪个ORM更快,因为Ayende(NHibernate作者)指出可能很容易做错或者至少倾向于你想要的方式,这里有使用ORMS的应用程序作为其申请的一部分。
Twitter是(是?)使用Ruby on Rails(RoR),它使用ORM。 37 signal人使用RoR作为他们的应用程序....我知道这些不是.Net但是正如kuoson所说,L2S被SO使用,并且有很多人使用NHibernate像{{3}和Headspring。我发现许多最近开发的网络应用程序正在使用ORM,我不会感到惊讶。
即使ORM确实会降低性能,但大多数ORM允许您在必要时自定义SQL。大多数建议使用ORM,然后在出现问题时修复瓶颈。此外,一个好的ORM为您解决了这么多问题,现在编写自己的DAL正变得越来越难以销售。
答案 5 :(得分:1)
当然,reddit使用部分SQLAlchemy(原因不明,我相信他们重写了大部分内容:/)。大多数(如果不是全部)大型Django网站都使用ORM(包括前Pownce和Curse)。