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

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大学」を公開
2024年3月より提供している店舗運営支援ツール「RMS AIアシスタント β版」に加え、AIツ...

中国発AIソーシャル工作のゾッとする実態をMicrosoftがレポート
Microsoftが中国を拠点とする影響力工作の増加についてのレポートを発表した。これは米国...

顧客の応募可能性をレシートで分析 読売新聞が新たな販促キャンペーンサービスを提供
システムインテグレーターのビーマップと同社子会社のMMSマーケティングは、読売新聞東京...