Amazon の SimpleDB が一貫した読み取りと条件付きの更新/削除を実装するようになったので、MVCC を使用してクロスドメイン トランザクションを実装することが可能になります。
それを提供するクライアント ライブラリはありますか?
Amazon の SimpleDB が一貫した読み取りと条件付きの更新/削除を実装するようになったので、MVCC を使用してクロスドメイン トランザクションを実装することが可能になります。
それを提供するクライアント ライブラリはありますか?
現状ではございませんので、ご利用いただけない可能性がございます。
条件付きの更新と削除では、更新中のアイテムに条件を設定することしかできません。これに加えて、同じデータの複数のバージョンを保存したり、多値属性のシーケンス情報を保存したりする組み込みのメカニズムはありません。異なる属性名を使用できますが、これによりクエリが中断されます。
最近の一貫性の更新により、アイテム レベルでのトランザクションの実装が容易になりました。ただし、同じ (または異なる) ドメイン内の複数の項目にわたって、単純な実装はありません。また、分離レベルのオプションはありません。
可能かもしれませんが、その過程ですべてのクエリ機能を無効にしてしまうのではないかと心配しています。一貫性のない属性名が原因であるか、または良好なパフォーマンスで許容されるよりも多くの SELECT 条件が必要になっている可能性があります。
それを超えて、データへのすべてのアクセスに対して一貫した読み取りが必要になるようです。レプリカ ノードが 1 つでも到達できない場合、一貫性のある読み取りが失敗するため、これにより、結果的に一貫性のあるシステムを使用することによる可用性の利点がすべて無効になる可能性があります。
私は否定論者になろうとしているのではなく、それがどれほど実用的か疑問に思っています。SimpleDB の高可用性を得るには、すでに多くの機能を放棄する必要があります。それらの機能が必要ない場合はそれで問題ありませんが、高可用性も放棄する場合は、そうなるケースはかなり少なくなると思います。良いトレードオフになります。
SimpleDB の Simple Savant C# ライブラリに取り組んでいる間、このことについてよく考えました。SimpleDB のような分散システムで真のトランザクション性をレイヤー化しようとすることは、さまざまな理由から悪い考えであるという結論に達しました。
私が思いついた最高のもの (システムを過度に約束したり複雑化したりすることなく価値を提供するもの) は、私が「信頼できる書き込み」と呼んでいるものです。これにより、クロスドメイン更新のすべての操作 (put および delete) が最終的に完了することが保証されます。書き込みの一部が永続的に失敗する唯一の方法は、更新の 1 つが SimpleDB の制約に違反した場合です。
この機能はまだ実装されていませんが、ここで詳細を確認し、機能についてコメントすることができます。あなたの考えと、これがアプリケーション開発者としてのあなたのニーズをどのように満たすかを知りたいです。