有没有人考虑过使用Amazon SimpleDB数据存储区的东西作为后端数据库?
SQL Server托管(至少在英国)是昂贵的,因此可以使用类似这样的东西以及云文件存储(S3)来构建可随应用程序增长的应用程序.
理论上很棒但是有人会考虑使用它.事实上,现在有人真正将它用于真正的制作软件,因为我很乐意阅读你的评论.
这是对Dare的亚马逊服务的一个很好的分析.
S3处理了我通常所说的"blob存储".典型的Web应用程序通常具有媒体文件和其他资源(图像,CSS样式表,脚本,视频文件等),只需通过名称/路径访问即可.然而,许多这些资源也具有元数据(例如,YouTube上的视频文件具有关于其评级,上载者,视图数量等的元数据),这些元数据也需要存储.对可查询,模式化存储的需求是SimpleDB的用武之地.EC2提供了一个虚拟服务器,可以用于完成计算,本地文件系统实例如果虚拟服务器由于任何原因而关闭,则不是持久性的.使用SimpleDB和S3,您可以构建一个大型的"Web 2.0"构建块 投入EC2提供的计算功能时的样式应用程序.然而,S3和SimpleDB都没有为开发人员提供解决方案,他们只需要建立数据库驱动的Web应用程序的典型LAMP或WISC开发人员体验,或者为可能具有不适合blob存储桶的自定义存储需求的应用程序提供解决方案.模式化存储.无法访问持久性文件系统,亚马逊云计算平台上的开发人员不得不提出复杂的解决方案,包括从EC2到S3手动备份数据以获得所需的体验.然而,S3和SimpleDB都没有为开发人员提供解决方案,他们只需要建立数据库驱动的Web应用程序的典型LAMP或WISC开发人员体验,或者为可能具有不适合blob存储桶的自定义存储需求的应用程序提供解决方案.模式化存储.无法访问持久性文件系统,亚马逊云计算平台上的开发人员不得不提出复杂的解决方案,包括从EC2到S3手动备份数据以获得所需的体验.然而,S3和SimpleDB都没有为开发人员提供解决方案,他们只需要建立数据库驱动的Web应用程序的典型LAMP或WISC开发人员体验,或者为可能具有不适合blob存储桶的自定义存储需求的应用程序提供解决方案.模式化存储.无法访问持久性文件系统,亚马逊云计算平台上的开发人员不得不提出复杂的解决方案,包括从EC2到S3手动备份数据以获得所需的体验.
我刚刚编写了一个库来将应用程序移植到perl easy,Net :: Amazon :: SimpleDB :: Simple中的simpledb,因为我发现亚马逊客户端库很痛苦.该库尚未在CPAN上,但它位于http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm. 这个想法是为了简化进出SimpleDB的哈希值.
我刚刚移植了一个应用程序来使用它.总的来说,我对SimpleDB印象深刻......即使效率低下的查询也只需2-3秒即可返回.SimpleDB似乎并不关心表的大小,因为它具有Erlang/parallel性质.Tablescans很容易.
痛苦来自于你无法计算,总结或分组的事实.如果你打算做任何这些事情......那么SimpleDB可能不适合你.目前在功能方面,它存在于memcached和MySQL之间.你可以选择ORDER BY LIMIT,这很好.它也很好,你不必自己扩展它,它很好,它不关心你有多少东西.但是像分析这样的更高级的操作充其量是痛苦的.你必须自己做计算服务器端.它也是一个很大的优势,在任何计算机上我都可以使用simpledb CLI http://code.google.com/p/amazon-simpledb-cli/来查询我的数据.
有一些令人困惑的'陷阱'.例如,属性可以有多个值,并且在存储项目时必须显式设置"替换".此外,存储undef或null字符串会导致库错误,而不是删除该属性名称/值对或将其设置为null/empty字符串.
学习用很大程度上不规范化的方式思考也有点奇怪,这就是为什么我会在上面提出的建议中说它最适合新的应用程序.从SQL应用程序移植到SimpleDB会很痛苦,因为您的应用程序逻辑必须改变.你做事的方式有点不同.亚马逊文档非常善于解释这一点.
所有这些都可以在SimpleDB上面的库中提取,因此对于SimpleDB的使用,你需要选择一个好的库......你可能不想直接处理它.PHP方面有一些工作可以让事情变得简单,而且还有我的库.有一个RAILS活动源,但它似乎没有为你做太多.
总而言之,它还处于游戏的早期阶段,但与其他API相比(我想到了twitter),我不得不说SimpleDB REST API非常简单(特别是考虑到它是XML)并且很有礼貌.我会推荐它......取决于您的应用程序的要求和您使用它的经济性.如果您希望快速扩展一个不会给数据库带来很大负担并且不想使用可扩展的MySQL/memcache组合的服务......那么SimpleDB可以为您提供"简单"的解决方案.
我希望它的功能将继续增长,对于做更复杂和有趣的事情的越来越多的应用程序来说,它将是一个不错的选择.但是现在它的目标是适合您典型的Web 2.0服务.