イチから全部作ってみよう(34)マルチプログラミングとトランザクション:山浦恒央の“くみこみ”な話(203)(3/3 ページ)
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第34回は、週末の家事のたとえ話でマルチプログラミングについて理解した上で、データベースにおけるトランザクションについて解説する。
6.今までの知識を使ってECサイトの購入処理で考える
前回の排他制御の考え方と、今回のトランザクションを組み合わせて、2つのお客がほぼ同時に同じ商品を購入する場合を考えます(表3)。
| お客A | お客B | |
|---|---|---|
| トランザクション開始 | ||
| 在庫データをロックする | トランザクション開始 | |
| 在庫データをチェックする | 待機 | |
| 在庫を減らす | 待機 | |
| 注文データを登録する | 待機 | |
| コミット(ここでアンロック) | 待機 | |
| トランザクション終了 | 待機 | |
| - | 在庫データをロックする | |
| - | 在庫データをチェックする | |
| - | 在庫を減らす | |
| - | 注文データを登録する | |
| - | コミット(ここでアンロック) | |
| - | トランザクション終了 | |
| 表3 同時購入の例 | ||
表3に示す通り、お客Aがロックをかけている間、お客Bは待機します。お客Aのトランザクションが完了してアンロックすると、お客Bは待機状態から処理を再開します。これにより、2人が同時に在庫データを書き換えることを防ぎ、データの整合性を保ちます。
このように、トランザクションと排他制御を組み合わせることで、複数のユーザーが同時にアクセスしても、データを安全に管理できます。なお、購入処理の実装方法はいろいろありますので、あくまでも例題の一つだと考えてください。
7.終わりに
今回は、排他制御の振り返りとトランザクションについて説明しました。トランザクションを使うことで、一連の処理をひとまとめにして、問題が発生した場合はロールバックによって変更内容を取り消すことができます。
世の中には、複数人で使用する製品がたくさんあります。完全に理解できなくても、イメージだけでも伝わればうれしく思います。
山浦先生執筆の書籍が販売中です!
本連載で取り上げた「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の書籍「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から好評発売中です。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しています。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。
前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。
両書とも興味のある方は、Amazon.comや書店でチェックしてください!
人間環境大学 環境情報学科 教授(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
イチから全部作ってみよう(33)「排他制御」をトイレのアナロジーで理解する
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第33回は、複数人が同時にアクセスするシステムを開発するためのプログラミングで重要になる「排他制御」をトイレに例えて説明する。
イチから全部作ってみよう(32)PythonでSQLを実行してデータベースを操作する
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第32回は、さらに一歩踏み込み、PythonプログラムからSQLを実行してデータベースを操作する方法を解説する。
イチから全部作ってみよう(31)SQLを操作して実際にデータベースを作ってみる
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第31回は、SQLの操作方法の解説をもう一歩進めた上で、実際にワインの商品データベースを作ってみる。
イチから全部作ってみよう(30)データベース操作の共通言語「SQL」を使ってみる
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第30回は、これまで紹介してきたデータベースに関する概念的な話から離れ、SQLを使って実際にデータベースを操作してみる。
イチから全部作ってみよう(29)3つのノート整理法からたどるRDBMSの基礎知識
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第29回は、お題「店長の頭の中を設計しよう」の解答例となる3つのノート整理法を基に、リレーショナルデータベース(RDBMS)の基礎知識について説明する。

