2

我有一个正在开发的 ASP.NET MVC 应用程序(非事务性、社交性)。我开始使用 .NET 授权提供程序来完成这项工作,但是随着云的衬里越来越闪亮,我想知道我能推高多少。

最终,我想取消 ISP 托管的 SQL Server 数据库,并随着内容的增加逐步开始使用 S3。

我正在考虑使用 OpenID 进行身份验证,使用 SimpleDB 存储用户详细信息。如果我理解正确,用户添加的任何内容都可以在 ClaimedIdentifier 上键入。

这样做的优点/缺点是什么?这种方法的亮点是什么?

有没有人有任何纯云架构的例子可以用来支持/反对的论点?

4

1 回答 1

2

我认为使用 OpenID 的好处是众所周知的。使用 SimpleDB 存储用户详细信息的优点包括:

  • 灵活的模式允许您直接支持某些类型的动态用户数据,而这种方式对于 RDBMS 来说可能很麻烦。例如,用户定义的配置文件字段,或任意长的列表(如果值如电子邮件地址)。数据可以直接存储,而不需要另一个表来连接。
  • 您没有需要调整的设置和配置选项,因此很简单。您基本上是在外包服务器维护和数据库维护任务。如果您继续使用托管的 SQLServer 解决方案,那么您在较小程度上也会这样做。而且我不了解共享 SQLServer 托管,但在性能和可用性问题的一致性方面,我在共享 MySQL 托管方面有过糟糕的经历。
  • 这是 SimpleDB 声称的另一件事:更好的可用性,所有数据跨数据中心自动复制,并且集群中的所有服务器能够独立处理读取和写入。如果整个数据中心变暗或路由器真的融化了,您的应用程序可能仍在嗡嗡作响。也许服务水平会下降,但如果你计划得当,它就可以完全发挥作用。当问题得到解决时,数据会在后台自动同步备份。
  • 很好的表现。它不如本地托管的无负载 SQLServer 实例快,但开箱即用它对于用户数据(以及更多)来说足够快,并且可以很好地扩展。
  • 如果您在 Amazon EC2 Windows 服务器上运行 ASP.NET 应用程序,您可以在服务器和 SimpleDB 之间快速免费传输数据。典型的往返 ping 时间在 2 毫秒到 7 毫秒之间。
  • 免费使用套餐包括每月 1GB 带宽、1GB 存储和 25 小时盒子使用量。根据应用程序,您可能可以免费走很远。

缺点包括:

  • 没有关系或约束或模式,因此您必须在一定程度上进行非规范化。您要检查的约束必须在代码中完成,您要执行的连接将需要后续查询来模拟。带有后续查询和主键的连接并没有听起来那么糟糕,因为 SimpleDB 具有可靠的查询 API 并且针对并发请求进行了优化。很多时候,即使是复杂的连接也可以在 SimpleDB 的 2 次往返中(等效时间)进行模拟。
  • 您没有需要调整的设置和配置选项。
  • 你必须能够处理最终的一致性。您始终可以在项目级别应用原子更新和删除,但在正常操作期间,更新可能不会在读取请求中显示一整秒(根据我的经验,不能保证)。当然,在故障情况下要长得多。“处理它”通常必须在会话级别进行。如果用户更新了她的个人资料(使用您的应用程序)并且其他人无法在几秒钟内看到更改,那没关系,但如果她的视图在几秒钟内恢复到旧状态,那就不好了。有一些简单的方法可以解决这个问题,但你必须考虑这些问题并处理它们。
  • 你任由亚马逊摆布。没有什么不好的事情发生,也不一定比受 SQLServer 托管公司摆布更糟糕。但这可能会引起一些人的担忧。比 SQLServer 的情况更糟糕:如果您与 Amazon 分道扬镳,SimpleDB 应用程序将无法在其他任何地方运行(本地运行的 M/DB 实例除外)。
于 2009-10-21T15:54:46.340 回答