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

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 -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

注目のテーマ

ソリューションFLASH

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

トレジャーデータが提供するデジタルマーケター育成の本格的なオンライン教材、その中身とは?
トレジャーデータはzero to oneと共同で開発した、デジタルマーケター育成のためのオンラ...

モバイルニュースアプリの利用者数は4683万人――ICT総研調べ
モバイルニュースアプリ市場はここ数年で大きく拡大し、今後も利用者数の増加が見込まれ...

楽天、AIエージェント「Rakuten AIris」による高精度な拡張ターゲティング広告を提供
楽天は、ビッグデータを分析して消費行動を理解するAIエージェント「Rakuten AIris」を開...