亚马逊简单数据库

13

有没有人考虑使用像亚马逊SimpleDB数据存储这样的东西作为后端数据库?

SQL Server托管(至少在英国)很昂贵,因此是否可以与云文件存储(S3)一起使用,以构建可以随着应用程序增长的应用程序。

理论上很好,但是否有人考虑使用它。实际上,有没有人正在现实生产软件中使用它,因为我很想阅读您的评论。

6个回答

14

这是一篇对亚马逊服务的很好分析,作者是 Dare

S3 处理了通常被描述为“大块存储”的内容。一个典型的 Web 应用程序通常会有媒体文件和其他资源(图片、CSS 样式表、脚本、视频文件等),只需通过名称/路径访问即可。然而,这些资源中很多也有元数据(例如 YouTube 上的视频文件有关于评级、上传者、观看次数等的元数据),需要进行存储。这种需要可查询的模式化存储的需求是 SimpleDB 发挥作用的地方。EC2 提供了一个虚拟服务器,可以用于计算,包括一个本地文件系统实例,如果虚拟服务器因任何原因关闭,则不具持续性。使用 SimpleDB 和 S3,您就有了构建大量“Web 2.0”风格应用程序的基本组件,当您将 EC2 提供的计算能力加入到其中时。

然而,S3 和 SimpleDB 都无法为想要构建基于数据库的 Web 应用程序或具有自定义存储需求并不适合大块存储或模式化存储桶的开发人员提供解决方案。在没有持久性文件系统的情况下,亚马逊云计算平台上的开发人员必须想出复杂的解决方案,包括手动从 EC2 备份数据到 S3 以获得所需的体验。


11

我刚写完了一个库,名为Net::Amazon::SimpleDB::Simple,用于将Perl应用程序迁移到SimpleDB,因为我发现Amazon的客户端库很痛苦。虽然该库还没有在CPAN上发布,但你可以在http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm找到它。我的想法是轻松地将哈希值存入和取出SimpleDB。

我刚刚将一个应用程序移植到使用这个库。总的来说,我对SimpleDB印象深刻......即使是低效的查询也只需要2-3秒就能返回结果。SimpleDB似乎不关心你的表的大小,这归功于其Erlang/并行性质。它很容易进行表扫描。

问题在于,你无法计算、求和或分组。如果你计划做任何这些事情......那么SimpleDB可能不适合你。目前,在功能方面,它介于memcached和MySQL之间。您可以SELECT ORDER BY LIMIT,这很好。它也很好,你不必自己扩展它,而且它不在意你存储了多少数据。但更高级的操作,如分析,最好是非常麻烦的。你将不得不在服务器端进行自己的计算。此外,任何电脑都可以使用SimpleDB CLI http://code.google.com/p/amazon-simpledb-cli/查询我的数据,这也是一个很大的优点。

有一些让人困惑的“陷阱”。例如,属性可以具有多个值,并且在存储项时必须明确设置“replace”。此外,存储未定义或空字符串会导致库错误,而不是删除该属性名称/值对或设置为空/空字符串。

学会以一种大部分未规范化的方式思考也有点奇怪,这就是为什么我赞成上面提到的建议,认为它最适合新应用程序。从SQL应用程序移植到SimpleDB将很痛苦,因为您的应用程序逻辑将不得不更改。你做事情的方式有些不同。Amazon的文档在解释这方面非常好。

所有这些都可以在一个坐落在SimpleDB之上的库中提取,因此对于您使用SimpleDB,您将需要选择一个好的库...您可能不想直接处理它。在PHP方面有一些工作来使事情变得容易,并且有我的库。有一个RAILS活动源,但似乎对您没有什么帮助。

总的来说,与其他API(Twitter就是一个例子)相比,我必须说SimpleDB REST API非常简单(特别是考虑到它是XML),并且易于使用。我会推荐它...具体取决于您的应用程序要求和使用经济。如果您想快速扩展不会对数据库造成巨大负载并且不想麻烦一个可扩展的MySQL/memcache组合的服务...那么SimpleDB可以为您提供“简单”的解决方案。

我期望它的功能将继续增长,并且将成为越来越多执行更复杂和有趣操作的应用程序的良好选择。但是现在它针对并适合于您典型的Web 2.0服务。


3

我们几乎完全使用SimpleDB来进行新项目。零维护、高可用性和无需安装的特点太棒了。对于你的Ruby开发人员,请查看SimpleRecord,这是一个针对SimpleDB的ActiveRecord类似接口,使其非常易于使用。


0

SimpleDB 对于许多应用程序来说非常有效... 如果您的项目需要大量的分析报告、连接等功能,您可以考虑使用 MySQL 或混合模型。

如果您选择 SimpleDB,我们已经为内部使用开发了 Radquery.com,并向公众开放。


0

但是你真的需要SQL Server吗?不能使用PostgreSQL或MySQL吗?这两个数据库已经被证明对于大多数任务来说都足够好了。

现在,如果你需要SQL Server的特性,那么你就没办法了。

另一个选择是租用服务器。贵到什么程度算贵呢?

(我曾经使用Amazon S3来存储应用程序的图片,它还不错,至少对于那个应用程序来说是可以的)


0

我没有使用过SimpleDB,但我们的应用程序一直在使用S3、EC2和MySQL的组合。

只要你愿意使用SimpleDB,那么你也可以考虑使用MySQL(它非常可扩展,而且不是很昂贵)。

在S3和EC2方面,实践证明也非常好。


RDS > MySQL 相当昂贵! - Jasper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接