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

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アプリケーションなどで有効だという。

情報をお寄せください:

TechTargetジャパン

リッチクライアント & 帳票 フォーラム 新着記事
  • 家電のUIになるブラウザ (2012/2/3)
    未来の家電はインターネットに接続でき、ブラウザが内蔵されてくる。家電にブラウザが載ったらどうなるか? 未来のホームネットワークを想像しよう
  • 「汎用のUI技術」として広がるHTML5 (2012/2/2)
    すさまじい勢いで成長しているHTML5を中心としたオープンなWebプラットフォーム。HTML5やAPI、Webブラウザのアップデート情報をお伝えする
  • ビヨンド・クールジャパン!? (2012/1/27)
    コンテンツという文化力と、ものづくりという技術力を掛け合わせる。両方を国内に持ち合わせている国は多くない。チャンスなのだ
  • Qt5で10億人ユーザーへ、OSSコミュニティ化で健在に (2012/1/20)
    ノキアから売却されてQtはどうなったのか? 弱体化してしまうのではとの心配をよそにダウンロード数は飛躍的に伸びている

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

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH