我刚刚开始研究使用Amazon的SimpleDB服务作为我计划构建的RoR应用程序的数据存储区的可行性。我们将使用EC2作为Web服务器,并计划将EC2用于MySQL服务器。但现在问题是,为什么不使用SimpleDB?
应用程序(如果成功)需要在支持的用户数方面具有很高的可扩展性,需要保持简单有效的代码库,并且需要可靠。
我很好奇SO社区的想法是什么。
答案 0 :(得分:4)
好吧,考虑到简单的DB不使用SQL,甚至没有表,这意味着它与MySQL和其他基于SQL的东西(http://aws.amazon.com/simpledb/)完全不同。没有约束,触发器或连接。祝你好运。
这是启动和运行的一种方法: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1242 (通过http://rubyforge.org/projects/aws-sdb/)
我想如果你永远不需要在rails之外查询数据,那么SimpleDB可能会被证明是正常的。但由于它不是一流的受支持的数据库,因此您可能遇到难以修复的错误。我不想在半beta后端运行生产rails应用程序。
答案 1 :(得分:4)
Ruby SimpleDB库不如ActiveRecord(默认的Rails DB适配器)那么完整,因此您习惯使用的许多功能都不会存在。
从好的方面来说,它是无模式的,可扩展的,并且与ec2配合良好。
如果您要在应用程序中执行全文搜索等操作,那么SimpleDB可能不是最佳选择,坚持使用AR + sphinx。
答案 2 :(得分:2)
对我来说,这只是感觉,“嘿,这里有这些简洁的工具,我应该用它们构建一个项目,”而不是实际需要使用这些特定的工具。也许我只是在螃蟹,但感觉就像过早优化的经典案例。你正在尝试使用外部服务来为一个甚至还没有编写的应用程序花钱,而且你没有说你有一个有保证的受众或一个必须扩展到一定程度的保证。
“应用程序将(如果成功)需要在支持的用户数量方面具有很高的可扩展性”,严重的是,它描述了互联网的一半。这是“如果成功”的部分真的是问题。只需专注于快速轻松地构建应用程序。最简单的方法就是使用ROR,因为它可以说是开箱即用的。将它与数据库配对,使用ActiveRecord并构建一些内容并吸引用户。
事实上,我会进一步说,EC2对于服务器总是相当昂贵。在Slicehost或其他托管解决方案上部署它,然后在需要时将其移动到EC2以支持需求。
答案 3 :(得分:1)
我自己对这个话题非常感兴趣。现在我正处于云计算的高位,所以我会说使用SimpleDB,因为它可能会在你拥有高可用性的意义上更好地扩展,但这只是我当下的想法。不是来自经验。
编辑:SimpleDB没有正常的功能是“普通”数据库,但如果你只需要一个简单的CRUD层就可以解决这个问题,这就是我的情况
答案 4 :(得分:0)
有一个名为SimpleRecord的库,它是ActiveRecord的替代品,但是使用SimpleDB作为其后端数据存储。