データベース技術 14(database 14)

32
データベース技術 14回(2016.1.51

Upload: yuka-obu

Post on 19-Jan-2017

297 views

Category:

Education


0 download

TRANSCRIPT

データベース技術第14回(2016.1.5)

1

データベースの運用•トランザクション機能

•同時実行制御

•セキュリティ

•索引を使った高速検索

•問い合わせの最適化

•障害回復

2

表の操作権限の付与•GRANT文

-表の操作権限を他のユーザに与える-例:GRANT SELECT, UPDATE ON 商品 TO 外国部;

• 外国部に「商品」表の検索と更新の権限を与えている

•REVOKE文- GRANT文で与えた権限を取り上げる-例:REVOKE SELECT, UPDATE ON 商品 FROM 外国部;

• 外国部から「商品」表の検索、更新の権限を取り上げている

3

ビュー表を使ったセキュリティ•表の一部のデータに対してのみ権限を設定可能

-実表の一部を抽出したビュー表を作成する-このビューに対する権限を設定する

実表ビュー表

操作できないようにする操作できるようにする4

索引を使った高速検索•インデックス(索引: Index)

-データの格納位置に高速にアクセスする手段

- B木(B Tree)• 格納場所に関する情報を木構造で管理する方式

• 節点(node)が多数の子データを持つ

-ハッシュ(Hash)• データのキー値に対してハッシュ関数を適用し、格納位置を求める方法

• ハッシュは完全一致検索に威力を発揮する• 比較条件による検索やあいまい検索には対応できない

5

B木(B Tree)の補足•格納場所に関する情報を木構造で管理する方式•節点(node)が多数の子データを持つ

200

120 310150 340

B木によるインデックス

※ 木の高さがそろっていない場合、計算量が増加する→回転という操作を行う

6

問い合わせの最適化•データベースへの問い合わせ

- SQLの内容を解析し、インデックスなどを考慮し高速化•一般的な問い合わせ順序の決定基準

-選択を先に実行して行数を減らす-射影を先に実行して結果に関係ない列を減らす-結合を後で実行する

•射影・選択・結合にも様々な手法が存在する-選択:全検索、インデックスによる検索-結合:ネステッド・ループ、ソート・マージ

7

ネステッド・ループの補足•一方の表の1行について、もう一方の表の行を比較する方法

101102103104

101101102102

T1 T2 各行について全行を比較する同じである場合に、結合した行を結果として作成する

ループ1( t = 1 から t = n まで){ ループ2( i = 1 から i = m まで){   T1の t 行目のデータとT2の i 行目のデータを比較   同じである場合に結合した行を結果として作成する }}

行番号 tt=1t=2・・・t=n

行番号 ii=1i=2・・・i=m

ループが入れ子(nest)になっているのでネステッド・ループと呼ぶ

8

オプティマイザ(optimizer)•データベース中で問い合わせの最適化を行う機能•最適化の基準

-ルールベース:あらかじめ決められた複数のルールの優先順位に従って手段を選択する方式• データベースの状態に即した検索が行われない場合もある

• 例:全検索であっても、索引検索の優先順位が高い場合は索引検索が行われる

-コストベース:データベース内部の統計情報に従い、手段を選択する方式• ルールベースよりも柔軟な最適化が可能• 定期的に統計情報の更新が必要、統計情報の管理・分析に手間がかかる

9

障害回復•トランザクションの耐久性を保証する

•バックアップやログにより障害に備える

•データベースの障害-トランザクション障害:トランザクションの不備

-システム障害:停電などによるシステムダウン

-媒体障害:ハードディスクの損傷

10

データベースの活用例•電車の座席予約システム•預金システム

-ロックを使ったトランザクション制御-セキュリティ、障害対策など

•Webでのショッピング-データベースによる商品検索、購入手続き

11

Webシステムの基本•HTTP(HyperText Transfer Protocol)

- Webサーバとクライアントとの通信プロトコル- HTTPリクエスト:ユーザからの要求- HTTPレスポンス:サーバからの応答

WebサーバWebクライアント

HTTPリクエスト

HTTPレスポンスWebページ

12

Webシステムとデータベース•Webシステムにデータベースサーバが加わる

•3層に分けて構成することが多い

•3層クライアント・サーバシステム-プレゼンテーション層

-ファンクション層

-データ層

13

3層クライアント・サーバシステム•プレゼンテーション層

-ユーザからの入力を受け取る(例:データベースの検索条件)-データベースから受け取った問い合わせ結果の表示- Webブラウザがこの機能を果たす

•ファンクション層-データの加工を行う-各種プログラミング言語によるSQL文の組み立て処理-アプリケーションサーバ、Webサーバによる役割分担も

•データ層-データベースサーバによる処理

14

3層クライアント・サーバ型の構成

サーバ

クライアント

データベースサーバ

ルータ

ルータ

プレゼンテーション層

ファンクション層 データ層

ユーザからの入力の受付結果の表示

データベースの問い合わせ

データの加工など

データベースの管理

機能の追加修正が容易

Webブラウザによる操作が可能(新たなプログラムの作成が不要)

15

3層クライアント・サーバの動き

サーバ

クライアント

データベースサーバ

ルータ

ルータ

プレゼンテーション層

ファンクション層 データ層

検索条件 果物

SQL文select 商品名from 商品where 商品名 like ‘%果物%’;

商品データを検索

データ取り出し

Webページ作成

検索結果を表示

16

データ通信量の削減•ストアドプログラムの利用

-あらかじめ問い合わせなどをプログラムし、データベースサーバに配置しておく

-例:在庫表から在庫を減らし、発送表にデータを追加•メリット

-ネットワーク負荷の削減:問い合わせ文の送信減-アプリケーション開発が容易に:定型処理の利用

ストアドプロシージャ 処理手続きからの戻り値を持たないプログラムストアドファンクション 処理手続きからの戻り値を返すプログラムトリガ データベースに操作を行う前後に起動されるプログラム

ストアドプログラムの種類

17

分散データベース•データベースを別の環境に分散させること•特にWebを利用したシステムで活用されている•分散した位置に設置されたデータベースとネットワークから構成される•透過性が要求される

-データの位置や移動を気にせずに分散データベースを利用できる性質

18

分散データベースの構成方法(1)•水平分散

-複数の対等なデータベースサーバを用いる方法-各データベースサーバは他データベースサーバのデータを利用可能

-障害に強いシステム• いずれか1つのサーバに障害が起こってもデータベースの稼働ができる

サーバC

ルータ

ルータ

サーバD

サーバA サーバB

19

分散データベースの構成方法(2)•垂直分散

-データベースサーバに機能の違いを持たせる方法-中心的な役割りを持つ主サーバと処理を依頼する各サーバに分担

-各サーバが主サーバのデータを利用する-主サーバの管理が行いやすい反面、通信が集中する

サーバB

ルータ

ルータ

サーバC

主サーバ サーバA

20

データの分割(1)•分散データベースではデータを各サーバに分割する•データの分割方法

-水平型分割• データを行方向に分割• 分割した行を各サーバに分散して配置する• 同じ種類のデータを地域ごとに管理しようとする場合などに利用

-垂直型分割• データを列方向に分割• 分割した列を各サーバに分散して配置する• 商品部、輸出部など独立した部署別のデータを管理する場合などに利用

21

データの分割(2)•水平分割

•垂直分割

商品名 単価 地域 担当

商品名 単価 地域 担当

サーバA

サーバA

サーバB

サーバB

22

分散データベースでのコミット•データのコミット時

-どのサーバのデータも矛盾なく更新される必要がある

データベース

ユーザサーバA サーバB

データベース

更新処理

コミット

更新処理

コミット

×1つのサーバしか更新されないと矛盾が生じる

1つのサーバしか更新されないと矛盾が生じる

23

2相コミット(1)•分散データベースの矛盾を防ぐ方法として利用

•調停者と参加者から構成される-第1相:準備作業(セキュアと呼ばれる)

• 調停者が各参加者にコミットが可能か問い合わせる

• 参加者はコミット可能であれば、OKの返事を行う

-第2相• 調停者がコミットの指示を行う

• 参加者がコミットを行う

24

2相コミット(2)調停者参加者 参加者

データベース

更新処理

セキュア

データベース

セキュア

OKOK

コミットコミット

更新処理

2相コミットの流れ:コミット完了の場合25

2相コミット(3)調停者参加者 参加者

データベース

更新処理

セキュア

データベース

セキュア

OKOKがない

ロールバックロールバック

更新処理

2相コミットの流れ:セキュアに失敗しロールバックする場合26

表の結合•分散データベースで表を結合する

-ネットワーク負荷の増大を押さえるために通信量への注意が必要

•表の結合方法-ネステッド・ループ

• サーバAの表の1行をサーバBに送信する• サーバBの表の全件と比較を行い、表を結合する

-ソート・マージ• 各サーバの表をソートしておく• サーバAの表をサーバBに送信• 事前にソートされているため、1方向の読み込みによって結合が可能

27

データベースの複製•レプリケーション(複製:replication)

-データベースの複製を持つ-分散データベースのネットワーク負荷軽減の目的-マスターデータベース:主となるデータベースのこと-レプリカ:複製されたデータベースのこと

•レプリケーションの方法-読み取り専用-主サーバを更新可能-各サーバで更新可能

28

読み取り専用•マスターデータベースから読み取り専用の複製を作成、ダウンロードする方法•複製は主サーバ接続時に作成される

主サーバ

サーバA サーバB

29

主サーバを更新可能•主サーバから複製が作成される•この複製は更新が可能•複製を更新するとマスターデータベースに反映

主サーバ

サーバA サーバB

更新を反映 更新を反映

30

各サーバで更新可能•各サーバ同士が同じマスターデータベースを持つ•各サーバで更新が行われると他サーバのデータベースに反映

主サーバ

サーバA サーバB

更新を反映 更新を反映

更新を反映

31

まとめ•3層クライアント・サーバシステム

-データベースはデータ層として運用される

•分散データベース-透過性が要求される

- 2相コミットで矛盾を防ぐ

-ネットワークの負荷軽減策• 様々な表の結合方法

• レプリケーションの活用32