並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 19 件 / 19件

新着順 人気順

排他制御の検索結果1 - 19 件 / 19件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

排他制御に関するエントリは19件あります。 データベース、 ロック、 qiita などが関連タグです。 人気エントリには 『排他制御の基礎の基礎』などがあります。
  • 排他制御の基礎の基礎

    はじめに システムに存在するリソースには同時にアクセスしてはいけないものが多々あります。身近な例を挙げると、Ubuntuのパッケージ管理システムのデータベースがあります。aptコマンドの動作によってこのデータベースは更新されるのですが、同時に2つ以上のaptが動作できたとすると、データベースが破壊されてシステムが危機的状況に陥ります。 このような問題を避けるために、あるリソースに同時に1つの処理しかアクセスできなくする排他制御というしくみがあります。排他制御はOSが提供する重要な機能の一つです。 排他制御が必要なケース 排他制御は直感的ではなく非常に理解が難しいのですが、ここでは比較的理解が簡単なファイルロックというしくみを使って説明します。説明には、あるファイルの中身を読みだして、その中に書いてある数字に1を加えて終了するincというという単純なプログラムを使います。

      排他制御の基礎の基礎
    • 排他制御のためだけに Redis 渋々使ってませんか?データベース単独でアドバイザリーロックできるよ!

      トランザクション分離レベルについての教養があったほうがこの記事の内容を理解しやすいため,必要に応じてまず以下を参照されたい。 背景 以前, Qiita で以下の記事を投稿した。今回の議題に直接的な関係はないが,関連している部分があるため引用する。 MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基本的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。

        排他制御のためだけに Redis 渋々使ってませんか?データベース単独でアドバイザリーロックできるよ!
      • 排他制御を行う GitHub Action を作った

        弊社では GitHub のレポジトリ管理に Terraform GitHub provider を使用しています。 いちいち手元で terraform plan や terraform apply を叩くのは面倒なので、 GitHub Actions を利用することを考えました。 tf ファイルと現実のリソースとの不整合を避けるために、 これらのコマンドは排他的に実行する必要があります。 例えば terraform apply を実行している最中に terraform plan を実行することはできません。 ここで問題になってくるのが GitHub Actions のジョブ並列数です。 2020-12-30 現在、GitHub Actions は同時に 20 並列まで実行可能ですが、逆に並列数を制限できないという贅沢な悩みがあります。 一応 Matrix Build の並列数を制限するオプ

        • 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 - Qiita

          大学の授業で講義資料を作ったので,Qiitaにも展開しておきます. 背景: クロック周波数の停滞とコア数の増加 コンピュータはクロック周波数に同期して計算をします.おおむね1秒間にクロック周波数の数で示されるだけの数の機械語命令を実行できると考えると良いです.たとえばクロック周波数が1GHzであれば,1GHz=1,000MHz=1,000,000(百万)kHz=1,000,000,000(10億)Hzですので,1秒間に1,000,000,000(10億)個の機械語命令を実行できるというような感じです.もちろんこれは概算です. いわゆるヘネパタ本(J. L. Hennessy & D. A. Patterson: Computer Architecture: A Quantitative Approach, 6th edition. Morgan Kaufmann, 2017; 邦訳 中條・

            並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 - Qiita
          • 排他制御(楽観ロック・悲観ロック)の基礎  - Qiita

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

              排他制御(楽観ロック・悲観ロック)の基礎  - Qiita
            • システム障害が帰宅ラッシュを直撃、東武東上線を止めた「排他制御」のバグ

              2019年9月25日、東武東上線にトラブルが次々と起こった。人身事故やシカの衝突といった出来事が同日に発生。そのうえ「運行管理システム」まで不具合を起こした。原因は排他制御のバグで、導入19年目に初めて顕在化したものだった。影響は約5万4000人、遅延は最大6時間14分に及んだ。 「運転再開を見込んでおりません」。2019年9月25日、東武東上線成増駅の掲示板に出ていた文言がツイッターで大きな話題となった。 この日、東武東上線はダイヤの大幅な乱れにより、沿線各駅の構内は電車に乗れなかった人々であふれかえっていた。普通は「運転の再開時刻は未定です」などと赤い字で書かれた案内が出るが、成増駅では冒頭のように風変わりな表現となってしまった。運転再開の見通しが立たないことによる混乱ぶりがうかがえる。 東武東上線は同日、池袋-小川町駅間で運転を見合わせ、上下線で合計103本が運休。午後に最大で6時間

                システム障害が帰宅ラッシュを直撃、東武東上線を止めた「排他制御」のバグ
              • オージス総研が顧客システムの不具合で開発元を提訴、排他制御は「技術常識」と認定

                オージス総研はオリックス向けシステムでのトラブルを巡り、開発元の両毛システムズを訴えた。裁判で焦点となったのは、データの排他制御機能の扱いである。前橋地方裁判所は一審判決で排他制御機能の具備を「技術常識」と断定。「考慮する役割はもっぱら開発者」として両毛システムズの債務不履行を認めた。両毛システムズに4億1047万円の支払いを命じたが、両社とも控訴した。 大阪ガス子会社のオージス総研はオリックスから受注したシステム開発プロジェクト(オリックス案件)におけるトラブルを巡り、同業の両毛システムズを提訴した。オージス総研の発注を受けて両毛システムズが開発したシステムに瑕疵(かし)があったとして債務不履行などに基づく損害賠償、さらにはオージス総研がプロジェクト途中で両毛システムズを支援した業務に対する報酬の支払いを求めた。その額は損害賠償が21億9561万円、報酬が12億1390万円の計34億円超

                  オージス総研が顧客システムの不具合で開発元を提訴、排他制御は「技術常識」と認定
                • AWS DynamoDBで楽観的排他制御(楽観的ロック)をやってみた | DevelopersIO

                  楽観的排他制御(楽観的ロック)とは、同時アクセスによるデータの不整合を防ぐ排他制御(ロック)の手段です。バージョン番号や更新日時を利用して、データを取得してから更新するまでの間、データが変更されていないことを確認することで整合性を保ちます。対照に悲観的排他制御(悲観的ロック)では、データを取得する際にロックをかけることで整合性を保ちます。 DynamoDBでは楽観的排他制御を実装できます。また、DynamoDBのトランザクションでは楽観的排他制御が採用されています。 DynamoDBで楽観的排他制御 AWS LambdaでDynamoDBのデータを更新する際に、条件付き書き込みを使用してバージョン番号で楽観的排他制御を実装してみます。 DynamoDBに商品テーブルProductを作成して次のデータを格納しておきます。 productName(PK) stock version Lambd

                    AWS DynamoDBで楽観的排他制御(楽観的ロック)をやってみた | DevelopersIO
                  • 排他制御のためだけに渋々 Redis 使ってませんか?

                    MySQL/Postgres におけるトランザクション分離レベル - Speaker Deck https://speakerdeck.com/mpyw/postgres-niokerutoranzakusiyonfen-li-reberu 上記からの続編です。 排他制御のためだけに Redis 渋々使ってませんか?データベース単独でアドバイザリーロックできるよ! https://zenn.dev/mpyw/articles/rdb-advisory-locks 上記の記事を解説する補佐的なスライドとして,株式会社ゆめみの社内勉強会にて発表しました。

                      排他制御のためだけに渋々 Redis 使ってませんか?
                    • アプリのコンテナ化と排他制御 ~ データ 破壊 だ ï¾– 全員集合

                      Kubernetes Meetup Tokyo #36のLT資料です。 https://k8sjp.connpass.com/event/196212/

                        アプリのコンテナ化と排他制御 ~ データ 破壊 だ ヨ 全員集合
                      • æ–°Linuxカーネル解読室 - netfilterにおける排他制御 - VA Linux エンジニアブログ

                        「Linuxカーネル2.6解読室」(以降、旧版)出版後、Linuxには多くの機能が追加され、エンタープライズ領域をはじめとする様々な場所で使われるようになりました。 それに伴いコードが肥大かつ複雑化し、多くのエンジニアにとって解読不能なブラックボックスとなっています。 世界中のトップエンジニア達の傑作であるLinuxカーネルにメスを入れ、ブラックボックスをこじ開けて、時に好奇心の赴くままにカーネルの世界を解読する「新Linuxカーネル解読室」プロジェクト。 1. はじめに 1.1. RWロックとRCUのおさらい 2. netfilterについて 2.1. netfilterのデータ構造・実装 2.2. ルールの参照 2.3. ルールの追加・更新 3. RWロック・RCUの比較 3.1. RWロックで保護した場合 3.1.1. 競合区間の保護 3.2. RCUで保護した場合 3.3. 更新処

                          新Linuxカーネル解読室 - netfilterにおける排他制御 - VA Linux エンジニアブログ
                        • 【Goのやさしい記事】goroutineと排他制御を10分で入門しよう! - Qiita

                          はじめに この記事ではgoroutineおよび関連性の高いsyncパッケージの基本知識や使い方をまとめます。 Goの基本的な文法はざっと触れたが、「goroutine」、「WaitGroup」、「channel」、「Mutex」などの言葉を聞いて全く心配ないとは言い切れない人向けの記事です。 残念ながら、メモリやCPU、プロセスなどのOSに近いところまでは踏み入れません。 goroutineは簡単だとよく聞きますが、そもそも並行処理そのものが難しいので1つずつ理解してきましょう! 本記事での動作確認環境は以下です。 Goでの並行処理 ネットワーク通信などで待ち時間の大きい処理を非同期に行いたい、直列で動作させる必要がない処理群を高速に終わらせたいなどを理由に並行処理を使うことが多いと思います。 Goではgoroutineと呼ばれる軽量スレッドを簡単に動かせます。 なぜ「軽量」か メモリ消費

                            【Goのやさしい記事】goroutineと排他制御を10分で入門しよう! - Qiita
                          • マルチスレッド、排他制御ってなに? - Qiita

                            はじめに 特に組み込み系開発者なら超絶便利でよく利用するので、ドはまりして必死の調査により理屈を覚えた人も多数いるであろうマルチスレッドプログラミング。今回は本件について出来るだけかみ砕いて説明したいと思います。 記事の主題は以下となります。 プロセス/スレッドってなに? 排他制御ってなんで必要なの? その他注意点や排他を減らす手段の紹介 プロセス/スレッドってなに? プロセス: main関数で動くプログラム 以前ライブラリの説明をした際に、プログラムはmain関数や使用するデータによって実現すると記載させてもらいました。このプログラムを実行すると、このプログラムの情報が全てメモリ上に展開され、利用されます。この展開された情報をひとまとめにしてプロセスと呼んでいます。 実行されたプログラムのことをプロセスと呼ぶので、例えば同じプログラムを2回実行すると、2つのプロセスが出来ることになります

                              マルチスレッド、排他制御ってなに? - Qiita
                            • 排他制御でGoogle Apps Scriptを安全に実行【GAS】 - 🌴 officeの杜 🥥

                              G Suiteの大きな特徴の1つとして、複数名同時に同一ドキュメントに対して作業が出来るコラボレーション機能です。ですが、例えばスプレッドシート上で大きなコピペをするスクリプトを複数名が同時に使った場合、ややこしい事になってしまいます(更に言えば連番を取って付け加える場合、番号がめちゃくちゃになります)。 そこで使用するのが排他制御。排他制御とは別の誰かが実行している場合には、そのスクリプトの実行をロックさせてしまう機能で、一方が実行中はもう一方はその実行を待たせる機能です。指定した秒数以上待たされた場合には、エラーが発生するので、通常try〜catch文も合わせて使用するのが定石です。 排他制御には3種類のタイプがあります。 今回使用するスプレッドシート 排他制御サンプル1 - 3種類の排他制御コードが入っています(ライブラリ元でもある) 排他制御サンプル2 - スクリプトロックをサンプ

                                排他制御でGoogle Apps Scriptを安全に実行【GAS】 - 🌴 officeの杜 🥥
                              • Goによる排他制御 ~ RWMutexによるRLockとLock - おひとり

                                Go言語でMutexおよびRWMutexを使った排他制御について調べたのでまとめます。 RWMutexとMutex RWMutexによる書き込み用ロック RWMutexによる読み込み用ロック RLockとLock まとめ 参考文献 RWMutexとMutex Mutexを使ったLockは読み込み(Read)も書き込み(Write)も両方禁止できる。つまり他のゴルーチンがそのMutexによりLockされている資源を使いたい時は、直前のLockが解放されるまで待つことになる。 一方で、RWMutexはMutexの機能のほか、読み込み(Read)のみ許可するLockができる。 つまり、他のゴルーチンがRWMutexの読み込みロックされている資源を使いたいとき、書き込みについては待たされるが、読み込みだけであれば、直前のLockの解放を待たずに処理を実行できる。 つまり、RWMutexはMutex

                                  Goによる排他制御 ~ RWMutexによるRLockとLock - おひとり
                                • Webアプリケーション開発における、楽観的排他制御・悲観的排他制御のまとめ - Qiita

                                  はじめに アプリケーション開発において、ユーザーが入力したデータを永続化するにはDBを利用して実現するのが、スタンダードでしょう。 そして、DBを適切に扱うには、排他制御と言う概念を把握することが重要です。 では、排他制御とは何でしょうか? 排他制御を辞書で引いてみると、適切に用語を解説してくれているページがありましたので、引用します。 《exclusive control》同時に複数のユーザーがアクセスできるファイルやデータベースにおいて、一方が処理中の場合、他方のアクセスを制限すること。それによりデータの整合性を保つ。ロック。 goo辞書 - 排他制御 引用した通りの内容ではありますが、排他制御は、同時にアクセスがあった場合にデータの整合性を保つために必要なものです。 ”データの整合性が保たれている”と言う事は、アプリケーションが想定したデータ構造になっている事を意味しますし、逆に”デ

                                    Webアプリケーション開発における、楽観的排他制御・悲観的排他制御のまとめ - Qiita
                                  • 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その2「スレッドと同期・排他制御」 - Qiita

                                    大学の授業で講義資料を作ったので,Qiitaにも展開しておきます. この記事シリーズでは,並行・並列プログラミングについて,要(かなめ)となる同期・排他制御の役割をCとJavaを例に簡単なプログラム例を示します.次に同期・排他制御の問題点をCのプログラム例とともに示します.そしてElixir(エリクサー)によって実現されている,全てをイミュータブルにすることによる利点について示します. シリーズ 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その2「スレッドと同期・排他制御」(本記事) 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その3「同期・排他制御の2つの問題点」 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その

                                      並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その2「スレッドと同期・排他制御」 - Qiita
                                    • SQLAlchemy で悲観的・楽観的排他制御 - Qiita

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

                                        SQLAlchemy で悲観的・楽観的排他制御 - Qiita
                                      • Zephyr入門(排他制御:mutex編) - Qiita

                                        本稿は、できる限り多くの方、特にRTOSの勉強がてら拝見されている方にはぜひ読んでいただきたいと考えます。本稿で扱っているmutexの機構は、RTOSで非常に重要な役割であり、Zephyrに限らず、どのRTOSでも同様の実装がされているためです。 ちなみにLinuxでも優先度継承機能を備えています。 排他制御とは 皆さんご存知だと思いますが、同一のリソースを複数のスレッドが同時にアクセスして、システムに不整合が発生することを防ぐための機能を排他制御と言います。 競合はスレッド間、スレッドと割込み処理、割込み処理間などが考えられます。 これまでに出てきたirq_lock ( )はスレッドと割込みの競合や割込み間の競合を防ぎ、本稿で説明するmutexはスレッド間の競合を防ぎます。 mutexについては下記3つのシステムコールを用意しています。 void k_mutex_init(struct

                                          Zephyr入門(排他制御:mutex編) - Qiita
                                        1

                                        新着記事