Perl でアプリケーションを simpledb に簡単に移植できるようにするためのライブラリー、Net::Amazon::SimpleDB::Simple を書き終えたところです。このライブラリはまだ CPAN にはありませんが、http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm にあります。アイデアは、SimpleDB にハッシュを出し入れするのを簡単にすることでした。
私はそれを使用するためにアプリを移植しました。全体として、SimpleDB には感心しています...非効率的なクエリでさえ、返されるのに 2 ~ 3 秒しかかかりません。SimpleDB は、Erlang/parallel の性質により、テーブルのサイズを気にしていないようです。テーブルスキャンは簡単です。
痛みは、数えることも、合計することも、グループ化することもできないという事実から来ています。これらのいずれかを実行する予定がある場合は、SimpleDB はおそらく適していません。現時点では、機能的には memcached と MySQL の間のどこかに存在します。SELECT ORDER BY LIMIT を選択できます。これは便利です。また、自分でスケーリングする必要がないのも素晴らしいことです。しかし、分析のようなより高度な操作は、せいぜい苦痛です。サーバー側で独自の計算を行う必要があります。また、どのコンピューターでも simpledb CLI http://code.google.com/p/amazon-simpledb-cli/を使用してデータをクエリできることも大きなプラスです。
紛らわしい「落とし穴」がいくつかあります。たとえば、属性は複数の値を持つことができ、アイテムを保存するときに明示的に「置換」を設定する必要があります。また、その属性の名前/値のペアを削除したり、null/空の文字列を設定したりする代わりに、undef または null 文字列を格納すると、ライブラリ エラーが発生します。
大部分が正規化されていない方法で考えることを学ぶことも少し奇妙です。そのため、新しいアプリケーションに最適であるという上記の提案を支持します。SQL アプリから SimpleDB への移植は、アプリケーション ロジックを変更する必要があるため、骨の折れる作業です。やり方が少し違います。アマゾンのドキュメントは、これを説明するのにかなり適しています。
これらはすべて、SimpleDB の上にあるライブラリーで抽出可能であるため、SimpleDB を使用するためには、適切なライブラリーを選択する必要があります... おそらく直接処理したくないでしょう。作業を簡単にするための PHP 側の作業がいくつかあり、私のライブラリーがあります。RAILS アクティブソースがありますが、あまり効果がないようです。
全体としてはまだ初期段階ですが、他の API (Twitter が思い浮かびます) と比較すると、SimpleDB REST API は非常に単純であり (特に XML であることを考えると)、礼儀正しく使用できると言わざるを得ません。アプリケーションの要件と使用の経済性に応じて...お勧めします。DB に大きな負荷をかけず、スケーラブルな MySQL/memcache コンボに煩わされたくないサービスを迅速にスケーリングすることを検討している場合は、SimpleDB が「シンプルな」ソリューションを提供できます。
私は、その機能が成長し続け、より複雑で興味深いことを行うより多くのアプリケーションにとって良い選択になることを期待しています. しかし、現時点では、典型的な Web 2.0 サービスを対象としており、それに適しています。