データベースと管理システム
このノートの問いがそのまま復習カードになり、忘れかけたころに出題されます。
0. どういうまとまりか
データを部署ごと・人ごとのファイルでばらばらに持つと、同じデータがあちこちに重複し、
片方だけ直して食い違う、同時に書き換えて片方の変更が消える、といったことが起こります。
そこで、データを一か所にまとめ、専用のソフトウェアに管理を任せます。
| 言葉 | 何か |
|---|---|
| データベース | 一定の規則で整理して蓄積し、共有して利用できるようにしたデータの集まり |
| データベース管理システム(DBMS) | データベースを管理し、利用者やアプリからの読み書きを仲立ちするソフトウェア |
| トランザクション | 「全部行うか、全部行わないか」のどちらかにしなければならない一まとまりの処理 |
分かれ目は次の 3 つ。
- データベースは「データの集まり」、DBMS は「それを管理するソフトウェア」。 取り違えない。
- 排他制御は「同時に書き換える」ことへの備え。 障害回復は「故障」への備え。
- トランザクションは途中で止まったら全部取り消す(ロールバック)。成功したら確定する(コミット)。
1. データベースとデータベース管理システム
根拠: 学習指導要領 情報Ⅰ-(4)-ア-(イ)
データベースは、データを一定の規則で整理して蓄積し、多くの人やシステムが共有して利用できるようにしたものです。
データベースを直接さわるのではなく、データベース管理システム(DBMS)というソフトウェアを通して読み書きします。
DBMS が間に入ることで、データの重複や食い違いを防ぎ、安全に共有できるようになります。
データベースとは何か?
データを一定の規則で整理して蓄積し、共有して利用できるようにしたもの
同じデータを一か所で持つので、重複が減り、どこから見ても同じ内容になる。
データベース管理システム(DBMS)とは何か?
データベースを管理し、利用者やアプリケーションからの読み書きを仲立ちするソフトウェア
利用者はデータがどこにどう保存されているかを知らなくても、DBMS に頼めば目的のデータを取り出せる。
同じ顧客の住所を、部署ごとに別々のファイルで持っていると起きる問題は?
同じデータが重複し、一方だけを直すと内容が食い違う(データの不整合)
データベースで一か所にまとめれば、直すのは一か所で済む。
2. DBMS の役割
根拠: 学習指導要領 情報Ⅰ-(4)-ア-(イ)
DBMS の役割は、大きく 4 つに分けられます。
| 役割 | 何を防ぐか |
|---|---|
| 一貫性・整合性の維持 | 決まりに合わないデータ(重複した番号、ありえない値)が入ること |
| 同時実行制御(排他制御) | 同時に書き換えて、一方の変更が失われること |
| 障害回復 | 故障で、データが失われたり壊れたりすること |
| アクセス管理 | 権限の無い人がデータを見たり書き換えたりすること |
DBMS が一貫性・整合性を保つとは、どういうことか?
あらかじめ決めた規則(番号の重複禁止・値の範囲など)に合わないデータが登録されないようにすること
例えば、同じ会員番号の二重登録や、在庫数が負になる更新をはねる。
複数の利用者が同じデータを同時に書き換えようとしたとき、一方が処理している間は他方を待たせる DBMS の機能を何というか?
排他制御(同時実行制御)
書き換え中のデータにロック(鍵)をかけ、処理が終わるまで他の利用者の書き換えを待たせる。
排他制御をしないと、同時に書き換えたときに何が起きるか?
一方の変更が、もう一方の変更で上書きされて失われる
二人が同時に同じ在庫数を読んで 1 ずつ減らすと、2 減るはずが 1 しか減らない。
DBMS の障害回復は、どうやって故障前の状態に戻すか?
定期的に取ったバックアップと、更新の記録(ログ)を使って復元する
バックアップの時点に戻したうえで、ログに残った更新をやり直せば、故障の直前まで戻せる。
DBMS のアクセス管理とは何か?
利用者ごとに、どのデータを見てよいか・書き換えてよいかの権限を決めて管理すること
例えば、成績は担任だけが書き換えられ、生徒本人は自分の分だけ見られる、のように設定する。
3. トランザクション
根拠: 学習指導要領 情報Ⅰ-(4)-ア-(イ)
銀行の振込は「A さんの口座から引く」と「B さんの口座に足す」の 2 つの処理でできています。
片方だけ行われるとお金が消えたり増えたりするので、2 つを一まとまりとして扱います。
トランザクションとは何か?
データベースに対する、分けてはいけない一まとまりの処理
振込の「引く」と「足す」のように、全部行うか全部行わないかのどちらかにしなければならない。
トランザクションが最後まで正しく終わったとき、その結果を確定させることを何というか?
コミット
コミットすると更新がデータベースに反映され、以後は取り消されない。
トランザクションが途中で失敗したとき、それまでの更新を取り消して処理の前の状態に戻すことを何というか?
ロールバック
振込の途中で止まったら、引いた分も元に戻す。中途半端な状態を残さない。
4. さまざまなデータとデータベース
根拠: 学習指導要領 情報Ⅰ-(4)-ア-(イ)
表の形にきちんと整理できるデータ(名簿・売上)は、表で管理するデータベース(→ 関係データモデル)が得意です。
一方、SNS の投稿・画像・センサーの記録のように、形がそろわず量も膨大なデータも増えてきました。
これらを扱うために、表にこだわらないデータベースが使われます。
NoSQL とは、どんなデータベースか?
表(関係データモデル)の形にこだわらずにデータを管理するデータベースの総称
形のそろわないデータや大量のデータを、多くのコンピュータに分けて高速に扱うのに向く。
NoSQL のうち、「キー」と、それに対応する「値」の組だけでデータを持つものを何型というか?
キー・バリュー型
キーを指定すれば値がすぐに取り出せる。ほかに、JSON のような文書をそのまま持つドキュメント型などがある。
ビッグデータとは何か?
従来の方法では記録・処理しきれないほど、量が膨大で、種類が多様で、次々に発生するデータ
SNS の投稿、IoT 機器のセンサーの記録、交通系 IC カードの乗降記録など。分析して新しいサービスや予測に使われる。
練習問題
問 1 ある商品の在庫が 10 個ある。店員 X と店員 Y が同時にそれぞれ 1 個ずつ売り、次の順で処理が進んだ。排他制御をしていないとき、最後に記録される在庫はいくつか。また、正しくはいくつになるべきか。
- X が在庫を読む(10 個)
- Y が在庫を読む(10 個)
- X が「読んだ値から 1 引いた数」を書き込む
- Y が「読んだ値から 1 引いた数」を書き込む
記録されるのは 9 個。正しくは 8 個。
X も Y も 10 を読んでいるので、どちらも 9 を書き込む。4 の書き込みが 3 の書き込みを上書きし、X の販売が消える。
排他制御があれば、X が読んでから書き込むまでの間 Y は待たされ、Y は X の書き込み後の 9 を読むので 8 になる。
問 2 A さんの口座から B さんの口座へ 5,000 円を振り込むトランザクションで、「A の残高から 5,000 円を引く」処理が終わった直後に停電した。DBMS はこのトランザクションをどう扱うべきか。
ロールバックして、A の残高を引く前の額に戻す。
「B に 5,000 円を足す」処理が行われていないので、このまま確定(コミット)すると 5,000 円が消える。
一まとまりの処理が最後まで終わっていないときは、全部を取り消すのが原則。