在为RoR应用程序选择MySQL和Amazon的SimpleDB之间时,需要考虑什么?

时间:2020-03-06 15:02:09  来源:igfitidea点击:

我刚刚开始研究将Amazon SimpleDB服务用作我计划构建的RoR应用程序的数据存储的可行性。我们将EC2用于Web服务器,并计划还将EC2用于MySQL服务器。但是现在的问题是,为什么不使用SimpleDB?

就所支持的用户而言,该应用程序(如果成功)将需要非常可扩展,需要维护一个简单而有效的代码库,并且需要可靠。

我对SO社区对此有何想法感到好奇。

解决方案

好吧,考虑到简单的数据库不使用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应用程序。

我本人对此主题非常感兴趣。现在,我处于高云计算的环境中,所以我想选择SimpleDB,因为从我们将具有高可用性的角度来看,它可能会更好地扩展,但这只是我目前的想法。还没有经验。

编辑:的确,SimpleDB没有正常功能的"正常"数据库,但是如果我们只需要一个简单的CRUD层就可以解决问题,这就是我的情况

Ruby SimpleDB库不如ActiveRecord(默认的Rails DB适配器)那么完整,因此我们习惯的许多功能都将不存在。

从好的方面来说,它是无模式的,可扩展的,并且与ec2兼容。

如果我们打算在应用中执行全文搜索之类的操作,那么SimpleDB可能不是最佳选择,请坚持使用AR +狮身人面像。

有一个名为SimpleRecord的库,它代替了ActiveRecord,但使用SimpleDB作为其后端数据存储。

对我来说,这就像"嘿,那里有这些整洁的工具,我应该去使用它们构建一个项目",而不是实际需要使用这些特定的工具。也许我只是在做螃蟹,但感觉就像是过早优化的经典案例。我们正在尝试使用一项外部服务,而该外部服务为尚未编写的应用程序付费,但我们并不是说我们有一定的受众群体或者一定会扩展到可以保证这一水平的应用程序。

认真地说,"该应用程序(如果成功的话)需要在支持的用户方面具有很高的可扩展性",它描述了Internet的一半。真正的问题是"如果成功"部分。只是专注于快速,轻松地构建应用程序。最简单的方法就是使用ROR,因为可以直接使用。将其与数据库配对,使用ActiveRecord并构建内容并吸引用户。

实际上,我将进一步讲说EC2对于始终在服务器上来说是相当昂贵的。将其部署在Slicehost或者其他托管解决方案上,然后根据需要将其移至EC2,以支持需求。