Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

データベースシステム論02 - データベースの歴史と今

2,599 views

Published on

静岡大学情報学部「データベースシステム論」講義スライド
第2回:データベースの歴史と今

Published in: Education
  • Be the first to comment

データベースシステム論02 - データベースの歴史と今

  1. 1. データベースシステム論 2016年度 前期 水曜 1・2時限 情24教室 担当:横山昌平 データベースシステム論 第2回2015 [ ] 1p.
  2. 2. 講義担当者 • 情報学部 情報科学科 准教授 横山昌平 • 研究室 • Web : http://lab.yokoyama.ac/ • Facebook :http://facebook.com/lab.yokoyama.ac/ • 居室 • 情報学部1号館6階 J1612室 • オフィスアワー • 講義終了後1時間 ※なるべく講義時間中に発言・質問してください データベースシステム論 第一回2016 [ ] 2p.
  3. 3. 講義計画 • 関係データベースの歴史と基本概念 • SQLの基礎と応用(演習を含めつつ) • データベースの設計と構成 • SQL問い合わせ処理とそれを支える技術 • 関係データモデル以外のデータベース データベースシステム論 第一回2016 [ ] 3p. ※現時点での予定です。進捗に応じて変更します。 27Apr. 20Apr. 13Apr. 25May 18May 11May 1June 8June 29June 22June 20July 13July 6July 27July
  4. 4. 教科書は買いましたか? • 森北出版 • 石川博 • 情報工学レクチャーシリーズ • 『データベース』 データベースシステム論 第2回2015 [ ] 4p.
  5. 5. データベースシステム論 第2回 データベースの歴史と今 データベースシステム論 第2回2015 [ ] 5p.
  6. 6. 本日の内容 • データベースの技術的な講義に入る前段階 • データベース登場の背景 • データベースの歴史 • 現在のデータベースの使われ方(Webを例に) データベースシステム論 第2回2015 [ ] 6p. 次回から、データベース技術を詳細に学んでいきま すが、その前に、データベースがなぜ登場して、なぜ 使われているのかの歴史を学びましょう。 また、Webアプリケーション等でどのようにデータ ベースが使われているのかを学び「意外に身近な存在 なんだな」という事を理解した上で、来週以降の技術 的な話に進みましょう。
  7. 7. コンピュータとは何か? • “How”の視点 (何をどうやって実現するのか) • 命令に従って動く機械 • クイックソートで昇順に並べ替え • プログラミング言語を機械語にコンパイル • 3Dグラフィックの高度な座標計算 • “What”の視点 (それが何であるのか) • データを入力し保存し処理し表示する機械 • 膨大なデータから必要な情報を瞬時に提示 • 3Dで再現された精細な地球 • ソースコードでさえ単なる文字列データ データベースシステム論 第2回2015 [ ] 7p. この考え方がまさにデータベースシステムの根底の考え方
  8. 8. 情報化社会はデータが主役 • スマートフォン • 機種 →新しいのが出たら変更したい! • データ→機種変しても残しておきたい! • 検索エンジン • ググれカス!→そこに求めるデータがあるはず • 皆さんのノートPC • ハードウェア→壊れても保障で直してもらえる • データ→壊れたら最後・・・ • デジタルカメラ • どんどん写真(データ)が貯まっていく・・・ データベースシステム論 第2回2015 [ ] 8p.
  9. 9. データの管理がとても重要 • 身の回りの重要なデータ • 電話帳 • メール履歴 • 貴方の成績データ • 預金残高 • リスク • データがなくなるリスク • ハードディスクが壊れました! • データが知らない内に書き換わるリスク • 誰かが書きかえた?それとも酔っぱらった俺? • データが矛盾するリスク • ノートPCとスマホのスケジュール帳で集合時間が違う データベースシステム論 第2回2015 [ ] 9p.
  10. 10. 例1.銀行での送金 • 「母ちゃん、俺だよ!金くれよ!」の例 データベースシステム論 第2回2015 [ ] 10p. 口座B 口座A銀行システム -$100- +$100-
  11. 11. 例2.家族の口座 • 「飲み代無いっ!」 データベースシステム論 第2回2015 [ ] 11p. ATM1 ATM2銀行システム OK! $100- 残高チェック 出金 残高チェック OK! &「生活費おろさなきゃ!」
  12. 12. 想像してごらん • 貴方が銀行のシステムを開発しているところを… データベースシステム論 第2回2015 [ ] 12p. 怖いでしょ?
  13. 13. データベースの必要性 • 全ての開発・実装案件にデータ処理はつきもの • 毎回「安全・完全な実装」をするのはコスト高 • ただどんなアプリにとってもリスクは共通 • データ処理を頑健にこなすシステムの重要性 • アプリから独立して存在している事に意義がある • それがデータベースシステム • データ処理を安全・完全に行う為のシステム データベースシステム論 第2回2015 [ ] 13p. この講義は「これまでのプログラミングに加えてさらに難 しい事を勉強する」のではなく、「今後、皆さんの実装を 楽にする為の知識を得る」事を目指しています。
  14. 14. データモデルの変遷 • 教科書を読んでみよう。 • P.6~P.9 • 1.4.1 ネットワーク型モデル • 1.4.2 階層型モデル • 1.4.3 関係データモデル データベースシステム論 第2回2015 [ ] 14p.
  15. 15. 歴史 • ネットワーク型データモデル(1960年代) データベースシステム論 第2回2015 [ ] 15p. データベースの歴史は、現実の我々の身の回りにある 情報をどのようにコンピュータ上に再現するかの挑戦 といえる。我々が当たり前のように使っている表形式 のデータが登場する前に様々な試みがあった ワイン バローロ 1万円 人 山田 50歳 人 佐藤 40歳 買う 売る
  16. 16. 歴史 • 階層型データモデル(1960年代後半) データベースシステム論 第2回2015 [ ] 16p. データベースの歴史は、現実の我々の身の回りにある 情報をどのようにコンピュータ上に再現するかの挑戦 といえる。我々が当たり前のように使っている表形式 のデータが登場する前に様々な試みがあった 人 佐藤 部長 人 山田 課長 人 渡辺 課長
  17. 17. 歴史 • 関係データモデル(1970年代) データベースシステム論 第2回2015 [ ] 17p. データベースの歴史は、現実の我々の身の回りにある 情報をどのようにコンピュータ上に再現するかの挑戦 といえる。我々が当たり前のように使っている表形式 のデータが登場する前に様々な試みがあった 役職 名前 部長 佐藤 課長 山田 課長 渡辺 支店長 マイケル 部下 上司 山田 佐藤 渡辺 佐藤 マイケル 佐藤
  18. 18. なぜ関係データベースか • ネットワーク型・階層型データベース • Edgar F. Codd(1923-2003) • データはハードウェアから独立して格納されるべき • 行と列のみで構成される表として格納されるべき • 非手続き型言語を使ってデータにアクセスすべき データベースシステム論 第2回2015 [ ] 18p. ナビゲーション(レコード間の繋がり)構造に詳しくないと、 クエリ(検索等命令)が書けない点が問題。 Codd, Edgar F. "A relational model of data for large shared data banks."Pioneers and Their Contributions to Software Engineering. Springer Berlin Heidelberg, 2001. 61-98. これらそれぞれの意味は次回説明しますが、ここで覚えて おいて欲しいのは、関係データモデルは単純簡潔だという 事です。それが普及し、また今でも使われている一因です。
  19. 19. 関係データベースの歴史 • 最初期 • Oracle Version 1 (1978) • 未発売 • IBM System38 (1979) • OSレベルでサポート データベースシステム論 第2回2015 [ ] 19p. Oracle V1が動作したPDP-11System38
  20. 20. 関係データベースのシェア • Oracle Database - 70% • Microsoft SQL Server - 68% • MySQL (Oracle Corporation) - 50% • IBM DB2 - 39% • IBM Informix - 18% • SAP Sybase Adaptive Server Enterprise?- 15% • SAP Sybase IQ - 14% • Teradata - 11% ※Gartner 2008年調べ データベースシステム論 第2回2015 [ ] 20p.
  21. 21. データベース製品の変遷 • Wikimediaより • http://upload.wikimedia.org/wikipedia/commons/a/ a2/RDBMS_timeline-2.svg データベースシステム論 第2回2015 [ ] 21p.
  22. 22. 関係データベースの今 データベースシステム論 第2回2015 [ ] 22p. 行政・交通・金融などの基幹系のシステムのみならず、Webアプ リケーションやスマホのアプリケーションにも使われている。 RDBとWEB
  23. 23. 用語 • 3層クライアントサーバーシステム • 第1層:プレゼンテーション層 • 第2層:ロジック層(アプリケーション層) • 第3層:データ層(データベース層) • 例:Web3層クライアントサーバーシステム • 第1層:Webブラウザ / HTML • 第2層:Webサーバ / PHP, Perl, Ruby, Python… • 第3層:データベースサーバ / SQL データベースシステム論 第2回2015 [ ] 23p.
  24. 24. 用語(Web技術) • HTML (HyperText Markup Language) • Webページの『みてくれ』を記述する言語 • HTTP (HyperText Transfer Protocol) • Webページを取り寄せたりする通信の仕様 • URL (Uniform Resource Locator) • インターネット上の住所表現 • CGI (Common Gateway Interface) • Webサーバ上でプログラムを動かす仕組み • Server-side Scripting • Webサーバ上でプログラムを動かす仕組みpert2 • Client –side Scripting • Webブラウザ上でプログラムを動かす仕組み データベースシステム論 第2回2015 [ ] 24p.
  25. 25. 古き良きWeb • 静的なHTMLファイルを取り寄せる仕組み データベースシステム論 第2回2015 [ ] 25p. サーバブラウザ Internet http://inf.shizuoka.ac.jp/index.html のファイルください! OK~ はいどうぞ! inf.shizuoka.ac.jp HTTP Request HTTP Response
  26. 26. ちょっと発展したWeb • 動的なコンテンツを取り寄せる仕組み データベースシステム論 第2回2015 [ ] 26p. サーバブラウザ Internet http://inf.shizuoka.ac.jp/index.php のファイルください! OK~ はいどうぞ! HTTP Request HTTP Response inf.shizuoka.ac.jp
  27. 27. 何が違う - 静的と動的 静的コンテンツ • HTMLファイル →クライアントに転送 動的コンテンツ • PHPプログラム →コードが実行 データベースシステム論 第2回2015 [ ] 27p. <html> <body> <h1>現在時刻</h1> 何時か分かりませんorz </body> </html> <html> <body> <h1>現在時刻</h1> <?php print(date(“r”)); ?> </body> </html> クライアント送信時にコードが実行 される為、現在時間を取得する関数 を使って現在時刻を表示できる。 HTMLは単なるテキストファイルで あり、メール添付と同じく、ファイ ルがクライアントに送信されるだけ。
  28. 28. 三層構成のWeb • データベースを利用したWebアプリ データベースシステム論 第2回2015 [ ] 28p. DBサーバブラウザ Webサーバ
  29. 29. 三層構成のWeb • データベースを利用したWebアプリ データベースシステム論 第2回2015 [ ] 29p. DBサーバブラウザ Webサーバ <?php $conn = pg_pconnect(オプション); $result = pg_query($conn, "SELECT name,mail FROM students"); print “<table>”; while ($row = pg_fetch_row($result)) { print “<tr>”; print ”<td>$row[‘name’]</td>"; print “<td>$row[‘mail’]</td>”; print "</tr>¥n"; } print “</table>”; ?>
  30. 30. 三層構成のWeb • データベースを利用したWebアプリ データベースシステム論 第2回2015 [ ] 30p. DBサーバブラウザ Webサーバ <?php $conn = pg_pconnect(オプション); $result = pg_query($conn, "SELECT name,mail FROM students"); print “<table>”; while ($row = pg_fetch_row($result)) { print “<tr>”; print ”<td>$row[‘name’]</td>"; print “<td>$row[‘mail’]</td>”; print "</tr>¥n"; } print “</table>”; ?> <table> <tr> <td>山田太郎</td> <td>yamada@inf.jp</td> </tr> <tr> <td>佐藤次郎</td> <td>sato@inf.jp</td> </tr> </table> 出 力
  31. 31. 三層構成のWeb • データベースを利用したWebアプリ データベースシステム論 第2回2015 [ ] 31p. DBサーバブラウザ Webサーバ <?php $conn = pg_pconnect(オプション); $result = pg_query($conn, "SELECT name,mail FROM students"); print “<table>”; while ($row = pg_fetch_row($result)) { print “<tr>”; print ”<td>$row[‘name’]</td>"; print “<td>$row[‘mail’]</td>”; print "</tr>¥n"; } print “</table>”; ?> <table> <tr> <td>山田太郎</td> <td>yamada@inf.jp</td> </tr> <tr> <td>佐藤次郎</td> <td>sato@inf.jp</td> </tr> </table> 出 力 山田太郎 yamada@inf.jp 佐藤次郎 sato@inf.jp表 示
  32. 32. ユーザ入力の処理 • ユーザの入力に従って問い合わせたいよね? データベースシステム論 第2回2015 [ ] 32p. DBサーバブラウザ Webサーバ 山田太郎 yamada@inf.jp 佐藤次郎 sato@inf.jp 山田太郎 yamada@inf.jp 苗字が「山田」のデータだけ欲しい! SELECT name, mail FROM student WHERE name LIKE ‘山田%’;
  33. 33. ユーザ入力の処理 • SQLはともかく、PHP(サーバ側)はどう書く? データベースシステム論 第2回2015 [ ] 33p. 検索 山田 <form method=“GET” action=“sql.php”> <input type=“text” name=“N”/> <input type=“submit”/> </form> OK http://inf.shizuoka.ac.jp/sql.php?N=山田 <?php print $_GET[“N”]; //山田を出力 ?> 移 動
  34. 34. <?php print $_GET[“N”]; //山田を出力 ?> ユーザ入力の処理 • SQLはともかく、PHP(サーバ側)はどう書く? データベースシステム論 第2回2015 [ ] 34p. 検索 山田 <form method=“GET” action=“sql.php”> <input type=“text” name=“N”/> <input type=“submit”/> </form> OK http://inf.shizuoka.ac.jp/sql.php?N=山田 移 動 <?php $conn = pg_pconnect(オプション); $result = pg_query($conn, "SELECT name,mail FROM students"); $result = pg_query($conn, “SELECT name, mail FROM student WHERE name LIKE ‘”.$_GET[“N”].”%’;”) print “<table>”; while ($row = pg_fetch_row($result)) { print “<tr>”; print ”<td>$row[‘name’]</td>"; print “<td>$row[‘mail’]</td>”; print "</tr>¥n"; } print “</table>”; ?> 山田太郎 yamada@inf.jp 佐藤次郎 sato@inf.jp 表 示 山田太郎 yamada@inf.jp
  35. 35. WebアプリとDBの関係 • Webアプリには3層のソースコードが含まれる • HTML/JavaScript: ブラウザ上で動作するスクリプト • PHP: Webサーバ上で動作するスクリプト • SQL: DBサーバ上で動作するスクリプト • エッセンス • プログラムの出力がそのままブラウザの入力へ • SQLはプログラム上は文字列として格納される • HTMLフォームの入力は変数にバインドされる • 文字列連結によりSQLを動的に作り出す • DBの結果をテーブル等で整形して出力する • どうですか?なんとなくイメージ湧きました? データベースシステム論 第2回2015 [ ] 35p.
  36. 36. 次回予告 第3回 関係データモデルと関係代数 データベースシステム論 第2回2015 [ ] 36p.
  37. 37. 第3回 関係データモデルと関係代数 • データモデルの独立 • データベースの利用者 • 関係データモデル • リレーション • 関係代数 • 予習 • 対応箇所:第2章 • 関連個所:第1章 データベースシステム論 第2回2015 [ ] 37p.

×