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