什么是可扩展性的最佳数据访问范例?

时间:2008-09-15 23:07:47

标签: .net asp.net linq entity-framework ado.net

微软提供了许多不同的选项供数据访问。哪一个最适合可扩展的应用程序?

LINQ的

我们应该使用Linq吗?这看起来很容易,但如果你知道你的SQL确实有帮助。另外我听说你不能使用Linq在ASP.NET中运行异步查询。因此,我想知道它是否真的可扩展?是否有任何使用Linq的大型网站(可能除了stackoverflow)。

实体框架

关于实体框架,请不要听到太多关于razzmatazz的内容。似乎更接近我熟悉的对象模型。

Astoria /动态数据

我们应该将我们的数据作为服务公开吗?

在我进入NHibernate之类的其他ORM产品之前,我很困惑。任何想法或智慧哪个更好?

9 个答案:

答案 0 :(得分:17)

我会推荐NHibernate或Entity Framework。对于大型网站,我使用ADO.NET数据服务。 LINQ to SQL我不会做任何大事。我认为Stack Overflow最终可能会出现一些有趣的扩展问题,即2层而不是3层,并且随着数据库的物理方面发生变化而这些变化在整个代码中波动,它们也会有一些重构问题。只是一个想法。

答案 1 :(得分:15)

我认为ADO.Net数据服务(以前称为Astoria)可以发挥重要作用。它非常适合网络的REST风格架构。

由于网络可扩展,我想任何跟随其架构的东西都是可扩展的...... 此外,您可能希望留意SQL Server数据服务..

答案 2 :(得分:4)

如果您正在谈论关系数据库,那么我的投票是将所有数据操作封装在存储过程中,无论您如何从其他层访问它们。

如果禁用对数据库的所有读/写访问权限(通过存储过程除外),则可以隐藏明确定义的合同背后的数据模型。数据模型可以自由更改,因此存储过程仍然可以保证其输入和输出。

这使DBA可以完全自由地调整应用程序并使其扩展。当SQL由数据库外部的工具生成时,这是一项非常非常困难的任务。

答案 3 :(得分:4)

现在锁定存储过程似乎是一种渐弱的思维方式,至少这是我目前的观察。这种思维方式确实适用于ORM世界,因为它们通常更直接反对表,但任何值得盐的ORM也允许使用过程 - 有时候你别无选择。

关于EF有很多意见,不论有什么人说,无论好坏,它都是V1产品,并且根据经验,MS需要3转才能做到正确才能谨慎等待至少下一次。

似乎这个领域最大的玩家是NHibernate,社区中有很多支持。 Linq,语言功能,在进入NHibernate堆栈时不应该太远。

答案 4 :(得分:1)

使用适合您的任何东西。如果您已经拥有一个相当规范化的数据库(即主键和外键的良好定义),这些都是最容易设置的。但是,如果您的数据不易于规范化,则实体框架比LINQ to SQL更灵活,但配置需要更多工作。

答案 5 :(得分:1)

我们一直在集群环境中试验LINQ,它似乎在各个机器和整个集群中都能很好地扩展。在您提供的3个选项中,我会说LINQ是更好的选择,尽管每个选项的目标受众略有不同,因此您应该在决定使用范例之前定义您将对数据执行的操作。

答案 6 :(得分:1)

我会建议linq。它在我们的网站上可以很好地扩展,并且很容易使用。

答案 7 :(得分:1)

使用LINQ的存储过程...但不要让sprocs变成数据访问层!

答案 8 :(得分:0)

这篇文章是在云计算真正起飞之前的2008年。似乎需要更新答案。我将提供一些链接和概述。我确信此主题上有更多关于此主题的最新帖子,如果我找到它们,那么我将在此处添加链接。

在数据可扩展性和事务处理可扩展性方面,2017年我们需要谈论云和云服务提供商。

我认为现在排名前三的云提供商是:

<强>费用

使用云服务的一个好处是没有前期费用,没有终止费用,而且您只需支付使用的费用。 (引用阿尔巴先生的2016年文章&#34; A Side-by-Side Comparison of AWS, Google Cloud and Azure&#34;)

我们自己使用AWS。我们只在安装和运行虚拟机时付费,因此它可以是一种便宜的启动方式。通常情况下,服务提供商会按分钟或按小时收费,但您可以保证在整个时间内收费。

更便宜的方式是尽力而为的现货定价。现货价格代表您必须出价以保证满足单个竞价请求的价格。当您的出价高于竞价价格时,Amazon EC2会启动您的竞价型实例,当竞价价格高于您的出价时,Amazon EC2会终止您的竞价型实例。 (无耻地引用亚马逊的用户指南here

A Side-by-Side Comparison of AWS, Google Cloud and Azure是一篇很好的文章,可以对这三种服务提供商here进行并排比较。

有关云服务的更多学术观点,请参阅INFOCOM 2010会议论文Achieving Secure, Scalable, and Fine-grained Data Access Control in Cloud Computing"中的Yu,Wang,Ren和Lou&#34; here的2010年论文,但您可能需要成为IEEE会员以获得访问权限。虽然有点过时,但它非常出色,您可以将它作为跳跃点。

云中的扩展已经爆炸式增长,直到最近,通过启动新的虚拟机来完成扩展,这需要几秒钟,但是使用容器,可以在几毫秒内启动新实例。有关这方面的更多信息,请查看Docker和Docker容器here

我很抱歉这个答案只是一堆链接以获取更多信息,但我认为这个问题的答案应该有更新。我希望这能激发某人提供更多第一手资料。如果您已经发布了一些相关信息,请考虑提供指向您自己帖子的链接。谢谢!