代码之家  ›  专栏  ›  技术社区  ›  Scott McKenzie

simpledb、openid和cloud可以走多远?

  •  2
  • Scott McKenzie  · 技术社区  · 15 年前

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

    最后,我想去掉我的ISP托管的SQL Server数据库,随着内容的增加,逐步开始使用S3。

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

    这样做的优点/缺点是什么?这种方法的阻碍因素是什么?

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

    1 回复  |  直到 15 年前
        1
  •  2
  •   Mocky    15 年前

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

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

    缺点包括:

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