• 検索結果がありません。

sot04 最近の更新履歴 城西国際大学_経営情報学部_組織情報論2017

N/A
N/A
Protected

Academic year: 2017

シェア "sot04 最近の更新履歴 城西国際大学_経営情報学部_組織情報論2017"

Copied!
24
0
0

読み込み中.... (全文を見る)

全文

(1)

組織情報論

第4回 データベース 3 データベースの操作

1

講師 佐枝三郎

https://sites.google.com/site/jiusaedasoshikiron2017/

関係代数とデータベース操作

2

(2)

関係代数(relational algebra)

• 関係代数においては、「関係」の英語表現は「リレーショ

ン」であるが、これからは分かりやすさのため「テーブ

ル」を用いる

• 関係(テーブル)に対して、集合操作を行う演算子を適

用することで、データ操作を行う形式的体系

– 対象となる関係(テーブル)に対する操作を代数式で、手続

き的に記述する

– 関係代数の演算子は一つ以上の関係を演算の対象とし、そ

の演算結果も関係となる

• 演算子(operator)が適用対象のことを「オペランド(operand)」という

– 関係代数の演算子を、関係に適用している限り、その結果

は必ず関係となる

• 基本的な演算子に以下のものがある

– 和、差、直積、射影、選択

3

和(union)

• 記号は「∪」

• 二つの関係(テーブル) R(A1, …, An) および S(B1, …, Bn) の

和集合を取る演算

R U S = { t | t ∈ R ∨ t ∈ S }

記号の意味 |:右の条件が満たす集合

∈:含まれる

: OR または

: AND または

¬: NOT 非

• RとSは属性の数(次数)が同一で、それぞれの属性のドメ

インも同じでなければならない

– この条件を「和両立(union compatibility)」という

– 和の演算結果の属性名は R と同一となる

• 具体例では、第一学年の学生の関係(テーブル)と、第2学

年のテーブルを縦方向に結合すること

4

(3)

和(union)演算の例

学籍番号 氏名 性別 学部番号 学年

BG16001 会田一郎 001 1 BG16002 石田みどり 002 1 BG16003 上村茂 002 1

学籍番号 氏名 性別 学部番号 学年

BG15001 大島良子 001 2 BG15002 加藤正幸 002 2

学籍番号 氏名 性別 学部番号 学年

BG16001 会田一郎 男 001 1

BG16002 石田みどり 女 002 1

BG16003 上村茂 男 002 1

BG15001 大島良子 女 001 2

BG15002 加藤正幸 男 002 2

R

S

R U S

和(union)

演算を行う!!

5

差(difference)

• 記号は「-」

• 二つの関係(テーブル) R(A1, …, An) および

S(B1, …, Bn) の差集合を取る演算

R – S = { t | t ∈ R ∧ ¬ t ∈ S }

– R と S は和両立でなければならない

– 差の演算結果の属性名は R と同一となる

6

(4)

差(difference)演算の例

学籍番号 氏名 性別 学部番号 学年

BG16001 会田一郎 001 1 BG16002 石田みどり 002 1 BG16003 上村茂 002 1

学籍番号 氏名 性別 学部番号 学年

BG15001 大島良子 001 2

BG15002 加藤正幸 002 2

学籍番号 氏名 性別 学部番号 学年

BG16001 会田一郎 001 1

BG16002 石田みどり 002 1

BG16003 上村茂 002 1

BG15001 大島良子 001 2

BG15002 加藤正幸 002 2

R

S

R - S

差(difference)

演算を行う!!

7

直積 (cartesian product)

• 記号は「×」

• 二つの関係(テーブル) R(A1, …, An) および S(B1,

…, Bm) の和集合を取る演算

R × S = { t * u | t ∈ R ∧ u ∈ S }

– ここで、「t * u」はタプル t とタプル u を連結したタプル

• 直積演算の結果の属性名は、基本的に R と S

の属性名をそのまま受け継ぐ

– R と S に同じ属性名があった場合には、「 R.Ai 」

「 S.Bj 」として区別する

8

(5)

直積演算の例

学籍番号 氏名 性別

BG15001 大島良子 BG15002 加藤正幸

科目番号 講義名 担当教員ID

001 組織情報論 K002

002 情報メディア論 K005

003 情報学特論 K002

004 情報処理応用論 K008

R S

R × S

学籍番号 氏名 性別 科目番号 講義名 担当教員ID

BG15001 大島良子 001 組織情報論 K002 BG15001 大島良子 002 情報メディア論 K005 BG15001 大島良子 003 情報学特論 K002 BG15001 大島良子 004 情報処理応用論 K008 BG15002 加藤正幸 001 組織情報論 K002 BG15002 加藤正幸 002 情報メディア論 K005 BG15002 加藤正幸 003 情報学特論 K002 BG15002 加藤正幸 004 情報処理応用論 K008

直積演算

(cartesian product)を行う!!

9

選択(selection)

• 記号は「σ」

• 関係(テーブル) R(A1, …, An) がもつタプルの

うち、指定された条件を満足するものだけを

残し、他を削除する演算

σ

F

= { t | t ∈ R ∧ P

F

(t) }

– 「P

F

(t)」とは、タプル t が選択条件 F を満足すると

き真となる述語

– 選択演算の結果の属性名は R と同一となる

10

(6)

選択演算の例

学籍番号 氏名 性別 学部番号 学年

BG15001 大島良子 001 2

BG15002 加藤正幸 男 002 2

学籍番号 氏名 性別 学部番号 学年

BG16001 会田一郎 001 1

BG16002 石田みどり 002 1

BG16003 上村茂 002 1

BG15001 大島良子 001 2

BG15002 加藤正幸 002 2

R

σ 学年=2 (R)

選択演算(selection)を行う!!

11

選択条件

• 選択演算「 σ F 」の選択条件「F」には、以下のもの

を用いる

– 属性 Ai の値と定数 c の比較演算子 θ による比較条

件 「Ai θ c」

• 比較演算子 θ には=、<、>、≦、≧、≠ を用いる

• 例: 性別 = 男、 出席回数 > 10

– 属性 Ai と属性 Aj の値の比較演算子 θによる比較条

件 「Ai θ Aj」

• 例: 期末試験成績 > 中間試験成績

– 上記の条件を論理和「∨」、論理積「∧」、否定「¬」を

用いて組み合わせたもの

• 例: (出席回数 > 10)∧(期末試験成績 > 中間試験成績)

12

(7)

射影(projection)

• 記号は「π」

• 関係(テーブル) R(A1, …, An) から指定した属性

A1’, …, Am’ だけを残し、他を削除する演算

πA1’, …, Am’ = { t [A1’, …, Am’] | t ∈ R }

– { A1’, …, Am’ } ⊆ { A1, …, An }

– ここで、t [A1’, …, Am’] はタプル t から、指定された属

性だけを残し他を削除したタプル

– 残された属性の値が完全に一致する複数タプルがあ

る場合は、ただ一つのタプルが残される

• 射影演算の結果の属性名は、 A1’, …, Am’ に指

定された属性名となる

13

射影演算の例

性別 学部番号 男 001002002001

学籍番号 氏名 性別 学部番号 学年

BG16001 会田一郎 001 1

BG16002 石田みどり 002 1

BG16003 上村茂 002 1

BG15001 大島良子 001 2

BG15002 加藤正幸 002 2

R

π 性別,学部番号 (R)

射影演算(projection)

を行う!!

14

(8)

結合(join)

• 記号は「⋈」

• 二つの関係(テーブル) R(A1, …, An) および S(B1, …, Bm) の

直積を取り、特定の条件を満足するタプルだけを残す演

R ⋈ F S = { t * u | t ∈ R ∧ u ∈ S ∧ P F (t, u)}

• –ここで、「t * u」はタプル t とタプル u を連結したタプル

– また、「P

F

(t)」はタプル t が選択条件 F を満足するとき真となる

述語

• 結合は、直積と選択の組み合わせで表現できる

R ⋈ F S = σ F ( R × S )

15

自然結合、等結合、θ(シータ)結合

• 二つの関係(テーブル)で条件を付けず、同じ

属性名の属性で等結合する場合を「自然結

合(natural join)という

• 結合演算⋈ F の結合条件Fが「Ai θ Bj」のような

単純な形式で、かつ演算子 θ が等号=であ

るとき、「等結合(equi-join)」という

• 等結合に対して、それ以外の演算子(<や>

など)の場合には、「θ 結合(θ-join)」という

16

(9)

結合演算の例 (自然結合ー内部結合)

学籍番号 氏名 科目番号

BG15001 大島良子 001 BG15002 加藤正幸 002 BG15012 佐伯洋子 002 BG15015 加藤信子 004

R S

R ⋈ S

学籍番 号

氏名 科目番号 講義名 担当教員ID

BG15001 大島良子 001 組織情報論 K002 BG15002 加藤正幸 002 情報メディア論 K005 BG15012 佐伯洋子 002 情報メディア論 K005

結合演算(join)を行う!!

17

内部結合では、

対応がないタプ

ル(行)は、削除

される

科目番号 講義名 担当教員ID

001 組織情報論 K002

002 情報メディア論 K005

003 情報学特論 K002

結合演算の例 (自然結合ー外部結合)

学籍番号 氏名 履修科目

BG15001 大島良子 001 BG15002 加藤正幸 002 BG15012 佐伯洋子 002 BG15015 加藤信子 004

R S

R ⋈ S

学籍番 号

氏名 履修科目 講義名 担当教員ID

BG15001 大島良子 001 組織情報論 K002 BG15002 加藤正幸 002 情報メディア論 K005 BG15012 佐伯洋子 002 情報メディア論 K005

BG15015 加藤信子 004

結合演算(join)を行う!!

18

外部結合では、対

応がないタプル

(行)は、残される

が対応するデータ

がない部分は欠

損値が入る

科目番号 講義名 担当教員ID

001 組織情報論 K002

002 情報メディア論 K005

003 情報学特論 K002

(10)

結合演算の例 (等結合)

学籍番号 氏名 履修科目

BG15001 大島良子 001 BG15002 加藤正幸 002 BG15002 加藤正幸 003 BG15005 山田花子 002

科目番号 講義名 担当教員ID

001 組織情報論 K002

002 情報メディア論 K005

003 情報学特論 K002

004 情報処理応用論 K008

R S

R ⋈

履修科目=科目番号

S

学籍番号 氏名 R.履修科目 S.科目番号 講義名 担当教員ID

BG15001 大島良子 001 001 組織情報論 K002 BG15002 加藤正幸 002 002 情報メディア論 K005 BG15002 加藤正幸 003 003 情報学特論 K002 BG15005 山田花子 002 002 情報メディア論 K005

結合演算(join)を行う!!

19

結合演算の例 ( θ 結合)

学籍番号 氏名 身長

BG15001 大島良子 170 BG15012 佐伯洋子 165 BG15015 加藤信子 168

学籍番号 氏名 身長

BG16002 浅田太郎 167 BG16005 井上和夫 184 BG16006 大山明 156 BG16008 香取信吾 169

R S

R ⋈

R.身長<S.身長

S

学籍番号 氏名 R.身長 学籍番号 氏名 S.身長

BG15001 大島良子 170 BG16005 井上和夫 184 BG15012 佐伯洋子 165 BG16002 浅田太郎 167 BG15012 佐伯洋子 165 BG16005 井上和夫 184 BG15012 佐伯洋子 165 BG16008 香取信吾 169 BG15015 加藤信子 158 BG16005 井上和夫 184 BG15015 加藤信子 158 BG16008 香取信吾 169

結合演算(join)を行う!!

20

(11)

データベース言語

21

リレーショナルデータベース言語 SQL

• データベース管理システムを使用するためのプログラミング言語

• IBMが1970年代に研究・開発したデータベースマシン「System R」

の言語「SEQUEL (Structured English Query Language)」が最初の

SQL

– この意味は「構造化された英語による検索用の言語」

• 1986年にISOの国際規格として認められた

– これをSQL-86ともいう

– 1992年に大幅の改定を行い、SQL-92、あるいはSQL2が公開された

– 1999年に再度大幅改定が行われ、SQL-99、あるいはSQL3が公開され

てた

– 現在は2008年の以下のSQL規格が国際標準となっている

• ISO/IEC 9075:2008、『Database Language SQL』、Part 1「SQL/Framework」、Part 2「SQL/Foundation」、Part 3「SQL/CLI」、Part 4「SQL/PSM」、Part 9「SQL/MED」、 Part 10「SQL/OLB」、Part 11「SQL/Schemata」、Part 13「SQL/JRT」、ISO/IEC 9075-14:2008、『Database Language SQL』、Part 14「SQL/XML」

22

(12)

SQL 標準化のメリット

• SQLがISOの国際規格として標準化されたため、多

くのデータベース管理システム(ソフトウェア)が

SQLに対応した

• 国際標準化には次のメリットがある

– データベースの利用者はSQL言語を習得するだけで各

種のデータベース管理システムが利用できる

– 異なるデータベース管理システム間での操作言語の移

植や連携が可能

– 汎用的なツールやユーティリティの開発・利用が盛んに

なる

– データベース管理システムの利用者全体でのノウハウ

の共有ができる

23

SQLとリレーショナルデータモデル

(RDM)の差異

• SQLでは、タプル(行)が重複してもよい

– リレーショナルデータモデルでは、関係(テーブル)は「タプルの

集合」なので、各属性の値がまったく同じである、複数のタプル

(行)はあってはならない

– SQLでは、まったく同じタプル(行)が存在してもよい

• 属性やタプルの順序

– リレーショナルデータモデルでは、属性もタプルも集合であり、

順序という概念がない

– SQLでは属性には順序がある

– SQLでは、一般的にタプルには順序がないが、操作として番号

順にならべるなどの順序付けができる

• 用語の相違

– RDM:関係(リレーション)  SQL: 表(テーブル:table)

– RDM:属性  SQL: 列(コラム:column)

– RDM:タプル  SQL: 行(ロー:row)

– EXCELの用語と同じと考えればよい

24

(13)

SQLのデータ定義コマンド(DDL)

• SQLでデータベースの構造を定義するコマンド(命令)を、DDL(Data

Definition Language)と呼び、以下のものがある

– CREATEはTABLEなどを作る(枠組みを作る)こと、DROPはあるTABLEな

どを削除すること

– VIEV(ビュー)とは、もともとあるテーブルに対して各種の操作をした結

果のテーブルのこと

– INDEX(インデックス)とは、テーブルに格納されているデータを高速に

取り出すため別に用意する仕組みのこと

コマンド 概要

CREATE TABLE テーブルを作成する

CREATE VIEV ビューを作成する

CREATE INDEX インデックス(索引)を作成する

DROP TABLE テーブルを削除する

DROP VIEV ビューを削除する

DROP INDEX インデックス(索引)を削除する

25

テーブル作成のコマンド

• create table テーブル名 (

列名 データ型,

列名 データ型,

・・・

)

create table 学生テーブル (

学籍番号 char(10),

氏名 char(20),

学年 integer,

・・・

)

学籍番号 氏名 学年

BG16001 大島良子 1 BG16002 加藤正幸 1 BG15002 加藤正幸 2 BG15005 山田花子 2

26

(14)

SQLのデータ型の記述方法

• SQLのデータ型は、EXCELと類似ではあるが若干異なっており、以下のよ

うな種類がある

– 文字列が、長さを固定で格納するか、データの長さに応じて格納するが選択

できる

– 数値は、整数(1,2,3・・)か、浮動小数点数(実数)か選択できる

– 時刻を、一般的な精度の時刻型と、ナノ秒単位の高精度の時刻スタンプ型が

選択できる

データ型 概要 EXCELでは

char(n) 長さn文字の固定長文字列型 文字列

varchar(n) 長さ最大n文字の可変長文字列型 文字列

integer 整数型 数値

float 浮動小数点数型 数値

date 日付型 日付形式

time 時刻型 時刻

timestamp 時刻スタンプ型 時刻

27

テーブル作成時の制約条件指定

• SQLのテーブル作成コマンドでは、リレーショナルデータモデルで取り扱っ

た、以下の 整合性制約 を定義する

– 制約の記述は、列の定義コマンドのデータ型の次につける

制約 概要 記述例

not null ある列の値がNULL(空値)になるこ

とを禁止する

氏名 varchar(20) notnull

unique ある列の値が、テーブルの中で重

複することを禁止する

学籍番号 varchar(10) unique

check ある列の値が、ある範囲などに限

定されることを定義する

年齢 integer check( 17<=年齢

and 年齢<=30)

主キー 主キーを指定する。主キーの指定

はnot null と uniqueを同時に指定

したことになる

学籍番号 varchar(10) primary key

・複数の主キーの場合は、列の定義

と別に以下のように定義

primary key(学籍番号、科目番号)

外部キー 外部キーを参照するテーブルとそ

のキーとなる列を指定する

foreign key(学部番号) references

学部テーブル(学部番号)

28

(15)

SQLのデータ操作コマンド(DML)

• SQLでデータベースの構造を定義するコマンド(命

令)を、DML(Data Manipulation Language)と呼

び、以下のものがある

コマンド 概要

INSERT 行(タプル)の挿入

SELECT 行(タプル)の検索

UPDATE 行(タプル)の更新

DELETE 行(タプル)の削除

29

行の挿入

• insert into テーブル名 values (値1, 値2, … )

• コマンド例

– insert into 学生テーブル

values (‘BG16001’, ‘大島良子’, 1)

– insert into 学生テーブル

values (‘BG15003’, ‘加藤一郎’, 2)

– insert into 学生テーブル

values (‘BG12002’, ‘城田正義’, 3)

学籍番号 氏名 学年

BG16001 大島良子 1

BG15003 加藤一郎 2

BG12002 城田正義 3

30

(16)

行の挿入 列を指定する

• insert into テーブル名(列名1,列名, … )

values (値1, 値2, … )

• コマンド例

– insert into 学生テーブル(学籍番号, 氏名, 学年)

values (‘BG16001’, ‘大島良子’, 1)

– insert into 学生テーブル(学籍番号, 氏名, 学年)

values (‘BG15003’, ‘加藤一郎’, 2)

– insert into 学生テーブル(学籍番号, 氏名, 学年)

values (‘BG12002’, ‘城田正義’)

学籍番号 氏名 学年

BG16001 大島良子 1

BG15003 加藤一郎 2

BG12002 城田正義 NULL

31

行の検索

• select 列名1,…,列名n from 表名

• select 列名1,…,列名n from 表名 where 条件

– 「列名1,…,列名n」には、検索する列名を , で区

切って並べる

• 列名を並べる代わりに * を指定すると、テーブルの

すべての列が検索される

– 「表名」には、検索するテーブルを指定する

– 「条件」には、検索する行を絞る条件を記述する

• selectコマンドは、情報代数の選択と射影を記

述するものである

32

(17)

Selectによる検索の例

• 列のみの検索

学籍番号 氏名 性別 学部番号 学年

BG16001 会田一郎 001 1

BG16002 石田みどり 002 1

BG16003 上村茂 002 1

BG15002 加藤正幸 002 2

氏名 会田一郎 石田みどり 上村茂 加藤正幸

学籍番号 氏名 性別 学部番号 学年

BG16001 会田一郎 男 001 1

BG16002 石田みどり 002 1

BG16003 上村茂 002 1

BG15002 加藤正幸 男 002 2

学籍番号 氏名 BG16001 会田一郎 BG16002 石田みどり BG16003 上村茂 BG15002 加藤正幸

「select 学籍番号,氏名 from 学生テーブル」

「select 氏名 from 学生テーブル」

33

Selectによる検索の例

• 条件指定で行を検索する

学籍番号 氏名 性別 年齢 学年

BG16001 会田一郎 18 BG16002 石田みどり 19

BG16003 上村茂 20 1

BG15002 加藤正幸 21 2

学籍番号 氏名 性別 年齢 学年

BG16001 会田一郎 18 BG16002 石田みどり NULL BG16003 上村茂 NULL 1 BG15002 加藤正幸 21 2

学籍番号 氏名 BG16001 会田一郎 BG15002 加藤正幸

学籍番号 氏名 BG16002 石田みどり BG16003 上村茂

select 学籍番号, 氏名 from 学生テーブル

where 年齢 > 18 and 年齢 < 21

select 学籍番号, 氏名 from 学生テーブル

where 年齢 is NULL

34

(18)

SQLで使用できる主な条件指定

• SQLのwhere句では、以下の様々な条件指定ができる

条件指定 記述方法

not 否定 where 年齢 is not NULL

like 類似 where 氏名 like ‘%山%’

 山の文字が入っている行を検索

distinct 重複排除 select distinct 列名 from テーブル名 where 条件

• SQLのSELECTコマンドで可能な、その他の指定

条件指定 記述方法

order 順序付け select 氏名, 年齢 from 学生テーブル

where 年齢 >=19 order by 年齢

集計操作 select句に集計関数を使って、テーブル行全体、またはグルー

プ別の集計ができる。利用できるのは、

合計:sum(列名)、平均:avg(列名)、最大:max(列名)、

最小:min(列名)、行数:count(列名)

select avg( 年齢) from 学生テーブル where 学年 = 1

35

複数テーブルからの組み合わせ検索

• テーブル1,…,テーブルmの直積に対する問い合わせ

• select 列名1,…,列名n

from テーブル名1,…,テーブル名m

where 条件

select 講義名

from 学生テーブル,科目テーブル

where 学生テーブル.学生番号 = ‘BG15002’

and 学生テーブル.履修科目 = 科目テーブル.講義名

学籍番号 氏名 履修科目

BG15001 大島良子 001 BG15002 加藤正幸 002 BG15002 加藤正幸 003 BG15005 山田花子 002

科目番号 講義名 担当

001 組織情報論 K002 002 情報メディア論 K005 003 情報学特論 K002 004 情報処理応用論 K008

学生テーブル 科目テーブル

講義名 情報メディア論 情報学特論 36

(19)

行の削除(delete)

• delete from 表名 where 条件

• 「条件」には、削除したい行に対する条件を

selectと同様に指定する

• 学生テーブルから、学年が2の行を削除する

– delete from 学生テーブル where 学年 = 2

学籍番号 氏名 性別 学部 学年

BG16001 会田一郎 男 001 1 BG16002 石田みどり 002 1 BG16003 上村茂 002 1 BG15001 大島良子 女 001 2 BG15002 加藤正幸 002 2

削除前の学生テーブル 削除後の学生テーブル

学籍番号 氏名 性別 学部 学年

BG16001 会田一郎 001 1 BG16002 石田みどり 002 1 BG16003 上村茂 002 1

37

行の更新(update)

• update テーブル表名 set 列名1=値1, …, 列名n=値n

where 条件

• 「条件」には、更新したい行に対する条件をselectと同様に

指定する

• それぞれの列に対して、更新する値を指定する

– 学生番号「BG16003」の行の学部を「002」から「003」に更新(変

更)する

update 学生テーブル set 学部 = ‘003’

where 学籍番号 = ‘BG16003’

学籍番号 氏名 性別 学部 学年

BG16001 会田一郎 001 1 BG16002 石田みどり 002 1 BG16003 上村茂 002 1 BG15001 大島良子 001 2 BG15002 加藤正幸 002 2

更新前の学生テーブル 削除後の学生テーブル

学籍番号 氏名 性別 学部 学年

BG16001 会田一郎 001 1 BG16002 石田みどり 002 1 BG16003 上村茂 003 1 BG15001 大島良子 001 2 BG15002 加藤正幸 002 2

38

(20)

トランザクション処理の概要

39

トランザクション(transaction) 処理

• データベースを使用するアプリケーションシステムの、一

連の処理を構成するデータベース操作の集合を「トランザ

クション」という

– 「銀行口座への送金」や「飛行機の座席の予約」など

• データベースに対する操作は、データの「読み書き」である

– データベース管理システムが処理する単位は、あるデータの

「読み込み」か、あるいは「書き込み」となる

• アプリケーションシステムでは、「トランザクション全体」、預

金をする場合は、「現在の預金データを読み込み、入れた

金額を追加し、預金データを書き込むまで」が処理の単位

となる

– 銀行のオンラインシステムで5万円振り込みする場合、「Aさん

の預金口座から5万円引く」ことと、振り込み先口座に「5万円

加える」ことの処理が、どちらか片方だけ処理して中断すること

はできない

40

(21)

トランザクション(transaction) 処理

• データベースシステムにおいてトランザクションを実行

する際に問題となるのは以下の2つ

– 同時実行制御(トランザクション同士の競合を防ぐ)

– 障害回復(トランザクションが不完全な形で実行されるの

を防ぐ)

• このような問題が起こらないようにトランザクションの

実行を行うことを「トランザクション処理(transaction

processing)」という

• トランザクション処理は、以下の四つの性質(ACID特

性)を保証しなければならない

– A: 原子性(atomicity)

– C: 整合性(consistency)

– I: 隔離性(isolation)

– D: 耐久性(durability)

41

ACID特性の概要

特性名 特製の概要

A: 原子性

(atomicity)

トランザクションがデータベース処理の単位であり、トランザク

ションの間のデータ操作(読み込み、書き込み)は、すべて確定

したものとしてデータベースに反映される(コミット)か、すべて

取り消されてトランザクション開始の前の状態に戻される(ア

ボート)かのいずれかである

C: 整合性

(consistency)

整合性がとれたデータベースに対して、実行されたトランザク

ションの実行後のデータベースの状態も整合性のとれたもので

なければならない

I: 隔離性

(isolation)

複数のトランザクションを並行処理した場合でも、トランザクショ

ンは同時に実行されているトランザクションの影響を受けず、そ

の結果はトランザクションをなんらかの順序でひとつずつ処理し

た場合と一致しなければならない

D: 耐久性

(durability)

いったんコミットしたトランザクション中でのデータ操作は、その

後のシステム障害などで消滅してはならない

42

(22)

同時実行制御(排他性制御)

• ACID特性の「隔離性」を担保するために、同時実

行制御が行われる

– 複数のトランザクションが、同時にデータベースの同

一データにアクセスした場合、最初のトランザクション

が確定するまで、次のトランザクションはそのデータ

にアクセスできない

Aさんの銀行口座

預金

+10000

振り込み

+50000

Aさん Bさん

100000

110000

×

160000

43

同時実行制御(排他性制御)

• ACID特性の「隔離性」を担保するために、同

時実行制御がされていないとどうなるか

Aさんの銀行口座

預金

+10000

振り込み

+50000

Aさん Bさん

100000

110000 150000

100000

Aさんの預金が口座に反映されず、重大問題になる!!

44

(23)

ビッグデータとデータベース活用

• リーレーショナル・データモデルは、1970年代後半から、現在に至る約40年

の間、データモデルの中心的存在であった

– 現在、社会で利用されているデータベースの70%以上がリレーショナルデータ

ベース管理システムを使用している

• 21世紀に入って、インターネットの普及に伴い、データベースに格納すべき

データの量は、飛躍的に増加した

– 例えば、Googleの検索エンジンが用意している全世界のホームページのイン

デックスデータ、地図やストリートビューにおける街の風景画像、YouTubeの動画

や音楽

45

NoSQLのデータモデル

• 巨大な容量のデータをビッグデータと呼び、Googleなど

は、ビッグデータを効率的に格納し、検索できるSQLとは

異なった新たなデータモデルを開発した

– NoSQL、あるいはKey Value Store、ビッグテーブルなどと呼ば

れている

– リレーショナルデータベースは、単一の大きなサーバとそれ

に接続された巨大なディスク群が前提となっている

– NoSQL(例えばKey Value Store)では、何万という大量のデー

タベースサーバに、分散してデータベースを構築するのが

特徴

– その結果、テーブル表全体に対するACID特性の適用を緩和

し、高い性能とスケーラビリティー(拡張可能性)を獲得する

– GoogleのBigtable、MicrosoftのWindows Azure、Amazonの

SimpleDB、オープンソースのHadoop、Hbaseなどが有名

46

(24)

47

48

参照

関連したドキュメント

学位授与番号 学位授与年月日 氏名

氏名 小越康宏 生年月日 本籍 学位の種類 学位記番号 学位授与の日付 学位授与の要件 学位授与の題目..

東京大学 大学院情報理工学系研究科 数理情報学専攻. hirai@mist.i.u-tokyo.ac.jp

情報理工学研究科 情報・通信工学専攻. 2012/7/12

理工学部・情報理工学部・生命科学部・薬学部 AO 英語基準入学試験【4 月入学】 国際関係学部・グローバル教養学部・情報理工学部 AO

1991 年 10 月  桃山学院大学経営学部専任講師 1997 年  4 月  桃山学院大学経営学部助教授 2003 年  4 月  桃山学院大学経営学部教授(〜現在) 2008 年  4

住所」 「氏名」 「電話番号(連絡 先)」等を明記の上、関西学院 大学教務部生涯学習課「 KG 梅田ゼミ」係(〒662‐8501西 宮 市 上ケ原 一 番 町 1 - 1 5

Introduction to Japanese Literature ② Introduction to Japanese Culture ② Changing Images of Women② Contemporary Korean Studies B ② The Chinese in Modern Japan ②