タグ

2017年3月2日のブックマーク (2件)

  • RESTに関する3つの間違い

    楽観的排他制御を利用する非同期的なトランザクション実行であればスケーラビリティを損ねることなく2phase commitが可能である。これは、分散KVSにおけるスケーラビリティと一貫性の両立について で主張したように、同期的な2phase commitは密結合に誘導することになるため、矛盾するように思えるかもしれない。だがそんなことはない。 前半はまずこの話から入るが、後半ではRESTに関する間違いについて、3つほど思うところを述べたい。 楽観的排他制御と2phase commit reflexworksではFeedやEntry単位でatomicなトランザクション処理を行えるが2phase commitはサポートしていない。これを許すと密結合になってスケールしないからである。だが、これはあくまで同期的な処理の話であって、ネットワーク障害への耐性を考慮され、非同期処理やオフラインで使えるので

    RESTに関する3つの間違い
  • 悲観的排他制御と楽観的排他制御-同時更新の対処方法 | アイビースター

    プログラムの処理方法で一つのデータを複数人で更新したときのトラブル防止として、「悲観的排他制御」と「楽観的排他制御」があります。下記にその解説用の図を書いてみます。 複数人による同時更新トラブル データベースのあるデータを複数人で更新することがあります。その更新を同時に行った場合どのようなことが起こるでしょう。 例えばユーザーAがデータベース(DB)内のIDが12のデータを更新しようとします。既存のデータを取得し、ある項目を「犬」と入力しました。この時点ではDBのデータは変わっていません。 ユーザーAがデータを取得した後にユーザーBが同じIDが12のデータを取得し、同じ項目を「」と入力しまし、ユーザーAよりも早くDBを更新しました。DBのID:12のデータは「」が入っています。 ユーザーBがDBのデータを更新した後、ユーザーAがデータを更新するとDBのID:12のデータは「犬」に変わり

    悲観的排他制御と楽観的排他制御-同時更新の対処方法 | アイビースター