LoginSignup
5
1

More than 3 years have passed since last update.

DynamoDBと「強力な整合性のある読み込み」とCAP定理のこと

Last updated at Posted at 2017-06-27

  • DynamoDBの参照はデフォルトが結果整合性なのでCAP定理のAP型(一貫性を犠牲にして可用性をとった設計)と紹介されていた。では「強力な整合性のある読み込み」オプションをどう考えたら良いのか?
  • AP型のDynamoDBで、強力な・・・を選べば(+Cで)CAP定理の限界を超えた!な訳はないはず。

CAP定理とは(wikipediaより)

  • ノード間のデータ複製において、同時に次の3つの保証を提供することはできない
  • 一貫性 (Consistency):すべてのデータ読み込みにおいて、最新の書き込みデータもしくはエラーのどちらかを受け取ること
  • 可用性 (Availability):単一障害点が存在しないこと
  • 分断耐性 (Partition-tolerance):通信可能なサーバーが複数のグループに分断されないこと

考えるヒント1

考えるヒント2

考えるヒント3

現時点のアイデア

  • 「強力な整合性」は、分散ノードの値を複数みて比較しないといけないため、値を参照するまでの時間が伸びているという意味で「可用性が落ちている(CP型)」と考える。
  • ネットワークの問題がないときにCA型、ネットワークの問題があるときにAP型になる、と考える。

別の方向から考える

  • MySQLでレプリケーション遅延が起きれば、一貫性が損なわれるのでAP型になっている。(スレーブはCを捨ててAを実現している)
  • 思考実験1)マスターとスレーブの値をすべて取得して、一致したときだけ値を返すようにラップすれば、CP型になる?(一致するまでは結果を返せないのでAを捨てている)
  • 思考実験2)遅延したスレーブは切り捨てて、マスターと遅延していないスレーブだけが値を返すようにラップすれば、CA型になる?(ネットワークの問題により故障していないノードが使えなくなるのでPを捨てている)

その他

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1