Download - データベース技術 11(Database 11)
ビュー表の作成•ビュー表(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