情報通信システム(12) http://www10.plala.or.jp/katofmly/chiba-u/ 2015年7月14日 火曜日 午後4時10分~5時40分 NTT-IT Corp. 加藤 洋一 千葉大学 12- 2 Web+データベース • 本日は、情報システムの最近の主流である、Web+データ ベースで成り立っているシステムを概観してみましょう。 – インターネット上での飛行機の予約、購入、オークション、など全て Web+データベース(DB)で出来ています。 – 将来仕事でこのようなシステムに携わる人も何人かはいるでしょう。 要求 クライアント 結果 SQL IPネットワーク DBサーバー データの管理 Webブラウザーで表示 文書形式は「HTML」 プロトコルはHTTP HTTPヘッダー 要求の解釈と処理、 コンテント(通常はHTML) HTMLの生成 Webサーバー クライアント SQL:データベースからデータを取り出したり格納したりするための標準的なコマンド 千葉大学 12- 3 リレーショナルデータベース • データベースは、2次元のテーブルでデータを管理し ます。 列(Column) テーブル定義 行(Row) パーツ名 マザーボードA型 定価 19,800 卸価格 11,000 CPU 840型 メモリー512MB 24,800 7,900 14,000 3,900 千葉大学 12- 4 リレーショナルデータベース • データベースとはテーブル(表)の集まりです。 学科一覧表 学科名 電子機械 画像情報 定員 45 40 現在人員 41 39 都市環境 20 18 教員一覧表 教員名 所属学科 役職 千葉太郎 電子機械 教授 弥生花子 都市環境 準教授 松戸次郎 都市環境 講師 千葉大学 12- 5 主キー • 行を特定するためのカラム(項目) – 何とかIDのように、ユニークな番号を行ごとに振 る方法が一般的 – 学籍番号、職員番号、など • 行を特定するためのカラムが複数のカラムの 組み合わせという場合もある 千葉大学 12- 6 検索の高速化 • 検索の高速化には、「INDEX」と呼ばれるデータを 用意する。 – INDEXの代表的なものはBTREE(バイナリーツリー) INDEX Apple 検索条件 = Mango リストの中央のデータと比較 リストの中央のデータと比較 Kiwi<Mango Orange >Mango Banana Blueberry Grape Kiwi Mango Orange Pineapple Watermelon リストの半分が検索対象 さらに半分 Kiwi Mango Orange Pineapple Watermelon Kiwi Mango Orange : 元のデータ数がN個とすると、log2 N回の比較で見つかる 千葉大学 12- 7 データベースの設計のポイント • データベースシステム(RDBMS)が扱える形 にする – RDMBSは「2次元」のテーブルである。つまり、ひ とつのセルに複数のデータは入らない • 同じデータはできる限り一箇所に格納する – データ登録や更新がひとつのデータについて一 回ですむようにする 千葉大学 12- 8 ひとつのセルにはひとつのデータ 学籍番号 氏名 受講する講義 講師 78T1613 加藤洋一 回路理論 電磁気 回路理論(小郷) 電磁気(大川) 78T1615 金丸裕二 回路理論 計算機 回路理論(小郷) 計算機(倉田) 学籍番号 氏名 受講する講義 講師 78T1613 加藤洋一 回路理論 小郷 78T1613 加藤洋一 電磁気 大川 78T1615 金丸裕二 回路理論 小郷 78T1615 金丸裕二 計算機 倉田 千葉大学 12- 9 データはできる限り一箇所に格納(更新を簡単化) 学籍番号 氏名 受講する講義 講師 78T1613 加藤洋一 回路理論 小郷 78T1613 加藤洋一 電磁気 大川 78T1615 金丸裕二 回路理論 小郷 78T1615 金丸裕二 計算機 倉田 そのためにはテーブルを分割する 学籍番号 氏名 78T1613 加藤洋一 学籍番号 受講する講義 78T1615 金丸裕二 78T1613 回路理論 講義名 講師 78T1613 電磁気 回路理論 小郷 78T1615 回路理論 電磁気 大川 78T1615 計算機 計算機 倉田 千葉大学 12- 10 リレーショナルデータベースシステム(RDBMS) • リレーショナルデータベースシステムは、SQLという言語で操 作します。 • 本講義では、フリーのSQLベースデータベースシステムでは 最も充実していると考えられているPostgreSQLを題材に データベースシステムについて学習します。 • 今回は、Windows版のPostgreSQLを使用します。 • http://www.enterprisedb.com/products/pgdownload.do#windo ws PostgreSQLのホームページ PostgreSQLの日本のユーザーグループ www.postgresql.org www.postgresql.jp 千葉大学 12- 11 SQL:データベースの作成 • データベースの作成はcreatedbコマンド – 削除はdropdb • テーブルの作成は、create tableコマンド – 削除はdrop table コマンド 部品番号 部品名 CPU000001 Pentium 840 : メーカー名 販売価格 仕入れ価格 Intel 29800 13000 : : : : create table parts ( pid varchar(10) name varchar(50) maker varchar(20) price int buy int ); テーブル名 not null, null, null, null, null カラムの定義 千葉大学 12- 12 テーブルに行を追加する • Insert into コマンドを使います – Insert into ‘テーブル名’ (カラム名のリスト) values (値のリスト); – テーブル定義の順に値を入れるときは、 (カラム 名のリスト) を省略できる insert into parts values('CPU000001', 'Pentium 840', 'Intel', 49800, 25600); insert into parts values('CPU000002', 'Pentium 830', 'Intel', 39800, 21100); insert into parts values('CPU000003', 'Pentium 820', 'Intel', 29800, 15600); insert into parts values('CPU000004', 'Athlon 3000', 'AMD', 19800, 9600); insert into parts values('CPU000005', 'Athlon 3500', 'AMD', 29800, 14600); 千葉大学 12- 13 データベースからデータを取り出す • Selectコマンドを使う – Select ‘項目’ from ‘テーブル名’where ‘検索条 件’; (SQLは最後にセミコロンをつける) – 項目は、カラム名、式などが入る • 全ての項目のときは、*を使う – Select * from parts; • カラム名の指定 – Select pid, price from parts; •式 – Select name, buy*100/price from parts; – 実際にやってみましょう。 千葉大学 12- 14 データベースからデータを取り出す • 検索条件はwhere句で指定する – 簡単な形 • Select * from parts where price > 10000; • Select * from parts where maker = ‘Intel’; • Select * from parts where price > 20000 and maker = ‘Intel’; – 文字列の前方一致と後方一致(ワイルドカード) • Select * from parts where name like ‘HD%’; • Select * from parts where name like ‘%840’; • Select * from parts where name like ‘%33%; • 実際にやってみましょう 千葉大学 12- 15 更新と削除 • 更新 – Update ‘表名’ set ‘カラム名’=‘式’… where …; – Where句で指定した行の特定のカラムの内容を 変更する。 • 削除 – Delete from ‘表名’ where …; – Where句で指定した行を削除する。 • やってみましょう 千葉大学 12- 16 テーブルの積とJOIN • テーブルの積 – 2つのテーブルの行の全ての組み合わせ(2つの テーブルの行の積に相当する行が生じる) – Select * from table_a, table_b; • JOIN – 2つのテーブルの一致するカラムを指定する。 – Select * from table_a, table_b where table_a.id = table_b.id; – 実際にやってみます。 千葉大学 12- 17 PythonからPostgreSQLにアクセスする • PythonからPostgreSQLにアクセスすること ができます。 – 今回は、psycopg2というフリーのパッケージを使 います。他にもいくつか方法があります。 import psycopg2 conn = psycopg2.connect('dbname=partsdb user=postgres password=postgres') cur = conn.cursor() a = cur.execute (‘select * from parts;’) b = cur.fetchall() print b cur.close() conn.close() 千葉大学 12- 18 HTML • HTMLは、Webページの書式の規定です。 – 基本的にテキストファイルです。 – 「タグ」と呼ばれるコマンドで書式などを指定しま す。 <html> <head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <title>Hello World</TITLE> </head> <body> <center> Hello World </center> </body> </html> 千葉大学 12- 19 HTML • 簡単な表です。 <table width=300> <tr> <td bgColor="#00cc66"> test 11 </td> <td bgColor="#00cc66"> test 12 </td> <td bgColor="#00cc66"> test 13 </td> </tr> <tr> <td bgColor="#c0c0c0"> test 20 </td> <td bgColor="#c0c0c0"> test 21 </td> <td bgColor="#c0c0c0"> test 22 </td> </tr> <tr> <td bgColor="#c0c0c0"> test 1 </td> <td bgColor="#c0c0c0"> test 1 </td> <td bgColor="#c0c0c0"> test 1 </td> </tr> </table> 千葉大学 12- 20 FORM • フォームとは、ユーザーの入力エリアのことで す。 – テキスト、選択、などいくつかの形式があります。 – 入力エリアの情報は、以下のようにしてサーバー に伝えられます • URLの一部として(…/ ?Min=1000&Max=5000) • HTTPのコンテント領域に格納される <form name="form1" method="post" action="/cgi-bin/parts2.py"> Minimum Price <input type="text" name="min" value="0" width=100> <br> Maxmum Price <input type="text" name="max" value="1000000" width=100> <br> <input type="submit" name="submit" value="Select"> </form> 千葉大学 12- 21 CGI • CGIとは、Webサーバー上で何らかのプログ ラムを実行し、その結果をHTMLとして受け取 る仕組みです。 – CGIを作成するには様々な言語が使われていま す。なぜかpではじまるものが多いです(perl, php, python)。 – 実際に、サンプルプログラムを動かして見ます。 千葉大学 12- 22 サンプルのメモ • 以下のパッケージをインストールします – Apache(HTTPサーバー) • http://www.apache.org • ごく普通にインストールしてください。 – PostgreSQL(RDBMSサーバー) • http://www.postgresql.org • ごく普通にインストールします。指定したパスワードを 忘れないように。 – psycopg2(PythonからPostgreSQLを使うため のもの) • http://initd.org/psycopg/ • ごく普通にインストールします。 千葉大学 12- 23 サンプルのメモ • Apacheの設定 – ApacheからPythonを使うため、以下の設定をし ます。 • C:\Program Files\Apache Group\Apache2\conf\httpd.confをメモ帳やWordPad などのテキストエディタで開く(管理者権限が必要) • #AddHandler cgi-script .cgiという行を探す。 • その次の行に以下を追加する。 • AddHandler cgi-script .py • (‘#’はありません) • タスクトレーのApacheのアイコンをクリック し、’restart’を選ぶ。 千葉大学 12- 24 サンプルのメモ • PostgreSQLへの初期データの登録 – 教材ファイルをダウンロードし、readme.txtを見て ください (http://www10.plala.or.jp/katofmly/chibau/sample_db.zip) – Createdbコマンドでデータベースを生成。Sql.txt に必要なコマンドのサンプルがあります。 – Psqlコマンドで、SQL文を直接実行します。 Sql.txtにコマンドのサンプルがあります。 – WebとCGIの統合はreadme.txtを見てください。 来週のテーマは「ディープラーニング」 千葉大学 12- 25 • 皆さんと一緒に、Webを漁って、「ディープラ ーニング」について調べます。 – 講師は、この分野は専門ではありません。。。 • Webにアクセスできる環境を各自用意してき てください(スマホ、ノートブックなど)。 • 余裕のある人は、下調べしてきてください。 – これはどういうもの? – ニューラルネットとの関係?そもそもニューラルネ ットとは? – 応用、将来性?
© Copyright 2024 ExpyDoc