ここでは基本情報技術者試験のデータベース技術について説明していきます。データベースの基本はこちらとこちらで、関係(リレーショナル)データベースについてこちらで説明しているので、省略します。
用語
- トランザクション処理:データベースに対する一連の処理
- ACID特性:トランザクション処理に求められる特性
- 排他制御:データの不整合が発生しないようデータの更新中にアクセスをロック
- 共有ロック:他のトランザクションから参照はできるが更新はできない
- 専有ロック:他のトランザクションから参照も更新もできない
- デッドロック:互いに相手が専有ロックしているデータを要求し、実行できなくなる状態
- 2相コミットメント:更新処理が可能か確認→すべてのサイトが可能であれば更新処理
- ログファイル:データベースの更新記録を取る
- ロールフォワード:←を押して図あり、更新後情報を使用して復旧
- ロールバック:←を押して図あり、更新前情報を使用して復旧
- NoSQL:SQLを使わずに操作するデータベース全般
- NoSQLの各データベース:←を押して参照
- データベースの活用法:←を押して参照
- ビックデータ:多種多様で高頻度に更新される大量のデータ
- データベースのデータ資源管理:←を押して参照
トランザクション処理
データベース更新時に切り離すことができない一連の処理のことをトランザクション処理といいます。また、トランザクション処理には以下のような特性があり、それぞれの頭文字をとってACID特性と呼ばれています。
- 原子性(Atomicity):トランザクション処理がすべて完了したか、まったく処理されていないかで終了すること
- 一貫性(Consistency):データベース内に矛盾がないこと
- 独立性(Isolation):複数のトランザクションを同時に実行した場合と、順番に実行した場合の処理の結果が一致すること
- 耐久性(Durability):トランザクションが正常に終了すると、更新結果は障害が発生してもデータベースから消失しないこと
排他制御:データベース更新時にデータの不整合が発生しないよう、データの更新中にアクセスを制限(ロック)して別のトランザクションから更新できないように制御することを排他制御といいます。
上記のロックには共有ロックと専有ロックがあります。また、複数のトランザクションが、お互いに相手が専有ロックしているデータを要求して待ち状態となり、実行できなくなる状態のことをデッドロックといい、その場合はDBMSがロールバック(後述)してロックを解放します。
- 共有ロック:トランザクションがデータを参照する前にかけるロックのことをいい、共有ロック中のデータに対して他のトランザクションから参照はできるが更新はできない
- 専有ロック:トランザクションがデータを更新する前にかけるロックのことをいい、専有ロック中のデータに対して他のトランザクションからは参照も更新もできない
2相コミットメント:分散型データベースシステムにおいて、一連のトランザクション処理を行う複数サイトに更新処理が可能かどうかを問い合わせたあと、すべてのサイトが可能であれば更新処理を確定する方式のことを2相コミットメントといいます。もし一連の処理で障害が発生した場合は、その処理を強制終了して(アボート)、すべての結果を無効として更新前の状態に戻します(ロールバック)。
データベースの障害回復
データベースのハードウェア障害やシステム障害に備えて、データベースの全データをバックアップしたフルバックアップファイルや、データベースの障害回復のためにデータベースの更新前や更新後の値を書き出して、データベースの更新記録を取るログファイル(ジャーナルファイル)を取っています。また、データベースを回復する処理(リカバリ処理)には以下のようなものがあります。
・ロールフォワード:データベースのハードウェア障害に対して、フルバック時点の状態に復元したあとログファイルの更新後情報を使用して復旧させる方法
・ロールバック:トランザクション処理プログラムがデータベースの更新途中に異常終了した場合に、ログファイルの更新前情報を使用して復旧させる方法
データベースの応用
SQLを使わずに操作するデータベース全般のことをNoSQL(Not Only SQL)といい、ビックデータ(後述)の保存や解析を目的としています。ただし、データの正規化や表の結合はできないため、集計や検索が不得意であり、目的に応じて使い分ける必要があります。また、NoSQLのデータベースには以下のようなものがあります。
- キーバリューストア型:保存したいデータとそのデータを一意に識別できるキーを一組として管理
- カラム指向型:キーに対するカラムを自由に追加可能
- ドキュメント指向型:ドキュメント1件が1つのデータとなり、データ構造は自由。XMLなどでデータを記述
- グラフ指向型:グラフ理論に基づきノード間を方向性のあるリレーションでつないで構造化
データベースに大量のデータを蓄積し、以下のような形で活用しています。
- データウェアハウス:大量のデータを整理・統合して蓄積したデータベース
- データレイク:データウェアハウスの一種であり、データを未処理の形でリアルタイムに蓄積
- データマート:データウェアハウスから抽出した目的別のデータベース
- データマイニング:大量のデータを統計的・数学的手法で分析し、法則や因果関係を見つけ出す
- BI(Business Intelligence)ツール:データウェアハウスやデータマートに蓄積されたデータをデータマイニングなどで分析し、経理判断上の有用な情報を取り出すツール
ビックデータ:多種多様で高頻度に更新される大量のデータのことをビックデータといいます。また、機械判読に適した形式で、原則無償で自由に2次利用できるというルールのもと国や自治体、企業などが公開する官民データのことをオープンデータといいます。なお、データベースのデータ資源管理には以下のようなものがあります。
- リポジトリ:ソフトウェアの開発や保守における設計情報やプログラム情報を一元的に管理するためのデータベース
- データディクショナリ:データ項目の名称や意味を登録しているデータ辞書であり、用語と意味を統一することで開発や保守作業の効率を向上させることができる
まとめ
以上が基本情報技術者試験のデータベース技術の説明でした。いろいろデータベースの基本的な概念やSQLの説明は省略して、用語部分をまとめました。
コメント