タグ

2018年3月8日のブックマーク (6件)

  • Rails4で楽観的ロックを実装する - Rails Webook

    ActiveRecordでは、lock_versionというカラムを追加するだけで楽観的ロックを利用できます。 レコード単位でlock_versionを保持しているため、レコード単位での更新が競合した場合、ActiveRecord::StaleObjectError例外が発生します。 動作確認 Rails 4.1 ActiveRecord 4.1 目次 楽観的ロックとは 楽観的ロック(ロックバージョン)の実装 楽観的ロックの使い方 楽観的ロックを画面から扱う 1. 楽観的ロックとは楽観的ロックとは、基的には変更が競合しないだろうという状況に向いたロック手法です。 テーブルにロックバージョンカラムを持たせ、レコードを変更するたびにロックバージョンを更新し、更新しようとしたときにロックバージョンが異なっている場合には、更新の競合が発生したと判断しレコードを更新しないようにします。 Activ

    Rails4で楽観的ロックを実装する - Rails Webook
  • Rails4で悲観的ロックを実装する - Rails Webook

    ActiveRecordでは、lockとやlock!メソッドを使うことで悲観的ロックを実現することができます。 ロック自体は、基的にはSELECT … FOR UPDATEが発行されてロックがされますが、DBに依存するので実際に発行されるSQLコードを確認することが大切です。 動作確認 Rails 4.1 ActiveRecord 4.1 mysql2 0.3.7 MySQL Server 5.6.21 Mac OS X 10.10 目次 悲観的ロックとは MySQLの設定とモデルの準備 悲観的ロックの使い方 (WIP)悲観的ロックのテスト 悲観的ロックとは悲観的ロックとは、競合が発生する可能性が十分あるという状況に向いたロック手法です。 DB側でレコードをロックし、ロックされたレコードを更新できないようにします。 あまりに競合が発生する場合には、ロックにより処理が待たされる時間が多くな

    Rails4で悲観的ロックを実装する - Rails Webook
  • 楽観的ロックと悲観的ロック - Qiita

    Railsだと、lock_versionのやつ。 ブラウザでの見え方 ブラウザでの見え方(まあ実装次第だけど、だいたいこんな感じで実装する) AさんがHoge更新画面を開く。 BさんもHoge更新画面をAさんが開いている間に開く。 AさんがHogeを更新。 Bさんが少し遅れてHogeを更新。 Bさんに誰かが更新してしまっていることを伝えるメッセージを出す。 このように、更新のタイミングで、おやおや!とわかるのが 楽観的ロック。 参考 いわゆるSELECT FOR UPDATEのやつ。 トランザクションで実現。 誰もSELECT FOR UPDATEされたやつが解放されるまで何もできなくなる。 参考 http://ruby-rails.hatenadiary.com/entry/20141210/1418207618 http://atamoco.boy.jp/kogoto/work/ora

    楽観的ロックと悲観的ロック - Qiita
  • Spring-Sessionを使ってみた - Qiita

    Tomcatセッションを外部ストレージに置き換える場合にどうしてもTomcat側で難しい設定をしたり、ライブラリを配置したりで億劫になることが多かった。 pom.xmlにdependencyを追加したら置き換わるくらいの簡単なもので、且つセッションストレージがRedisとなるものを探していた。 そんなところにSpringのリリースブログで今月初めにこんな記事を見つけた。 Spring Session 1.0.0.RELEASE TODO (2015/04/14追記) あとでまとめる CookieHttpSessionStrategyにバグがあるため@EnableRedisHttpSession#maxInactiveIntervalInSecondsの値が反映されない → https://github.com/spring-projects/spring-session/issues/10

    Spring-Sessionを使ってみた - Qiita
  • Spring BootでSpring Data Redisを利用する - Qiita

    まずは動かす 依存関係の追加 mavenの場合pomにspring-boot-starterとspring-boot-starter-redisを追加する。 Spring Data デフォルトではJedisを利用してRedisにアクセスする。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.0.M5</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dep

    Spring BootでSpring Data Redisを利用する - Qiita
  • コンテナ・デザイン・パターンの論文要約  - Qiita

    Brendan Burns, David Oppenheimerらの論文「Design patterns for container-based distributed systems」を読んで、コンテナを活用したシステム設計や開発に、とても有用と感じたので、図を中心にした要約にしてみた。 要約内容に誤りや理解不足な部分もあると思うので、原文も参照していただきたい。また、自身の理解のために、論文中に無い図を加えた点、独自の注釈も加えている。 背景 コンテナ化されたソフトウェアコンポーネントから構築されたマイクロサービスアーキテクチャの人気が高まり、分散システム開発においても同様の革命が起っている。 コンテナの境界の壁は、分散システムの基的なオブジェクトの境界に適している。そこで、コンテナを活用して、コードの低レベルの詳細を抽象化し、アプリケーションやアルゴリズムに共通する高レベルのパター

    コンテナ・デザイン・パターンの論文要約  - Qiita