13. データベース操作,バックアップ,トランザクション

186 Views

January 12, 22

スライド概要

(リレーショナルデータベースの基本)(全15回)
URL: https://www.kkaneko.jp/cc/ds/index.html

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

13. データベース操作,バックアッ プ,トランザクション URL: https://www.kkaneko.jp/cc/ds/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 1

2.

アウトライン 番号 項目 説明時間の 目安 13-1 SQL を用いたデータベース操作(挿入, 削除,更新),MySQL を用いた実演・実 習 12 分 13-2 13-3 データベースのバックアップ ロールバック,MySQL を用いた実演・実 習 4分 13-4 システムのダウンでのロールバック 4分 13-5 ロックと同時実行制御 10 分 13-6 トランザクション 5分 10分 2

3.

• SQL を用いたデータベース操作(挿入,削除,更新) の方法 • データベースのバックアップに関する注意点 • ロールバックは,データベースを操作開始時点に戻す こと • ロックと同時実行制御は,複数のユーザが同時にデー タベース操作を行うときに欠かせない • データベースを扱うプログラム等の特性 = トラン ザクション 3

4.

受講上の注意(前回と同じ) • 遠隔授業 • 資料の閲覧を行ってください.72時間以内.出 欠確認のため (セレッソの「コンテンツ」の「第 X回 ・・・」の ようなタイトルのページ) • 課題を提出して下さい.1週間以内. 課題で,採点結果を100%評価(期末試験はな い)の予定 • 質問は,電子メールでも受け付けています kaneko@fukuyama-u.ac.jp 4

5.

13-1. SQL を用いたデータベース操作 (挿入,削除,更新),MySQL を用い た実演・実習 5

6.

SQL によるデータベース操作 操作の種類 SQL のキーワード 新しいレコードの挿入 INSERT INTO 条件に合致するレコー ドの削除 DELETE FROM WHERE 既存のデータの更新 UPDATE SET WHERE 6

7.

Paiza.IO を用いた実演・実習 ① URL は https://paiza.io/ja ② 「コード作成を試してみる」をクリック ③ 「MySQL」を選ぶ 次ページへ続く 7

8.

挿入 テーブル T 名前 昼食 料金 空 テーブル T 名前 A B C D 昼食 そば カレーライス カレーライス うどん 料金 250 400 400 250 〇 実演,実習として次を行う 8

9.

更新 テーブル T 名前 A B C D 昼食 そば カレーライス カレーライス うどん テーブル T 料金 250 400 400 250 名前 A B C D 昼食 そば カレーライス カレーライス うどん 料金 250 400 400 300 〇 実演,実習として次を行う 更新を 行う SQL 9

10.

削除 テーブル T 名前 A B C D 昼食 そば カレーライス カレーライス うどん テーブル T 料金 250 400 400 300 名前 B C D 昼食 カレーライス カレーライス うどん 料金 400 400 300 〇 実演,実習として次を行う 削除を 行う SQL 10

11.

SQL によるデータベース操作 操作の種類 SQL の例 新しいレコード の挿入 条件に合致する レコードの削除 insert into T values('A', 'そば', 250); 既存のデータの 更新 update T set 料金 = 300 where 昼食 = 'う どん'; delete from T where 名前 = 'A'; 11

12.

13-2. データベースのバックアップ 12

13.

データベースのバックアップ • データベースの破損、消失に備える 13

14.

コピー&ペーストで バックアップ!? データベースファイル • いえいえ、それではうまく行きません • データベースシステムは、他の人が使用中かもしれません データベースシステムを止めずにバックアップしたい! という問題があります 14

15.

データベースのバックアップ • 単なる「データベースファイルのコピー&ペース ト」ではない. • データベース管理システムが備えるバックアップ コマンドで、バックアップを行う 15

16.

マイクロソフト Access での データベースのバックアップ 1. 「ファイル」,「名前 を付けて保存」 2. 「データベース ファイ ルの種類」 で 「デー タベースに名前を付け て保存」 を選択 3. 「詳細設定」 で「デー タベースのバックアッ プ」 を選択 4. 「名前を付けて保存」 を選択 5. 「保存」 16

17.

13-3. ロールバック,MySQL を用いた 実演・実習 17

18.

ロールバックとは • ロールバックとは,データベースを,操作 開始時点のものに戻すこと • ほぼ確実に,リレーショナルデータベース 管理システムの標準機能 18

19.

Paiza.IO を用いた実演・実習 ① URL は https://paiza.io/ja ② 「コード作成を試してみる」をクリック ③ 「MySQL」を選ぶ 次ページへ続く 19

20.

〇 実演,実習として次を行う 開始を 行う SQL 確認① ロール バック 確認② 確認①(ロールバック前) 確認②(ロールバック後) 20

21.

ワードで間違ってしまったときは ワープロの場合は 新規作成する (データをすべて捨てる) 元に戻す 21

22.

作業開始 「start transaction」は、 データベースの変更の作業開始を、 データベースシステムに伝えるコマンド (ロールバックの機能を使わないときは省略可) start transaction ユーザ データベース管理システム 22

23.

作業中 start transaction 操作1 操作2 ユーザ データベース管理システム 23

24.

ロールバック (rollback) 操作1、操作2、操作3 と操作していて、 最初に戻したくなった トランザクション開始 操作1 操作2 操作3 ユーザ rollback データベース管理システム 24

25.

ロールバック (rollback) • ロールバック (rollback) は、トランザクショ ン開始以降、自分が行ったデータベース操作 をなかったことにする 25

26.

13-4. システムのダウンでの ロールバック 26

27.

ロールバックとは • ロールバックとは,データベースを,操作 開始時点のものに戻すこと • ほぼ確実に,リレーショナルデータベース 管理システムの標準機能 27

28.

• システムが不測の事態でダウンし、再起動したと き、ロールバックが自動で実行される。 28

29.

システムのダウン • コンピュータそのものの停止 停電 オペレーティングシステムの異状 機器(コンピュータ本体など)の故障 データベース管理システム自体の不具合 システムのダウンの完全防止は不可能 29

30.

操作途中でのシステムダウン データベース管理システムの責任で, すべての操作を取り消す トランザクション開始 ← × 操作2 × 操作3 × 作業のやりかけ 作業のスタート 操作1 もしここで, システムがダウン → システムの再起動時に 30 自動でロールバック

31.

13-5. ロックと同時実行制御 31

32.

ロックと同時実行制御 • データベース内のデータを使うとき, 自動でロックがかかる • データにロックがかかっていると,他 の人の使用に制限がかかる(同時実行 制御) • ロックは,データの数だけある 32

33.

同時実行制御のイメージ 赤信号で止まる 信号が青になったら, 車によく気を付けて渡る 33

34.

同時実行制御のイメージ 道路は, ◆あるときは,歩行者が渡り ◆あるときは,車両が走る 同時に、歩行者と車両がいるのに・・・ 歩行者と車両が衝突することはない 赤信号で止まる 同時実行制御のイメージ 34

35.

同時実行制御とロック 部屋の数だけロックがある ◆ロックがかかっていなければ使 える. ◆使用中はロックがかかる.他の 人は使えない(=排他) 35

36.

ロック データベースを 使うとき 36

37.

ロック データベースシステムで は,自動でロックがかか る データベースを 使うとき ※ データベースを使い終わると, 自動でロックが外れる 37

38.

ロック 他の人は使えない データベースを 使うとき 自動でロックがかか る 38

39.

ロック ロックのかかってい ないデータは使える データベースを 使うとき データの数だけロッ クがある. (使用中のデータに だけロックがかか る) 39

40.

ロックが無いと、何が起こるのか? • Aさんは、口座Xから 1000円を引き出したい。 • Bさんは、口座Xに 2000円を預けたい。これがほぼ同時に起きたとする。 もともと 10000円だったとすると Aさん 11000円になるはず Bさん 40

41.

ロックが無いと、何が起こるのか? • Aさんは、口座Xから 1000円を引き出したい。 • Bさんは、口座Xに 2000円を預けたい。これがほぼ同時に起きたとする。 もともと 10000円だったとすると 10000 1000 引く 9000 Aさん 11000円になるはず Bさん 41

42.

ロックが無いと、何が起こるのか? • Aさんは、口座Xから 1000円を引き出したい。 • Bさんは、口座Xに 2000円を預けたい。これがほぼ同時に起きたとする。 もともと 10000円だったとすると 10000 1000 引く 10000 使用中のデータ 読み出し 2000 足す 9000 Aさん 12000 11000円になるはず Bさん 42

43.

ロックがあれば大丈夫 • Aさんは、口座Xから 1000円を引き出したい。 • Bさんは、口座Xに 2000円を預けたい。これがほぼ同時に起きたとする。 もともと 10000円だったとすると 10000 1000 引く 9000 Aさん 11000 2000 足す Bさん 11000円になるはず 43

44.

ロックがあれば大丈夫 • Aさんは、口座Xから 1000円を引き出したい。 Bさんは、ロックが • Bさんは、口座Xに 2000円を預けたい。これがほぼ同時に起きたとする。 外れるまで、強制的 に待たされる もともと 10000円だったとすると 10000 1000 引く 9000 Aさん 11000 2000 足す Bさん 11000円になるはず 44

45.

データベースシステムのロックは データベースシステムのロックは2種類ある 共有ロック ・・・ データ1つに対して,何本でも データの 共有用 排他ロック ・・・ データ1つに対して,1本だけ データの 独占用 共有ロックがかかっているときは,重ねて排他ロックできない. 排他ロックがかかっているときは,重ねて共有ロックできないし,排他ロックもできない 45

46.

13-6. トランザクション 46

47.

A: 作業途中の結果をそのまま残さない (資料 13-3, 13-4) ※ システムのダウンからの再起動では、 ロールバックが行われる C: データベースの異状を防ぐ仕組みがある I: データベースを複数人が同時使用でき,データベース 管理システムの側で適切に同時実行制御などを行う (資料 13-5) D: 作業が完了したら,そのデータは残る 47

48.

13-1 create table T(名前 text, 昼食 text, 料金 integer); insert into T values('A', 'そば', 250); insert into T values('B', 'カレーライス', 400); insert into T values('C', 'カレーライス', 400); insert into T values('D', 'うどん', 250); update T set 料金 = 300 where 昼食 = 'うどん'; delete from T where 名前 = 'A'; select * from T; 48

49.

13-2 create table T(名前 text, 昼食 text, 料金 integer) engine = InnoDB; start transaction; insert into T values('A', 'そば', 250); insert into T values('B', 'カレーライス', 400); insert into T values('C', 'カレーライス', 400); insert into T values('D', 'うどん', 250); start transaction; update T set 料金 = 300 where 昼食 = 'うどん'; delete from T where 名前 = 'A'; select * from T; rollback; select * from T; 49

50.

関連資料 • リレーショナルデータベース序論(全4回) 全体を知る. https://www.kkaneko.jp/cc/di/index.html • リレーショナルデータベースの基本(全15回) 基礎を学ぶ. https://www.kkaneko.jp/cc/ds/index.html • リレーショナルデータベース演習(全15回) 演習により修得する. https://www.kkaneko.jp/cc/de/index.html 50