トランザクション管理と排他制御の基本解説【備忘録-基本情報技術者試験対策 #59】

基本情報技術者試験

※ 本記事では、基本情報技術者試験の対策として私が勉強したことを備忘録的にまとめておきたいと思います。
少しでも参考になれば嬉しいです。

はじめに

さて今回は、基本情報技術者試験対策として、トランザクション管理と排他制御についてまとめたいと思います。

そもそもトランザクションって何?排他?・・・、もう分からないことだらけですよね。

安心してください、基礎的なところから順番に説明していきます。さっそく見ていきましょう。

ちなみに私はこの参考書を使って勉強してました。

漫画形式で読みやすく、分かりやすい内容になっているため、無理なく学習を進められると思います。

過去問を解きまくり、不明点があれば参考書で知識を補う、このサイクルで試験対策するのが私のオススメです!

最新版はこちらです。

少し内容が異なる部分もあるかもしれませんが、大まかには変わらないはずですので、安心して下さい。

トランザクションとは

トランザクションは、データベースシステムにおいて、複数の処理を一つのまとまりとしたものです。処理全体が成功するか、あるいは全ての処理を取り消して元の状態に戻す、という仕組みを指します。

主にデータの整合性を保つために使用され、銀行の振り込み処理など、部分的な成功が許されない場面で重要な概念です。

トランザクションの4つの特性(ACID特性)

トランザクションは「ACID特性」と呼ばれる4つの性質を満たすことが求められます。これがとても重要です。

  • Atomicity(原子性):
    全ての処理が完了するか、全ての処理が取り消されるか、どちらかで終了します。例えば、データベースの更新が途中で止まることはなく、全てが適用されるか、最初の状態に戻されます。中途半端に終わるなんてことはないというわけですね。
  • Consistency(一貫性):
    トランザクションが実行された後も、データベースの整合性が保たれることを保証します。例えば、銀行システムで振り込みが行われる際、送金者の残高が引かれ、受取人の残高が増えるといった整合性が確保されます。
  • Isolation(独立性):
    複数のトランザクションが並行して実行されても、互いの影響を受けずに処理が行われることを保証します。これにより、他のトランザクションが完了する前に結果が反映されることはありません。
  • Durability(耐久性):
    トランザクションが完了した後、その結果が永続的に保存されることを保証します。たとえ障害が発生しても、処理されたデータは消えません。

排他制御

排他制御(Exclusive Control)とは、データベースシステムなどで複数のトランザクションが同時に同じ資源(ファイル、データなど)にアクセスする際、データの整合性や一貫性を保つために用いられる制御方式です。この仕組みにより、データの競合や不整合が発生するのを防ぎます。

データベースシステムでは、複数のユーザーが同時にデータを操作することが一般的です。この場合、データの不整合が発生するリスクがあります。たとえば、あるユーザーがデータを更新している途中に、別のユーザーが同じデータに対して別の操作を行うと、結果的に不正確なデータが保存されてしまうことがあります。こうした問題を防ぐために、排他制御が必要です。

もっと端的に説明すると、複数の処理が同じ場所を同時にいじって変なことが起きないよう、”ロック”しておく制御のことを、排他制御と呼びます。

この排他制御(ロック)には大きく2種類ありますので覚えておきましょう。

共有ロック

他のトランザクションがデータを「読み取り専用」でアクセスすることを許可するロックです。この状態では、データの参照は可能ですが、更新はできません

専有ロック

特定のトランザクションがデータを「更新する」前に設定されるロックです。このロックがかかると、他のトランザクションからはそのデータの読み取りも更新もできなくなります

ストアプロシージャ

ストアプロシージャとは、データベースに保存されるSQL命令の集まりで、事前にコンパイルされた形でサーバ内に保持され、必要なときに実行できる仕組みです。

これにより、SQL文を毎回クライアントから送信せずにデータベース上で処理を行うことが可能です。データベースのパフォーマンス向上や、ネットワーク負荷の軽減など、効率的なデータベース運用に役立ちます。

ストアプロシージャの主な特徴と利点は以下の通りです。

  • 処理の高速化:
    ストアプロシージャはあらかじめコンパイルされているため、都度SQL文を解析する必要がなく、処理の高速化が期待できます​。
  • ネットワーク負荷の軽減:
    クライアント側とサーバ間の通信量が削減されるため、ネットワークの負荷が軽減されます。これにより、システムのパフォーマンス全体が向上します​。
  • セキュリティの向上:
    クライアント側からSQLを直接送信するのではなく、ストアプロシージャに処理を任せることで、SQLインジェクションなどの攻撃を防ぐことができます。
  • コードの再利用:
    複数のアプリケーションから頻繁に使用されるSQL処理を一度作成して保存しておくことで、同じコードを何度も再利用することが可能です

最後に

さて今回は、基本情報技術者試験対策として、トランザクション管理と排他制御についてまとめました。

特に重要なのは、トランザクションの4つの特性と、排他制御としてどんなロックができるのかです。

しっかりと頭に入れておきましょう。

★トランザクション

データベースシステムにおいて、複数の処理を一つのまとまりとしたもの

★4特性

  • Atomicity(原子性):全ての処理が完了 or 全ての処理が取り消される
  • Consistency(一貫性):トランザクション実行後、データベースの整合性が保たれる
  • Isolation(独立性):複数トランザクションが並行しても、互いの影響を受けずに処理が行われる
  • Durability(耐久性):トランザクション完了後、その結果が永続的に保存される

★排他制御

  • 共有ロック:参照可、更新不可のロック
  • 専有ロック:参照、更新共に不可のロック

★ストアプロシージャ

データベースに保存されるSQL命令の集まり

前回まとめた記事も読んでもらえると嬉しいです!

基本情報以外の勉強記事も是非!

オススメ参考書 & Udemy講座

過去問編

兎にも角にも過去問を解かないことには始まりません。解いて解いて解きまくりましょう!

特に以下の参考書は問題数が多いのでオススメです。

この1冊だけ買って、とりあえず1周すれば合格がかなり近くなると思います!

科目A+B両方合わせて4セット収録されてるとかヤバすぎます・・・

知識網羅編

以下は知識網羅編として、講義系の参考書、動画をピックアップしています。

1からしっかりと学習し、知識を身に着けたい方はとてもオススメです。

過去問を解きまくり、不明点を参考書で補う。これが最高の勉強サイクルです~

私が勉強する際に使用していたオススメ参考書は以下です。

上記シリーズの最新版は以下です。(内容はそこまで変わらないはずですが・・・)

私がぜひオススメしたい、Udemyの講座もいくつかピックアップしておきます。

誰かに解説してもらった方が分かりやすい場合もありますからね~

画像でもボタンでも、どちらを押下しても講座へ飛べるようにしてありますので是非!

コメント

タイトルとURLをコピーしました