亚马逊SimpleDB
是否有人考虑将Amazon SimpleDB数据存储中的某些东西用作其后端数据库?
SQL Server托管(至少在英国是这样)价格昂贵,因此可以将诸如此类的东西与云文件存储(S3)一起用于构建可以随应用程序增长的应用程序。
理论上很棒,但任何人都可以考虑使用它。实际上,实际上有人愿意将它用于实际的生产软件,因为我很乐意阅读评论。
解决方案
回答
但是,我们真的需要SQL Server吗?我们不能使用PostgreSQL或者MySQL吗?事实证明,两者都可以胜任大多数任务。
现在,如果我们需要SQL Server功能,那么我们就不走运了。
另一种选择是租用服务器。多少钱贵?
(我已经使用Amazon S3来存储应用程序的图像,可以,并且至少可以正常工作)
回答
我没有使用过SimpleDB,但一直在我们的应用程序中使用S3,EC2和MySQL的组合。
只要我们愿意使用SimpleDB,那么我们不妨考虑使用MySQL(它具有很好的可伸缩性,而且并不昂贵)。
在S3和EC2方面,它在实践中也很棒。
回答
这是对Dare对Amazon服务的很好的分析。
S3处理了我通常所说的" blob存储"。典型的Web应用程序通常具有可以通过名称/路径简单访问的媒体文件和其他资源(图像,CSS样式表,脚本,视频文件等)。但是,其中许多资源也具有元数据(例如,YouTube上的视频文件具有有关其分级,上载者,观看次数等的元数据),也需要存储这些元数据。 SimpleDB正是需要可查询的,模式化的存储。EC2提供了一个虚拟服务器,该服务器可用于具有本地文件系统实例的完整计算,如果该虚拟服务器由于任何原因停机,该实例将不会持久。使用SimpleDB和S3,当我们使用EC2提供的计算功能时,便具有构建大型" Web 2.0"样式应用程序的构造块。
但是,S3和SimpleDB都不为仅希望具有典型LAMP或者WISC开发人员经验的开发人员提供构建数据库驱动的Web应用程序的解决方案,也不为那些可能具有定制存储需求而无法完全满足Blob存储或者架构化存储。在无法访问持久文件系统的情况下,亚马逊云计算平台上的开发人员不得不想出复杂的解决方案,其中涉及将数据从EC2手动备份到S3以获得所需的体验。
回答
我刚写完一个库,使将应用程序移植到Perl中的easydb变得容易,Net :: Amazon :: SimpleDB :: Simple因为我发现Amazon客户端库很痛苦。该库尚未在CPAN上使用,但位于http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm上,其目的是使它变得很简单,以免将哈希存入和存出SimpleDB。
我只是移植了一个应用程序来使用它。总体而言,SimpleDB给我留下了深刻的印象……即使效率低下的查询也只需2-3秒即可返回。由于其Erlang / parallel特性,SimpleDB似乎并不在乎表的大小。表格扫描很容易做到这一点。
痛苦来自于这样一个事实,即我们无法进行计数,求和或者分组。如果我们打算做任何事情……那么SimpleDB可能不适合我们。就功能而言,目前它存在于memcached和MySQL之间。我们可以选择SELECT ORDER BY LIMIT,这很好。我们不必自己进行缩放也很高兴,也不必关心我们在其中填充了多少东西。但是,诸如分析之类的更高级的操作充其量是痛苦的。我们必须在服务器端进行自己的计算。另外,在任何计算机上,我都可以使用simpledb CLI http://code.google.com/p/amazon-simpledb-cli/查询我的数据。
有一些令人困惑的"陷阱"。例如,属性可以具有多个值,并且在存储项目时必须显式设置"替换"。同样,存储undef或者null字符串会导致库错误,而不是删除该属性名称/值对或者将其设置为null /空字符串。
学会以一种基本上非标准化的方式思考也有些奇怪,这就是为什么我将上面的建议放在第二位的原因,该建议对新应用程序是最佳的。从SQL应用程序移植到SimpleDB会很痛苦,因为应用程序逻辑必须更改。我们做事的方式有些不同。亚马逊文档非常善于解释这一点。
所有这些都可以从SimpleDB顶部的库中提取出来,因此对于我们使用SimpleDB而言,我们将需要选择一个好的库...我们可能不想直接处理它。在PHP方面有一些工作可以使事情变得容易,并且还有我的库。有一个RAILS活动资源,但似乎对我们没有多大帮助。
总而言之,它还处于游戏初期,但是与其他API相比(想起了一点),我不得不说,SimpleDB REST API非常简单(尤其是考虑到它是XML)并且可以使用。我会推荐它...取决于应用程序要求和使用它的经济性。如果我们希望快速扩展不会给数据库带来很大负担的服务,并且不想使用可伸缩的MySQL /内存缓存组合...,那么SimpleDB可以为我们提供"简单"的解决方案。
我希望它的功能将继续增长,并且它将成为越来越多的应用程序执行更复杂和有趣的事情的一个不错的选择。但是现在,它针对的是典型的Web 2.0服务并适合于我们。
回答
我们几乎仅将SimpleDB用于新项目。零维护,高可用性,无安装方面都太好了。对于Ruby开发人员,请查看SimpleRecord,这是一个类似于SimpleDB的ActiveRecord界面,它非常易于使用。
回答
SimpleDB非常适合许多应用程序。...如果项目需要大量分析报告,加入等,则可以考虑使用MySQL或者混合模型。
如果我们使用SimpleDB,我们已经开发了Radquery.com供内部使用,并向公众开放。