データベース
第 1 回 データベースの歴史
鈴木幸市
本日の内容
自己紹介
講義の概要と進め方
データベースとは何か
データベースの提供する機能
データベースとデータモデル
データベースの歴史
リレーショナルデータベースの超概要
トランザクションと ACID 特性
自己紹介
NTT 研究所、 NTT データ、 NTT データ先端技術にてデータベース
等の開発等に従事
データベース
Oracle 5 の移植、日本語化
UniSQL オブジェクトリレーショナルデータベースの開発
PostgreSQL の検証と開発
64ビットサポート機能
性能安定化
性能向上
並列処理
PostgreSQL クラスタ
Postgrex-XC
サーバをたくさん並べて性能を上げる
その他
多言語文字コードの標準化
Unicode
平成明朝体、平成ゴチック体の開発プロモート
Linux 障害解析手法の開発
講義の概要と進め方 (1)
講義の全体構成:シラバス参照
データベースの歴史
Why データベース?いろいろなデータベース、、、、
磁気ディスクの特徴とファイル編成
ディスクの特性を意識したデータ処理
リレーショナルデータベース
データモデルと SQL の基盤
データの整理の仕方: ER モデル
データベースを作る基本
トランザクション
データベースアプリケーションの基本
データベース言語 SQL(1) 、 (2)
データベースのデータを読み書きする方法
データベース管理システム (DBMS)
たくさんのデータをたくさんのアプリケーションで同時に読み書き するプログラム
DBMS の事例
商用からフリーなものまで
講義の概要と進め方 (2)
正規化
リレーショナルデータベースの設計方法
RDB の実際
データベースの設計からアプリケーション作成まで
データベース構成とテスト
システム作りのために
可用性
バックアップとリカバリ
分散データベース、オブジェクトデータベース
なぜ分散データベース?
地域分散
データベースクラスタ
オブジェクトとリレーション
データベースと WWW の連携、データウェアハウス
Web 三層モデルによるサーバ構築
大規模なデータの統計検索
講義の概要と進め方 (3)
講義のポイント
データベースを「使う」上で必要な知識、考え方を中心に進める
いろいろな技術要素の「背景」「なぜ」を理解してほしい
受講に当たって
講義資料はサーバにアップします。事前に軽く読んでおいてほしい
講義時間中に理解してもらえる内容に限定するつもり
しっかり出席することが理解の早道
あとで講義資料を読んで理解するより講義に出席した方が時間の節約
評価の方法
出席
とります。最重視します。
演習
随時。全体で 2 回程度
期末課題
MS-Accessを使ったデータベースの作成など
条件は別途提示します
質問
積極的に質問すればいいことあるかも
その他
理解を深めるために、希望者には補講をするかも ← 積極的に申し出てくだ さい
敗者復活
出席
出席できなかった回の資料まとめを作ること
内容を理解しているようであれば出席にします
追加質問をするかもしれません
講義に出席したほうが時間の節約です
演習
出席できなかった演習を事後提出するも可
12 点満点で採点します。 3 点はペナルティ。
データベースとは何か
大きく 2 つの意味がある
データそのもの
遺伝子データベースなど
データを蓄積して利用する仕組み
リレーショナルデータベースなど
「データベース」といわれたら
まず上のどの意味かを注意すること
多くは 2 つのミックスになっている
データベースはサーバにインストー
ルする 通常専用のサーバで運転する
基本的な作りは皆さんの PC と同じ
壊れにくい、故障したら故障個所がすぐわかる
信頼性が高い ( 値段も高い ) 部品
故障診断機能など
高速 (3GHz 以上 ), マルチコア (16 コア、 32 コ
ア )
大容量メモリ (16GB, 32GB あるいはそれ以上 )
サーバ用 OS
Windows Server, Linux, Unix, …
効率よくラックに搭載する
サーバ (1)
サーバ (2)
サーバ (3)
なぜデータベースが必要か (1)
データとアプリケーションを分離したい
複数のアプリケーションでデータを共用したい
銀行の預金、引き出し、送金、利息計算
複数の処理を同時に実行させたい
他の人の預金が終わるまで自分が預金できないのは困る
データベース B さんの引き出し
C さんの送金
A さんの預金
データベース
データベース
なぜデータベースが必要か (2)
データとアプリケーションを分離したい
データの方がはるかに寿命が長い
30 年以上にわたって運用されているデータベースがある
アプリケーションは制度・ルールなどでどんどん変わる
データベースは手直ししながら使い続ける
データベースを分離して運用したい
データ量の増加
アプリケーションを変更しないでデータの構造や配置を変更
データベース
アプリケーション
データベース
データベース
•アプリケーションロジック変更
•入出力フォーマット変更
•アプリケーション追加
•ディスクの追加
•構造変更 ( インデックス追加な ど )
なぜデータベースが必要か (3)
データを安全確実に保存したい
サーバが故障してもデータは保全する
停電が起こっても、火事になっても、地震が
起こっても、津波がきても
データベースと DBMS
アプリケーションがデータベースを使うために必要な機能を提供する
のがデータベース管理システム
DBMS: Database Management System
通常、オペレーティングシステムとアプリケーションの間に位置する
ミドルウェア (Middleware) と呼ばれる
カーネル空間ではなくユーザ空間で動作するのがほとんど
データベースの提供する機能 ( 1 )
データベース言語
データベースにいろいろな指示をするための言語
データの構造の定義 (DDL: Data Definition Language)
データの読み書き (DML: Data Manipulation Language)
トランザクションの制御など (DCL: Data Control Language)
プログラム言語とは異なる
リレーショナルデータベースなら SQL
プログラム言語と組み合わせて使う
埋め込み SQL
関数呼び出しのなかで SQL を書く
データベース言語の指示内容は DBMS が OS の入出力などに翻
訳して実行する。このとき、もっとも効率がよくなるようにす
る (最適化)
物理的データ独立性
データを記憶媒体の中でどのように格納するかはアプリケー
ションでは意識しない
データベースの提供する機能 ( 2 )
論理的データ独立性
データの構造とは別な構造で読み書きできる
データの一部だけを読み書きする (ビュー )
データ完全性
データ相互間の関係が矛盾のないように維持する
データの値の制約
データの相互関係の制約
トランザクション処理
データの読み書きが中途半端に終わらないようにする
完了した処理結果が決して失われないようにする
同時実効制御
多くのアプリケーションからの処理要求を同時に受け付けてお互いに衝 突しないようにデータの読み書きを制御する
セキュリティ
与えられた権限の範囲内でしかデータの読み書きができないようにする
バックアップと障害復旧 (リカバリ )
故障に備えてデータベースの内容を安全な場所にコピーする
サーバやストレージ(ディスク装置)が壊れてもデータを元に戻してシ ステムの運転が継続できるようにする
データベースとデータモデル
何でもデータベースに入る訳ではない
データの構造に「約束」を決めておかないと
データベースは動かない
データモデルはこの「約束」のこと
具体例
階層型データモデル
CODASYL 型データモデル
リレーショナルデータモデル
オブジェクト指向データモデル
オブジェクトリレーショナルデータモデル
最も重要な
モデル
データベースの歴史
1950 年代:黎明期
データベースの考え方の研究
1960 年代:初期普及期
初期の商用データベース
多くは階層型モデル
今でも多くが運用中 !!
CODASYL がデータベースインタフェースの標準化
1970 年代:リレーショナルデータベース登場
Codd がリレーショナルデータベースの提案
商用リレーショナルデータベースの登場
現在の主流
1980 年代:リレーショナルデータベースの発展
SQL 言語の登場
データベースの歴史
1990 年代:リレーショナルの普及、他のデータモデル
SQL の標準化 (SQL92, SQL99)
リレーショナルデータベースを用いたシステム開発があたりまえ
に
オブジェクト指向データベース、オブジェクトリレーショナル
データベースの登場
データベースを用いた Web アプリケーションの登場
2000 年代:インターネットとのつながりとオープンソースの流れ
Java, Perl, PHP などの Web アプリケーションとデータベースの
つながり強まる
オープンソースのデータベース、その他のプラットフォームが商
用サービスでも
Linux (OS)
Tomcat, JBoss (Web アプリケーションサーバ )
PostgreSQL, MySQL, Firebird ( データベース )
SQL がデータベースの中核
データベースシステム間の違いは少ない
リレーショナルデータベースの超概要
あらゆる情報は「表」で表す:テーブル、リレー
ションともいう
表の中に表を入れたりしてはいけない
数字や文字列などの「項目」を入れるだけ
データベースによっては「配列」や「レコード」を入れること
もできるが、許可された形式のデータしか入らない。
表の作成、表のデータの読み書きは SQL 言語で行う
これ以上の詳細は「リレーショナルデータベース」
の回で説明
学籍番号 氏名 学部 学科 入学年度
0001 相田翔子 環境情報学部 情報メディア学
科
2006
0002 赤坂泰彦 環境情報学部 情報メディア学
科
2006
0003 明石家さんま 環境情報学部 情報メディア学 科
2006
トランザクションとは
アプリケーションの処理の単位
A さんの口座の残額を読む
振り込み額を A さんの口座から減額 B さんの口座の残額を読む
振込み額を B さんの口座に加える
トランザクションの
例 こ
の 途 中 で 止ま っ て は 困 る
止まったら最初 に戻ってほしい
無事ここまで処理できたら後で消 えてもらっては困る
データベースは上記ようにトランザクションの保護や取り消
しの機能を持っている
トランザクションの ACID 特性
トランザクションの持つべき重要な 4 つの特性
A (Atomicity)
トランザクションは中途半端で完了しない
完了できない場合はキャンセルして元に戻る
C (Consistency)
データに矛盾が生じる書き込みをさせないこと
データに矛盾がないようにデータを格納できること
I (Isolation)
他のトランザクションが実行中であることを意識しな
いで処理できること
D (Durability)
一旦完了したトランザクションの結果はいかなること
があっても失ってはならないこと