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

24 

Loading....

Loading....

Loading....

Loading....

Loading....

全文

(1)

組織情報論

第4回 データベース

3

データベースの操作

1

講師 佐枝三郎

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

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

(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

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

(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

と同一となる

(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

」として区別する

(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

と同一となる

(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

(期末試験成績

>

中間試験成績)

(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

射影演算の例

性別 学部番号

男 001

女 002

男 002

女 001

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

BG16001 会田一郎 男 001 1

BG16002 石田みどり 女 002 1

BG16003 上村茂 男 002 1

BG15001 大島良子 女 001 2

BG15002 加藤正幸 男 002 2

R

π

性別

,

学部番号

(R)

射影演算(

projection

を行う

!!

(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

)」という

(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

(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

)を行う

!!

(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」

(12)

SQL

標準化のメリット

SQL

ISO

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

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

SQL

に対応した

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

データベースの利用者は

SQL

言語を習得するだけで各

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

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

植や連携が可能

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

なる

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

の共有ができる

23

SQL

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

RDM)

の差異

SQL

では、タプル

(

行)が重複してもよい

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

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

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

SQL

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

属性やタプルの順序

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

順序という概念がない

SQL

では属性には順序がある

SQL

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

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

用語の相違

RDM

:関係(リレーション)

SQL

: 表(テーブル:

table

RDM

:属性

SQL

: 列(コラム:

column

RDM

:タプル

SQL

: 行(ロー:

row

(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

(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

学部テーブル

(

学部番号

)

(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

(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

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

述するものである

(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 1

BG16002 石田みどり 女 19 1

BG16003 上村茂 男 20 1

BG15002 加藤正幸 男 21 2

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

BG16001 会田一郎 男 18 1

BG16002 石田みどり 女 NULL 1

BG16003 上村茂 男 NULL 1

BG15002 加藤正幸 男 21 2

学籍番号 氏名

BG16001 会田一郎

BG15002 加藤正幸

学籍番号 氏名

BG16002 石田みどり

BG16003 上村茂

select

学籍番号

,

氏名

from

学生テーブル

where

年齢

> 18 and

年齢

< 21

select

学籍番号

,

氏名

from

学生テーブル

where

年齢

is NULL

(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

学生テーブル

科目テーブル

(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

(20)

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

39

トランザクション(

transaction

) 処理

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

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

クション」という

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

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

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

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

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

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

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

となる

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

A

さん

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

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

はできない

(21)

トランザクション(

transaction

) 処理

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

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

2

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

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

を防ぐ)

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

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

transaction

processing

)」という

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

ACID

)

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

A

: 原子性(

atomicity

C

: 整合性(

consistency

I

: 隔離性(

isolation

D

: 耐久性(

durability

41

ACID

特性の概要

特性名

特製の概要

A

: 原子性

atomicity

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

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

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

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

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

C

: 整合性

consistency

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

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

なければならない

I

: 隔離性

isolation

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

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

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

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

D

: 耐久性

durability

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

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

(22)

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

ACID

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

行制御が行われる

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

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

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

にアクセスできない

A

さんの銀行口座

預金

+10000

振り込み

+50000

A

さん

B

さん

100000

110000

×

160000

43

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

ACID

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

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

A

さんの銀行口座

預金

+10000

振り込み

+50000

A

さん

B

さん

100000

110000

150000

100000

A

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

!!

(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

などが有名

(24)

47

Updating...

参照

Updating...

関連した話題 :