スケーラビリティを犠牲に一貫性を選択可能に

Amazon SimpleDBに一貫性保証の新オプション

2010/02/25

 米Amazon Web Servicesは2月24日、Amazon SimpleDBにデータ読み出し時の一貫性を保証する機能を追加したと発表した。これまでSimpleDBでは読み出したデータが最新のものである保証がなかったが、SelectやGetAttributesの読み出しAPI利用時にオプションで「ConsistentRead=true」を指定することで、確実に最新データを読み出せるようになる。ただし、この場合、読み出しに遅延が発生する。

 ConsistentReadオプションのデフォルト値はfalseなので、特に指定しなければ、従来のアプリケーションはそのまま動く。新機能は、利用者からのフィードバックに基づいて実装したという。

 Amazonのような分散環境では、応答性能を落とさずにシステムをスケールさせるために、ストアしたデータの一貫性を「eventually Consistent」(最終的には一貫性がある)と呼ぶモデルに基づいてシステムを構築している。一貫性を確実に保つためには、ほかのプロセスによる書き換えが同時に発生しないよう、ロック機構などに頼ることになるが、これは大規模分散環境ではパフォーマンス上大きな問題となる。一般に、システム全体でデータの一貫性を高く保つことと、応答性を上げることはトレードオフの関係にある。

Eventually consistent read Consistent read
読み出し遅延 小さい 大きい
読み出し速度 速い 遅い
読み出したデータ 古い可能性あり 常に最新

2つのモデルの違い

 Eventually consistent readでは、読み出したデータが、すでにほかのアプリケーションによって書き換え済みという可能性がある。こうしたデータの矛盾が起こるのは、同じデータに対して1秒以内に複数の操作を行った場合だけという。

 書き込み系のAPI、「PutAttributes」「DeleteAttributes」でも新たに条件付き実行の機能が追加された。特定の属性が指定した値である場合にのみ、操作を行うことができる。この機能を使うことでカウンタを実装することが容易にできるほか、Consistent Readと組み合わせることで、OCC(Optimistic Concurrency Control:楽観的並行性制御)に基づいた処理を容易に実装できるようになるという。

 OCCは、ほとんどのケースでデータ書き換えが衝突しないことが分かっている場合にパフォーマンスを稼ぐアプローチ。ロック機構を使う代わりに、競合が発生していないという楽観的な仮定の元に書き換え操作を行う。実際に競合が検知されたら操作を中止する。こうしたOCCは、同一データに複数ユーザーもしくはアプリケーションが操作を行う可能性があるWebアプリケーションなどで有効だという。

情報をお寄せください:

HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

注目のテーマ

ソリューションFLASH

「ITmedia マーケティング」新着記事

生成AIとAR/VRで失った個性を取り戻す――2025年のSNS大予測(Instagram編)
万能だが特徴のはっきりしない「何でも屋」と化したInstagram。2025年の進化の方向性を予...

「AIネイティブ世代」の誕生 10代のAI活用度合いは?
博報堂DYホールディングスのHuman-Centered AI Instituteは、AIに対する現状の生活者意識...

低品質コンテンツがSEOに与える影響は? 低品質になってしまう4つの原因と改善方法
検索エンジンのランキングアルゴリズムの妨げとなる低品質コンテンツは、検索順位の低下...