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

21
データベース技術 11回(2015.12.81

Upload: yuka-obu

Post on 14-Apr-2017

240 views

Category:

Education


0 download

TRANSCRIPT

データベース技術第11回(2015.12.8)

1

ビュー表の作成•ビュー表(View table)

-ユーザーから見たときのみに存在する仮想的な表-実表(Base table):実際のデータが入力される表

•ビュー表 作成の書式- CREATE VIEW ビュー名 AS SELECT文;

•作成したビューからデータの取得- SELECT * FROM ビュー名;

•ビューの削除- DROP VIEW ビュー名;

2

データベースとプログラム•プログラムとデータの独立性

- SQLでデータベース処理を行うことにより、プログラムとデータを分けて考えることが可能

-生産性の向上につながる

データベース

DBMSプログラム SQL

3

プログラムの例(Ruby)require "sqlite3"

db = SQLite3::Database.new("database.db")

sql = "create table Item (商品コード integer primary key, 商品名 text, 価格 int)"db.execute(sql)puts "Itemテーブルを作成しました。"

db.transaction do sql = "insert into Item values (?, ?, ?)" db.execute(sql, 101, "メロン", 800) db.execute(sql, 102, "いちご", 150) db.execute(sql, 103, "リンゴ", 120) db.execute(sql, 104, "レモン", 200)end

db.execute2("select * from Item") do | row | puts row.join("\t")end

db.close

SQL文を作成

SQL文を作成

SQL文を実行

具体的なデータを入力しSQL文を実行

結果を表示

データベースに接続

SQL文を実行

4

プログラミングインタフェース•プログラムとデータベースの間でデータをやりとりするもの•API(Application Programming Interface)

-プログラムをアプリケーションプログラムと呼び、 そのインタフェースなので、APIと呼ぶ

•APIの具体例- Oracle:C言語から呼び出すOCI- PostgreSQL:C言語から呼び出すlibpq問題点:汎用性に欠ける→データベースが変わるとプログラムの変更が必要

5

-ソフトウェアB:ネットワーク経由でライブラリを使う-ソフトウェアA:直接ライブラリを使う-どちらも同じAPIを使っている

プログラミングインタフェース

データベース

サーバ

ソフトウェアB

クライアント

ネットドライバAPI

ソフトウェアA

ネットドライバ

ライブラリ RDBMSAPI

ネットワーク

6

プログラミングインタフェース

データベース

ライブラリ RDBMS1

データベース

ライブラリ RDBMS2

データベース

ライブラリ RDBMS3

ソフトウェアC

クライアントAPI①

ODBCまたはJDBC API②

API③

-製品が異なっても       同じインタフェースを使用できる

7

ODBC•Open Database Connectivity•Microsoft社が制定

•これに従いデータベースベンダがODBCドライバを提供

•ハードウェアやOSの違いを意識せずに済む

•例- Excelからデータベースに接続してデータを取得する

8

ODBCの仕組み(1)•クライアントパソコンに「ODBCドライバ」をインストール•データベースに接続し、データを取得するプログラムを組む- ODBC規格のAPIを利用

•利点-データベース製品の変更の際、プログラムの大幅な変更は不要

-将来の移行を考えた場合、SQL文は標準のものにする9

ODBCの仕組み(2)アプリケーションプログラム

ODBC

ライブラリ または ネットワークライブラリ

RDBMS

←製品ごとに異なる

アプリケーションプログラムODBC

DB Library

SQL Server

アプリケーションプログラムODBC

Net8

Oracle

<SQL Serverの場合> <Oracleの場合>

←ODBC規格のAPIを利用

10

JDBC•Javaプログラミング用につくられたAPI

•JDBCを使うとデータベースを意識せずにアクセス可能

•JDBCの4つのタイプ- ODBC Bridge Driver(TYPE 1)- Native-API Partly-Java Driver(TYPE 2)- Net Protocol All-Java Driver(TYPE 3)- Native Protocol All-Java Driver(TYPE 4)

11

TYPE 1(ODBC Bridge Driver)

•既存のODBCにJDBCのAPIをかぶせることで データベース接続を実現

•JDBCからODBCに「橋渡し」

JDBC-ODBCブリッジドライバ

ODBCドライバ

データベース

クライアント

ネイティブプロトコル

(例:SQLコマンド)

ODBCAPI

Javaアプリケーションプログラム

12

•JDBCのAPIを、データベース製品固有のAPI (ネイティブライブラリ)に変換する

•アプリケーションを動作させるデータベース 製品固有のAPIが必要になる

TYPE 2( Native-API Partly-Java Driver)

ネイティブブリッジドライバ

クライアントライブラリ

データベース

クライアント

ネイティブプロトコル

(例:SQLコマンド)

ネイティブAPI

Javaアプリケーションプログラム

13

•データベース接続の部分をアプリケーションプログラムから分離•JDBC APIをDBMSに依存しないネットプロトコルに変換し、中継サーバに接続•中継サーバは、ネットプロトコルをDBMS特有のプロトコルに変換し、ドライバとDBMSとの接続を仲介する

TYPE 3( Net Protocol All-Java Driver)

ネットプロトコルドライバ

ネイティブライブラリ

データベース

クライアント

ネイティブプロトコル

中間プロトコル

Javaアプリケーションプログラム

中継サーバ

リスナ

14

•データベース製品固有のAPIをJDBCドライバにすべて実装したもの

•クライアント側にデータベース製品固有のAPIのインストールが不要

TYPE 4( Native Protocol All-Java Driver)

ネットプロトコルドライバ

データベース

クライアント

ネイティブプロトコル

Javaアプリケーションプログラム

15

Webとデータベース(1)•Web創世記:固定的な文書の公開

•WebサーバにCGIが追加- CGI(Common Gateway Interface):ユーザが作成したプログラムを呼び出す機能

-動的な情報が扱えるようになった

•現在:アプリケーションのWeb化- GmailやGoogleカレンダーなど様々なWebサービスが提供されている

16

Webとデータベース(2)•負荷分散の仕組み

-サーバを3つの役割りに分け、多数のユーザに対応

データベース

データベースサーバ

Webサービス Webアプリ

アプリケーションサーバ

Webサーバ

Webサイトの見た目を作るクライアントとの窓口

計算をする データを管理する役割り:

ユーザ

クライアント

17

Webとデータベース(3)•Twitter API

- Twitterの情報を利用することができる

-例:ウィジェット

ここのソースコードをWebサイトに貼付けるとWebサイトにツイートが表示される

18

Excelとデータベース(1)•Excelでは、データベースからデータ取得可能

•外部データ参照機能を使う

•この機能では、ODBCが使われている

•例-データベースにある売上データをExcelに取り出し、グラフ化

19

Excelとデータベース(2)

20

Microsoft Accessとデータベース•小規模なデータベースシステム構築が可能•利点

-フォーム機能を使って簡単にアプリケーションプログラムが作成できる

-細かい制御はVBA(Visual Basic Application)を利用

•Accessをフロントエンドとすることができる-フロントエンド:画面の機能(Accessで作成)-バックエンド:データベスの機能(Oracleなどの大規模データベースを使用)

21