タグ

DBと排他に関するi_matsuiのブックマーク (3)

  • SQLAlchemy で悲観的・楽観的排他制御 - Qiita

    SQLAlchemy とは SQLAlchemyは PythonORM で、リレーショナルデータベースをオブジェクトとして扱うとこができるライブラリです。 SQLiteMySQL、PostgreSQLOracle などのデータベースに使用することができます。 導入するメリットとしては、 SQL を直接記述することなく、Python オブジェクトとしてデータベースを操作できる データベースの種類によらず、同一のソースコードで複数のデータベースを併用することができる SQL インジェクション対策がサポートされている などが上げられます。 今回は SQLAlchemy と MySQL を用いて、悲観的・楽観的排他制御を実装していきます。 環境 SQLAlchemy を使用するには、以下のインストールが必要です。括弧内は今回使用したバージョンです。 Python (3.7.3) データベ

    SQLAlchemy で悲観的・楽観的排他制御 - Qiita
  • 悲観ロックと楽観ロックの違い

    排他制御って何?排他制御とは、共有資源に対して同時にアクセスしても問題なく動作できる制御のことをいいます。 排他制御を行うことで共有資源のデータに不整合が起きることを防ぎます。 例えば、ショッピングサイトがあるとします。ショッピングサイトの商品(共有資源)を同時に購入した時、排他制御が行われていないとどうなるのでしょうか。 ① 共有資源の商品を同時に購入共有資源の同じ商品をタイミング的に2人同時に購入する事は、そこまで発生する事ではないかもしれません。ただ人気のショッピングサイトであればあるほど、その可能性は高くなります。 ② 在庫を確認するまず購入した商品の在庫が残っているか確認します。今回の例では在庫は残り"10"とします。 ③ 在庫を減らす次に在庫を減らします。在庫の残りは"10"なので、1つ減らして"9"にします。 スポンサーリンク ここで問題になるのは、排他制御をしていない為、同

    悲観ロックと楽観ロックの違い
  • 排他制御(楽観ロック・悲観ロック)の基礎  - Qiita

    排他制御とは 共有資源(データやファイル)に対して複数のアクセスが見込まれる場合に、同時アクセスにより不整合が発生することを防ぐため、あるトランザクションが共有資源(データやファイル)にアクセスしている時は他トランザクションからはアクセスできないようにして直列に処理されるように制御すること。 ■同時アクセスによる不整合の例 ■排他制御をすることで整合性を保つ 排他制御の方式 排他制御の実現方式はいくつか存在するが、ここでは代表的な楽観ロック(楽観的排他制御)と悲観ロック(悲観的排他制御)を紹介する。 楽観ロック(楽観的排他制御) 楽観ロックとは、めったなことでは他者との同時更新は起きないであろう、という楽観的な前提の排他制御。データそのものに対してロックは行わずに、更新対象のデータがデータ取得時と同じ状態であることを確認してから更新することで、データの整合性を保証する方式。楽観ロックを使用

    排他制御(楽観ロック・悲観ロック)の基礎  - Qiita
  • 1