我刚刚写完一个库,以便在 Perl 中轻松地将应用程序移植到 simpledb,Net::Amazon::SimpleDB::Simple,因为我发现 Amazon 客户端库很痛苦。该库尚未在 CPAN 上,但位于 http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm 其想法是让在 SimpleDB 中输入和输出哈希变得微不足道。
我刚刚移植了一个应用程序来使用它。总的来说,SimpleDB 给我留下了深刻的印象……即使是低效的查询也只需 2-3 秒即可返回。由于其 Erlang/并行性质,SimpleDB 似乎并不关心表的大小。表扫描对它来说很容易。
痛苦来自于你无法计算、求和或分组的事实。如果您打算做任何这些事情……那么 SimpleDB 可能不适合您。目前就功能而言,它介于 memcached 和 MySQL 之间。您可以按限制选择订单,这很好。您不必自己扩展它也很好,而且它不在乎您在其中塞入多少东西也很好。但更高级的操作(如分析)充其量是痛苦的。您必须在服务器端进行自己的计算。在任何计算机上我都可以使用 simpledb CLI http://code.google.com/p/amazon-simpledb-cli/ 来查询我的数据,这也是一大优势。
有一些令人困惑的“陷阱”。例如,属性可以有多个值,并且您必须在存储项目时显式设置“替换”。此外,存储 undef 或 null 字符串会导致库错误,而不是删除该属性名称/值对或将其设置为 null/空字符串。
学习以很大程度上未标准化的方式进行思考也有点奇怪,这就是为什么我会支持上面的建议,即它最适合新应用程序。从 SQL 应用程序移植到 SimpleDB 会很痛苦,因为您的应用程序逻辑必须改变。你做事的方式有点不同。亚马逊文档非常擅长解释这一点。
所有这些都可以在位于 SimpleDB 之上的库中提取,因此对于您使用 SimpleDB,您需要选择一个好的库……您可能不想直接处理它。 PHP 方面有一些工作可以让事情变得简单,还有我的库。有一个 RAILS 活动源,但它似乎对你没有多大作用。
总而言之,它仍处于游戏初期,但与其他 API(想到 Twitter)相比,我不得不说 SimpleDB REST API 非常简单(特别是考虑到它是 XML)并且使用起来很有礼貌.我会推荐它...取决于您的应用程序的要求和您使用它的经济性。如果您希望快速扩展一项不会对数据库造成很大负载的服务,并且不想为可扩展的 MySQL/memcache 组合而烦恼……那么 SimpleDB 可以为您提供“简单”的解决方案。
我希望它的功能会继续增长,并且对于越来越多的执行更复杂和有趣的事情的应用程序来说,它将是一个不错的选择。但现在它针对并适合您的典型 Web 2.0 服务。