DEIM Forum 2016 E6-2
異種情報源の統合を支援するシステムの実現
寺川 文乃 宝珍 輝尚 野宮 浩輝
京都工芸繊維大学 〒606-8585 京都府京都市左京区松ヶ崎橋上町
E-mail: {hochin, nomiya}@kit.ac.jp
あらまし あらまし あらまし あらまし これまでに,異種情報源の統合を目的として,異種情報源統合システムを試作してきた.このシステ ムにはメモリ使用量が多いことと,GUI も含めたシステムになっており汎用性が高くない,という問題があった. 本論文では,メモリ使用量の問題を,結合結果のサイズ推定式を用いて適切な結合順序を決定することによりメモ リ使用量を削減し解決する.そして,GUI も含めたシステムになっており汎用性が高くないという問題を,異種情 報源の統合機能を持つ Java Database Connectivity(JDBC)を作成し,GUI 部分と分離することで解決する.実機による 評価の結果,結合操作の実行時間を増やすことなく,メモリ使用量の大幅な削減ができることを示す. キーワード キーワード キーワード キーワード 異種情報源,JDBC,統合処理
1. はじ め に
は じ め に
は じ め に
は じ め に
コ ン ピ ュ ー タ 技 術 の 発 展 と 普 及 に よ り , 自 身 の 所 持 す る デ ー タ を 電 子 媒 体 と し て コ ン ピ ュ ー タ 上 で 取 り 扱 う ユ ー ザ が 増 え て き た . 考 古 学 者 も そ の 内 の 1 人 で あ る . 彼 ら も 自 身 の 所 持 す る 考 古 学 デ ー タ を 電 子 媒 体 と し ,コ ン ピ ュ ー タ 上 で 取 り 扱 う よ う に な っ て き て い る . 多 く の 場 合 , 考 古 学 者 は 自 ら の 判 断 で ど の デ ー タ ベ ー ス ま た は フ ァ イ ル に デ ー タ を 蓄 積 す る か を 決 定 す る . 従 っ て ,デ ー タ は 統 一 の シ ス テ ム に 蓄 積 さ れ て い な い . こ の よ う に し て 格 納 さ れ た デ ー タ は 異 種 情 報 源 と な る . 異 種 情 報 源 を 統 合 利 用 す る 一 つ の 方 法 は , デ ー タ ベ ー ス の デ ー タ を 別 の デ ー タ ベ ー ス に 変 換 す る 方 法 で あ る .し か し ,デ ー タ 変 換 は 変 換 の 手 間 が か か る .ま た , デ ー タ 変 換 は , 元 デ ー タ が 頻 繁 に 変 更 さ れ る 場 合 , 整 合 性 の 維 持 が 困 難 で あ る . ラ ッ パ ー と メ デ ィ エ ー タ に 基 づ く シ ス テ ム [1]は ,デ ー タ を 変 換 す る こ と な く 異 種 情 報 源 の 統 合 を 可 能 に す る . ラ ッ パ ー は ア プ リ ケ ー シ ョ ン 固 有 の ク エ リ を ソ ー ス 特 有 の コ マ ン ド や ク エ リ に 変 換 す る こ と で 異 種 情 報 源 へ の ア ク セ ス を 供 給 す る . メ デ ィ エ ー タ は 異 種 情 報 源 を 統 合 す る た め に 使 わ れ る . こ の 方 法 は ネ ッ ト ワ ー ク 上 に 分 散 し て い る 異 種 情 報 源 を 前 提 と し て い る . そ の た め , 異 種 情 報 源 は サ ー バ コ ン ピ ュ ー タ 上 に あ る 必 要 が あ る . し か し , 考 古 学 者 に は PC の サ ー バ 化 は 困 難 な こ と が 多 い . ま た , 行 い た い の は , 一 台 の PC 中 の 異 種 情 報 を 扱 う こ と で あ る . 王 ら [2] は ユ ー ザ の デ ー タ を サ ー バ に コ ピ ー す る こ と な く ,様 々 な 情 報 源 を 使 う こ と が で き る よ う に し た . MySQL, PostgreSQL, SQLite, Excel フ ァ イ ル , CSV フ ァ イ ル を Java Database Connectivity(JDBC)を 通 し て コ ネ ク シ ョ ン を 作 る こ と で , デ ー タ ベ ー ス と フ ァ イ ル を 統 一 の 方 法 で 使 う こ と が で き る . 筆 者 ら は デ ー タ の 変 換 , 計 算 機 の サ ー バ 化 , 統 合 サ ー バ へ の コ ピ ー を 行 わ な い 異 種 情 報 源 統 合 シ ス テ ム を 実 現 し た [3].し か し ,こ の シ ス テ ム に は メ モ リ 使 用 量 が 多 い こ と と , GUI も 含 め た シ ス テ ム に な っ て お り 汎 用 性 が 高 く な い , と い う 問 題 が あ っ た . そ こ で 本 論 文 で は , こ の シ ス テ ム の メ モ リ 使 用 量 の 問 題 を , 結 合 結 果 の サ イ ズ 推 定 式 を 用 い て 適 切 な 結 合 順 序 を 決 定 す る こ と に よ り メ モ リ 使 用 量 を 削 減 し 解 決 す る . ま た , GUI も 含 め た シ ス テ ム に な っ て お り 汎 用 性 が 高 く な い と い う 問 題 を , 異 種 情 報 源 の 統 合 機 能 を 持 つ JDBC を 作 成 し , GUI 部 分 と 分 離 す る こ と で 解 決 す る . ま た , 実 機 に よ る 評 価 の 結 果 , 結 合 操 作 の 実 行 時 間 を 増 や す こ と な く , メ モ リ 使 用 量 の 大 幅 な 削 減 が で き る こ と を 示 す . 以 降 , 2.で 筆 者 ら が 以 前 作 成 し た 異 種 情 報 源 統 合 シ ス テ ム に つ い て 述 べ , 3.で 今 回 作 成 し た 統 合 支 援 シ ス テ ム に つ い て 述 べ る . 次 に , 4.で メ モ リ 使 用 量 の 計 測 実 験 と そ の 結 果 に つ い て 述 べ , 最 後 に 5.で ま と め る .2. 異種 情 報 源統 合 シ ステ ム
異 種 情 報 源 統 合 シ ス テ ム
異 種 情 報 源 統 合 シ ス テ ム
異 種 情 報 源 統 合 シ ス テ ム
著 者 ら は Java と JDBC を 使 用 し , 3 種 類 の デ ー タ ベ ー ス MySQL, PostgreSQL, SQLite, 2 種 類 の フ ァ イ ル Excel,CSV へ の 同 時 接 続 を 行 い ,テ ー ブ ル の 等 結 合 お よ び 射 影 を 行 う 異 種 情 報 源 統 合 シ ス テ ム を 実 現 し た [3]. こ の シ ス テ ム で は , JDBC を 用 い て デ ー タ ベ ー ス や フ ァ イ ル へ の 接 続 を 行 う た め に 必 要 な 情 報 ,お よ び , 結 合 条 件 の 入 力 , 実 行 結 果 の 出 力 を 全 て 1 つ の ウ ィ ン ド ウ で 行 う . こ の ウ ィ ン ド ウ を 図 1 に 示 す . 処 理 の 流 れ を 図 2 に 示 す . ま ず 初 め に 入 力 さ れ た 結 合 条 件 を 分 解 し , 各 デ ー タ ベ ー ス や フ ァ イ ル に 合 わ せ た ク エ リ に 変 更 す る . 次 に , 各 デ ー タ ベ ー ス や フ ァ イ ル へ の 接 続 を 行 い , テ ー ブ ル の ス キ ー マ 情 報 の 取 得 を 行 っ た 後 , 使 用 す る テ ー ブ ル , カ ラ ム が あ る か の 照 合 を 行 う . そ し て , 結 合 に 必 要 な デ ー タ の 取 得 を 行 う . 次 に , ど の テ ー ブ ル の カ ラ ム か を 判 別 で き る よ う , テ ー ブ ル 名 を 付 与 す る . そ し て , 結 合 操 作 を 行 う . 結 合図 図図 図 1 情 報 入 出 力 ウ ィ ン ド ウ情 報 入 出 力 ウ ィ ン ド ウ情 報 入 出 力 ウ ィ ン ド ウ 情 報 入 出 力 ウ ィ ン ド ウ 図 図 図 図 2 異 種 情 報 源 統 合 シ ス テ ム に お け る 処 理 の 流 れ異 種 情 報 源 統 合 シ ス テ ム に お け る 処 理 の 流 れ異 種 情 報 源 統 合 シ ス テ ム に お け る 処 理 の 流 れ異 種 情 報 源 統 合 シ ス テ ム に お け る 処 理 の 流 れ 操 作 に は ソ ー ト・マ ー ジ 結 合 [4]を 使 用 し ,結 合 後 の サ イ ズ が 分 か ら な い こ と か ら , デ ー タ の 管 理 に は ArrayList を 用 い て い る .最 後 に ,射 影 を 行 う 場 合 は 射 影 を し , 結 果 を ウ ィ ン ド ウ に 出 力 す る . 実 機 に よ る 性 能 評 価 を 行 い , 100,000 行 の 3 テ ー ブ ル の 結 合 は 実 用 上 問 題 な い 時 間 で 処 理 で き る こ と を 確 認 し た . し か し , メ モ リ 使 用 量 が 多 い こ と と , GUI も 含 め た シ ス テ ム に な っ て お り 汎 用 性 が 高 く な い と い う 問 題 が 残 っ た .
3. 統合 支 援 シス テ ム
統 合 支 援 シ ス テ ム
統 合 支 援 シ ス テ ム
統 合 支 援 シ ス テ ム
2.で 述 べ た 異 種 情 報 源 統 合 シ ス テ ム に お け る , メ モ リ 使 用 量 が 多 い と い う 問 題 を , 結 合 結 果 の サ イ ズ 推 定 と left-deep tree[5]を 用 い て , メ モ リ 使 用 量 を 削 減 し 解 決 す る . こ れ ら に つ い て は 付 録 で 概 説 す る . ま た , 2. で 述 べ た 異 種 情 報 源 統 合 シ ス テ ム は GUI も 含 め た シ ス テ ム に な っ て お り 汎 用 性 が 高 く な い . そ こ で , 異 種 情 報 源 の 統 合 機 能 を 持 つ JDBC を 作 成 し , GUI 部 分 と 分 離 す る こ と と す る .3.1. データ操作 処理
データ操 作 処 理
データ操 作 処 理
データ操 作 処 理
3.1.1. 設計
設 計
設 計
設 計
(1) 結 合 処 理 以 前 の シ ス テ ム で は ユ ー ザ か ら 入 力 さ れ た ク エ リ を 前 か ら 順 に な ぞ り 結 合 操 作 を 行 う も の で あ っ た . ま た ,全 テ ー ブ ル デ ー タ を ArrayList に 格 納 し ,シ ス テ ム 内 部 で 保 持 し て い た . こ の 中 に は 一 度 結 合 操 作 に 使 用 し , 二 度 と 参 照 さ れ な い デ ー タ も 含 ま れ て い た . ユ ー ザ が 必 要 と し て い る の は 全 て の 結 合 操 作 が 完 了 し た 最 終 結 果 で あ る . そ こ で , 本 シ ス テ ム で は left-deep tree を 採 用 す る こ と に よ り , 結 合 操 作 に 使 用 す る テ ー ブ ル を 1 度 の 参 照 で 済 ま せ る . ま た , 結 合 操 作 の 過 程 で で き る リ レ ー シ ョ ン ( 中 間 リ レ ー シ ョ ン ) の サ イ ズ を 抑 え る た め , 式 ( A.1)を 用 い て ,中 間 リ レ ー シ ョ ン の サ イ ズ が 最 小 に な る 結 合 順 序 を 導 き 出 す . シ ス テ ム 内 部 の 処 理 の 流 れ は 図 2 に 上 記 の 操 作 を 加 え た も の で あ り , 図 3 に 示 す .図 図 図 図 3 統 合 支 援 シ ス テ ム に お け る 処 理 の 流 れ統 合 支 援 シ ス テ ム に お け る 処 理 の 流 れ統 合 支 援 シ ス テ ム に お け る 処 理 の 流 れ統 合 支 援 シ ス テ ム に お け る 処 理 の 流 れ (2) 集 合 演 算 処 理 次 に , 集 合 演 算 を 行 う た め に は あ ら か じ め タ プ ル が ソ ー ト さ れ て い る と 都 合 が 良 い [6].ま た ,集 合 演 算 に お い て , 最 大 で 両 リ レ ー シ ョ ン の タ プ ル 数 の 和 の 結 果 を 保 持 す る 必 要 が あ り ,メ モ リ 量 の 不 足 が 考 え ら れ る . そ こ で , 集 合 演 算 を 実 行 す る た め に は , 以 下 の 条 件 を 設 け る . 条 件 1. 複 数 デ ー タ ベ ー ス の 等 結 合 を 行 う ク エ リ 同 士 の 集 合 演 算 の 実 行 は 不 可 と す る . 条 件 2. Excel, CSV フ ァ イ ル に 関 し て は , あ ら か じ め 集 合 演 算 を 行 う カ ラ ム の 順 に ソ ー ト し て い る も の と す る . 条 件 3. ク エ リ を ()で く く る こ と は 不 可 と す る . 条 件 4. 集 合 演 算 子 の 混 合 は 不 可 と す る . 条 件 1 は 複 数 デ ー タ ベ ー ス の 等 結 合 を 行 っ た 最 終 結 果 を 複 数 持 つ こ と で , メ モ リ 使 用 量 が 増 大 し て し ま う こ と を 防 ぐ た め で あ る . 条 件 2 は , シ ス テ ム 内 部 で 使 用 し て い る Excel と CSV の JDBC が ソ ー ト に 対 応 し て い な い た め で あ る . 条 件 3 は , ク エ リ の 構 文 に 制 約 を 加 え る こ と で , ク エ リ 分 解 時 の 処 理 数 を 減 ら す た め で あ る . 条 件 4 は , 条 件 3 よ り 集 合 演 算 の 優 先 順 位 を 指 定 す る こ と が で き な い た め で あ る .
3.1.2. 実装
実 装
実 装
実 装
本 シ ス テ ム に お い て , left-deep tree を 採 用 す る こ と で , 結 合 操 作 に 使 用 す る テ ー ブ ル は 1 度 参 照 す る だ け で 済 む よ う に な っ た . そ の た め , 結 合 操 作 に 使 用 す る テ ー ブ ル の 情 報 を あ ら か じ め ArrayList に 保 持 す る 必 要 が な く な っ た . 本 シ ス テ ム で は ソ ー ト ・ マ ー ジ 結 合 を 採 用 し て い る た め , 初 め に 結 合 操 作 で 使 用 す る 結 合 列 で ORDER BY す る こ と に よ り , 直 接 ResultSet か ら 情 報 を 抽 出 で き る . し か し , 本 シ ス テ ム で 採 用 し て い る Excel, CSV の JDBC は ORDER BY 句 に 対 応 し て い な い た め ,Excel,CSV フ ァ イ ル の 場 合 は ,ソ ー ト す る た め に ResultSet か ら ArrayList に デ ー タ を 取 り 出 す 必 要 が あ る .3.2. JDBC 化
化
化
化
3.2.1. 設計
設 計
設 計
設 計
本 JDBC で は 複 数 デ ー タ ベ ー ス へ の コ ネ ク シ ョ ン を 持 つ 必 要 が あ り , そ の た め に は 複 数 デ ー タ ベ ー ス へ の 接 続 情 報 を 登 録 ・ 保 持 す る ク ラ ス が 必 要 で あ る . そ の た め ,JDBC の 基 本 ク ラ ス [7]で あ る Connection ク ラ ス , Statement ク ラ ス ,ResultSet ク ラ ス の 他 に ,接 続 情 報 を 保 持 す る JDBC ク ラ ス を 作 成 す る . ま た ,各 デ ー タ ベ ー ス へ の 接 続 情 報 に alias を 設 定 す る こ と で , 同 じ 種 類 の デ ー タ ベ ー ス で も 複 数 登 録 が で き る よ う に す る .ユ ー ザ は 登 録 し た alias を 用 い て 問 い 合 わ せ を 行 う こ と に な る . JDBC ク ラ ス が 持 つ public な メ ソ ッ ド を 表 1 に 示 す .3.2.2. 実装
実 装
実 装
実 装
接 続 情 報 を 複 数 登 録 ・ 保 持 す る JDBC ク ラ ス を 実 装 す る .表 1 に 示 し た 各 接 続 情 報 を 登 録・削 除 す る public メ ソ ッ ド を 実 装 す る . ユ ー ザ は 上 記 の メ ソ ッ ド で 登 録 し た alias を 用 い て 問 い 合 わ せ を 行 う こ と に な る .シ ス テ ム は こ れ 以 降 の 全 て の 動 作 に お い て ,alias を 用 い て 各 デ ー タ ベ ー ス を 判 断 す る . そ の た め , 同 じ イ ン ス タ ン ス 内 で は 同 じ alias 名 を 登 録 す る こ と は で き な い . ま た , 本 JDBC で は 問 い 合 わ せ を 行 う 場 合 , 「 <Alias>:<TableName>.<ColumnName>」の 形 式 で 入 力 す る 必 要 が あ る . 各 要 素 を 区 分 す る た め に “:”を 用 い て い る た め , alias に は “:”を 使 用 で き な い .3.2.3. 使用 例
使 用 例
使 用 例
使 用 例
(1) で は JDBC を 使 用 す る 際 の 接 続 情 報 の 登 録 ・ Statement の 作 成 ,Connection の 作 成 例 を 示 し ,(2)で は 結 合 を 行 う 場 合 の 使 用 例 ,(3)で は 集 合 演 算 を 行 う 場 合 の 仕 様 例 を 示 す . (1) JDBC の 使 用 例 本 JDBC の 使 用 例 を 図 4 に 示 す .図 4 で は ,1 行 目 で , JDBC ク ラ ス の イ ン ス タ ン ス を 作 成 し て い る . 2 ~ 4 行 目 で 接 続 情 報 を 登 録 し て い る . こ れ に よ り イ ン ス タ ン ス jdbc は alias が “M1”, “S1”, “S2”で あ る 接 続 情 報 を 保 持 す る . 5 行 目 で 登 録 し た 接 続 先 へ の connection を 持 つ Connection ク ラ ス の イ ン ス タ ン ス を 作 成 し て い る .6 行 目 で Statement ク ラ ス の イ ン ス タ ン ス を 作 成 し て い る .メ ソ ッ ド の 概 要 返 り 値 説 明
boolean set_MySQL(String dbname, String host, String username, String pass, String alias)
指 定 さ れ た デ ー タ ベ ー ス ,ホ ス ト ,ユ ー ザ 名 ,パ ス ワ ー ド ,alias で MySQL の 接 続 情 報 を 登 録 す る メ ソ ッ ド . 接 続 で き な い 場 合 , SQLException を 返 す . ま た , alias が 既 に 登 録 さ れ て い る も の と 同 じ 場 合 は SQLException を , 未 登 録 の 場 合 true を 返 す .
boolean set_PostgreSQL(String dbname, String host, String username, String pass, String alias)
指 定 さ れ た デ ー タ ベ ー ス , ホ ス ト , ユ ー ザ 名 , パ ス ワ ー ド , alias で PostgreSQL の 接 続 情 報 を 登 録 す る メ ソ ッ ド . 接 続 で き な い 場 合 , SQLException を 返 す . ま た , alias が 既 に 登 録 さ れ て い る も の と 同 じ 場 合 は SQLException を , 未 登 録 の 場 合 true を 返 す .
boolean set_SQLite(String dbname, String location, String alias)
指 定 さ れ た デ ー タ ベ ー ス ,位 置 ,alias で SQLite の 接 続 情 報 を 登 録 す る メ ソ ッ ド .alias が 既 に 登 録 さ れ て い る も の と 同 じ 場 合 は SQLException を , 未 登 録 の 場 合 true を 返 す .
boolean set_DB2(String dbname, String host, int port, String username, String pass, String alias)
指 定 さ れ た デ ー タ ベ ー ス , ホ ス ト , ポ ー ト 番 号 , ユ ー ザ 名 , パ ス ワ ー ド , alias で DB2 の 接 続 情 報 を 登 録 す る メ ソ ッ ド . 接 続 で き な い 場 合 , SQLException を 返 す . ま た , alias が 既 に 登 録 さ れ て い る も の と 同 じ 場 合 は SQLException を , 未 登 録 の 場 合 true を 返 す .
boolean set_Excel(String filename, String location, String alias)
指 定 さ れ た フ ァ イ ル 名 ,位 置 ,alias で Excel の 接 続 情 報 を 登 録 す る メ ソ ッ ド .alias が 既 に 登 録 さ れ て い る も の と 同 じ 場 合 は SQLException を , 未 登 録 の 場 合 true を 返 す .
boolean set_CSV(String location, String alias)
指 定 さ れ た 位 置 ,alias で CSV の 接 続 情 報 を 登 録 す る メ ソ ッ ド .alias が 既 に 登 録 さ れ て い る も の と 同 じ 場 合 は SQLException を , 未 登 録 の 場 合 true を 返 す .
boolean remove_DB(String alias)
指 定 さ れ た alias で 登 録 さ れ た 接 続 情 報 を 探 し , 登 録 情 報 か ら 削 除 す る メ ソ ッ ド . 接 続 情 報 が 存 在 す る 場 合 は true, 存 在 し な い 場 合 は SQLException を 返 す . Connection createConnection() 上 記 の メ ソ ッ ド で 事 前 に 設 定 し た 接 続 情 報 を 用 い て , 各 RDBMS・ フ ァ イ ル へ の 接 続 を 行 う メ ソ ッ ド . 接 続 で き た 場 合 , Connection オ ブ ジ ェ ク ト , 接 続 で き な い 場 合 , SQLException を 返 す . 1: JDBC jdbc = new JDBC();
2: jdbc.set_MySQL(“testdb”, “localhost”, “testuser”, “test”, “M1”); 3: jdbc.set_SQLite(“testdb”, “/Users/Test”, “S1”);
4: jdbc.set_SQLite(“testdb2”, “/Users/Test/Document”, “S2”); 5: Connection con = jdbc.createConnection();
6: Statement stmt = con.createStatement(); 7: jdbc.remove_DB(“S1”);
8: jdbc.set_Excel(“test.xlsx”, “/Users/Test/Desktop”, “E1”); 9: Connection con2 = jdbc.createConnection();
10: Statement stmt2 = con2.createStatement();
11: ResultSet rs1 = stmt.executeQuery(“select * from M1:test, S1:test where M1:test.id = S1:test.id”);
12: ResultSet rs2 = stmt2.executeQuery(“select S2:test.tid, S2:test.tname from S2:test UNION select M1:test.id, M1:test.name from M1:test);
図 図図
図 4 JDBC の 使 用 例の 使 用 例の 使 用 例の 使 用 例
結 合 演 算 の 問 い 合 わ せ 文 … 「 select <SELECT_LIST> from <TABLE_LIST> where <WHERE>」 —①
<SELECT_LIST>… 「 <Alias>:<TableName>.<ColumnName>, <Alias>:<TableName>.<ColumnName>, …」 or「 *」 <TABLE_LIST>… 「 <Alias>:<TableName>, <Alias>:<TableName>,…」
<WHERE>… 「 <Alias>:<TableName>.<ColumnName> = <Alias>:<TableName>.<ColumnName> (AND ...)」 ※ 複 数 条 件 の 場 合 AND で 条 件 を 繋 ぐ . 図 図 図 図 5 結 合 演 算 を 行 う 場 合 の 問 い 合 わ せ 構 文結 合 演 算 を 行 う 場 合 の 問 い 合 わ せ 構 文結 合 演 算 を 行 う 場 合 の 問 い 合 わ せ 構 文結 合 演 算 を 行 う 場 合 の 問 い 合 わ せ 構 文 表 表 表 表 1 JDBC ク ラ ス の 持 つク ラ ス の 持 つク ラ ス の 持 つ public な メ ソ ッ ドク ラ ス の 持 つ な メ ソ ッ ドな メ ソ ッ ドな メ ソ ッ ド
ま た , 接 続 情 報 を 削 除 す る 例 を 続 い て 示 す . 7 行 目 の よ う に remove_DB()メ ソ ッ ド を 使 用 し 接 続 情 報 を 削 除 し て い る .こ れ に よ り ,イ ン ス タ ン ス jdbc か ら alias が “S1”で あ る 接 続 情 報 が 除 去 さ れ る . 次 に , 8 行 目 で alias が “E1”で あ る 接 続 情 報 を 新 た に 追 加 し て い る .こ れ に よ り , イ ン ス タ ン ス jdbc は alias が “M1”, “S2”, “E1”で あ る 接 続 情 報 を 保 持 す る . 9 行 目 で 登 録 し た 接 続 先 へ の connection を 持 つ Connection ク ラ ス の イ ン ス タ ン ス を 作 成 し て い る . (2) 結 合 結 合 演 算 を 行 う 場 合 の 問 い 合 わ せ 文 の 形 式 を 図 5 に 示 す .<Alias>は 事 前 に 登 録 し た alias,<TableName>は テ ー ブ ル 名 , <ColumnName>は カ ラ ム 名 を 表 す . 結 合 演 算 を 行 う 場 合 の 例 を 図 4 の 11 行 目 に 示 す .こ こ で は 事 前 に 登 録 し た alias が M1 で あ る MySQL と S1 で あ る SQLite の 等 結 合 を 行 っ て い る . (3) 集 合 演 算 集 合 演 算 を 行 う 場 合 の 問 い 合 わ せ 文 の 形 式 を 図 6 に 示 す . 和 集 合 を 求 め る 場 合 は 図 5 で 示 し た 問 い 合 わ せ 文 を 「 UNION 」 で 繋 ぎ , 積 集 合 を 求 め る 場 合 は 「 INTERSECT」 で 繋 ぐ . 和 集 合 を 求 め る 例 を 図 4 の 12 行 目 に 示 す .こ こ で は 事 前 に 登 録 し た alias が S2 で あ る SQLite の テ ー ブ ル test の カ ラ ム tid,tname と alias が M1 で あ る MySQL の テ ー ブ ル test の カ ラ ム id,name の 和 集 合 を 求 め て い る .
4. 実験
実 験
実 験
実 験
筆 者 ら が 以 前 作 成 し た 異 種 情 報 源 統 合 シ ス テ ム と , 今 回 作 成 し た シ ス テ ム の メ モ リ 使 用 量 を 比 較 す る . 以 降 , 以 前 作 成 し た シ ス テ ム を 旧 シ ス テ ム , 今 回 作 成 し た シ ス テ ム を 新 シ ス テ ム と 記 す .4.1. 実験 方 法
実 験 方 法
実 験 方 法
実 験 方 法
メ モ リ 使 用 量 と シ ス テ ム 実 行 時 間 を 6 回 , 実 機 ( Windows 8.1 Pro, 2.93GHz Intel Core 2 Duo, 4GB Memory) に て 計 測 す る . 結 果 の 単 位 は KB と msec で あ る .実 験 に 用 い た MySQL,PostgreSQL,SQLite の テ ー ブ ル の 仕 様 を 以 下 に 示 す .
1) 行 数 は 10,000 行 .
2) カ ラ ム は id, name, loc を 持 つ .
3) カ ラ ム id に は 1 か ら 10,000 の 数 が 昇 順 に 入 る . 4) カ ラ ム name に は 長 さ 20 の ラ ン ダ ム な 文 字 列 が 入 る . 5) カ ラ ム loc に は 長 さ 40 の ラ ン ダ ム な 文 字 列 が 入 る . Excel の シ ー ト の 仕 様 を 以 下 に 示 す . 1) 行 数 は 5 行 .
2) カ ラ ム は id, evaluate, test を 持 つ . 3) カ ラ ム id に は 1 か ら 5 の 数 が 昇 順 に 入 る . 4) カ ラ ム evaluate に は 長 さ 3 も し く は 4 の 文 字 列 が 入 る . 5) カ ラ ム test に は 2, 3, 5 の 整 数 が 1 つ 入 る . CSV フ ァ イ ル は , Excel の カ ラ ム test を 除 い た も の で 構 成 さ れ る . 全 テ ー ブ ル は イ ン デ ッ ク ス 付 け を 行 っ て い な い .MySQL,PostgreSQL,SQLite の テ ー ブ ル は プ ロ グ ラ ム で 作 成 し た . 結 合 条 件 は 前 か ら 順 に MySQL,PostgreSQL,SQLite, Excel,CSV の 順 に 結 合 す る よ う に 書 く こ と と し ,カ ラ ム id で 等 結 合 を 行 う も の と す る .こ れ に よ り ,旧 シ ス テ ム で は 結 合 条 件 を 前 か ら 順 に 実 行 す る た め ,MySQL ( 10,000 行 ) と PostgreSQL( 10,000 行 ), そ の 結 果 と SQLite( 10,000 行 ),そ の 結 果 と Excel( 5 行 ),そ の 結 果 と CSV( 5 行 ) の 順 に 結 合 を 行 う . つ ま り , 中 間 リ レ ー シ ョ ン の サ イ ズ 推 移 は 10,000 行 ,10,000 行 ,5 行 , 5 行 と な る . 新 シ ス テ ム で は 中 間 リ レ ー シ ョ ン が 小 さ く な る よ う な 結 合 順 序 で 結 合 を 行 う た め , 中 間 リ レ ー シ ョ ン の サ イ ズ 推 移 は 5 行 , 5 行 , 5 行 , 5 行 と な る . 実 験 1. シ ス テ ム の 結 合 操 作 実 行 時 間 を 計 測 す る . 実 験 2. 結 合 操 作 終 了 時 点 で の シ ス テ ム 全 体 で 使 用 す る メ モ リ 使 用 量 を 計 測 す る .
4.2. 実験 結 果
実 験 結 果
実 験 結 果
実 験 結 果
実 験 1. 図 7 に シ ス テ ム の 実 行 時 間 を 示 す .全 て の 回 に お い て ,新 シ ス テ ム の 実 行 時 間 が ,旧 シ ス テ ム よ り も 短 く な っ て い る . 実 験 2. 図 8 に 結 合 操 作 が 終 了 し た 時 点 で の シ ス テ ム 全 体 で 使 用 し て い る メ モ リ 使 用 量 を 示 す .全 て の 回 に お い て ,新 シ ス テ ム の メ モ リ 使 用 量 が ,旧 シ ス テ ム よ り も 少 な く な っ て い る .4.3. 考察
考 察
考 察
考 察
A) 結 合 操 作 実 行 時 間 結 合 操 作 実 行 時 間 の 平 均 は 旧 シ ス テ ム で は 91.6[msec]で あ り ,新 シ ス テ ム で は 6[msec]で あ る . 旧 シ ス テ ム で は 10,000 行 と 10,000 行 の 結 合 操 作 が 2 回 あ る の に 対 し ,新 シ ス テ ム で は そ の 部 分 が 5 行 と 10,000 行 の 結 合 操 作 に な っ て い る .比 較 す る 行 数 が 少 な い ほ ど ,結 合 操 作 に か か る 時 間 は 短 く な る と 考 え ら れ る .結 合 す る 集 合 演 算 ・ 和 の 問 い 合 わ せ 文 … 図 5 の ① UNION 図 5 の ① UNION …集 合 演 算 ・ 積 の 問 い 合 わ せ 文 … 図 5 の ① INTERSECT 図 5 の ① INTERSECT 図 5 の ① INTERSECT … 図
図 図
リ レ ー シ ョ ン の タ プ ル 数 を S, T と す る と , ソ ー ト ・ マ ー ジ 結 合 の 時 間 計 算 量 は O((S+T)log(S+T))で 表 さ れ る . 旧 シ ス テ ム で の 時 間 計 算 量 は ܱ(20,000݈݃(20,000ሻ ∗ 2 + 10,005݈݃(10,005ሻ + 10 log(10ሻሻで あ る の に 対 し , 新 シ ス テ ム で は ܱ(10,005݈݃(10,005ሻ ∗ 3 + 10݈݃(10ሻሻで あ る . そ の た め , 結 合 操 作 自 体 に か か る 時 間 は 削 減 で き て い る と 考 え ら れ る . B) メ モ リ 使 用 量 図 8 よ り ,新 シ ス テ ム の メ モ リ 使 用 量 が 旧 シ ス テ ム よ り 大 幅 に 少 な く な っ て い る .こ れ は ,旧 シ ス テ ム で は 全 リ レ ー シ ョ ン の デ ー タ ,お よ び , 中 間 リ レ ー シ ョ ン の デ ー タ を 全 て 保 持 し て い る の に 対 し ,新 シ ス テ ム で は 使 用 し た デ ー タ を 全 て 破 棄 し て い る こ と か ら 大 幅 に 下 が っ た と 考 え ら れ る .
5. まと め
ま と め
ま と め
ま と め
本 論 文 で は , こ れ ま で に 試 作 し て き た 異 種 情 報 源 統 合 シ ス テ ム に お い て , メ モ リ 使 用 量 が 多 い こ と , GUI も 含 め た シ ス テ ム に な っ て お り 汎 用 性 が 高 く な い こ と , と い う 2 つ の 問 題 点 を 結 合 結 果 の サ イ ズ 推 定 式 を 用 い て 適 切 な 結 合 順 序 を 決 定 す る こ と , 異 種 情 報 源 の 統 合 機 能 を 持 つ JDBC を 作 成 し , GUI 部 分 と 分 離 す る こ と で 解 決 し た . 実 機 に よ る 評 価 の 結 果 , 結 合 操 作 の 実 行 時 間 を 増 や す こ と な く , メ モ リ 使 用 量 の 大 幅 な 削 減 が で き る こ と を 示 し た . 現 在 の JDBC で は MySQL,PostgreSQL,SQLite,DB2, Excel,CSV の 利 用 に 限 ら れ て い る .ま た ,集 合 演 算 に お い て ()を 使 用 で き ず , 集 合 演 算 子 は 1 種 類 の み の 使 用 に 制 限 さ れ て い る . こ の 制 限 を 取 り 払 う こ と で , よ り 様 々 な 用 途 に 利 用 し て も ら え る と 考 え て い る . そ の た め , こ の 制 限 を 取 り 払 う こ と が 今 後 の 課 題 で あ る .参
参
参
参
考
考
考
考
文
文
文
文
献
献
献
献
[1] H. Garcia-Molina, Y. Papakonstantinou, D. Quass, A. Rajaraman, Y. Sagiv, J. Ullman, V. Vassalos and J. Widom, “The TSIMMIS Approach to Mediation: Data Models and Languages”, Journal of Intelligent Information Systems, vol8, no.2, pp,117-132, 1997. [2] X. Wang, T. Hochin and H. Nomiya, “Feasibility of
Unified Usage of Heterogeneous Databases Storing Private Information”, Proc. of 1st ACIS International Symposium on Applied Computing & Information Technology (ACIT 2013), pp.337-342, 2013.
[3] A. Terakawa, T. Hochin and H. Nomiya, “Integrated Usage of Heterogeneous Databases for Novice Users”, Proc. of International Conference on Software Engineering Research, Management, and Applications (SERA2014), pp. 705-710, 2014. [4] DK. Shin and AC. Meltzer, “A New Join Algorithm”,
ACM SIGMOD Record, vol.23, no.4, pp.13-20, 1994. [5] H. Garcia-Molina, J. Ullman and J. Widom, “Database Systems The Complete Book”, Pearson Education, pp. 826-832, 847-856, 862-864, 2002. [6] A. Silberschatz, H. Korth and S. Sudarshan,
“Database system concepts 4t h edition”, McGraw-Hill Education, pp.515-516, 2002.
[7] Lance Andersen and Specification Lead, “JDBCT M 4.2 Specification”, 2014.
A. 付録
付 録
付 録
付 録
A.1. 結合 結 果の サ イ ズ推 定
結 合 結 果 の サ イ ズ 推 定
結 合 結 果 の サ イ ズ 推 定
結 合 結 果 の サ イ ズ 推 定
属 性 X,Y を 持 つ リ レ ー シ ョ ン R を R(X,Y)と 表 し , リ レ ー シ ョ ン の タ プ ル 数 を T(R),R の 属 性 X の distinct 値 を V(R,Y)と 表 す [5]. R(X,Y)と S(Y,Z)を 属 性 Y で 等 結 合 し た サ イ ズ は 以 下 の よ う に し て 推 定 す る こ と が で き る . ܸ(ܴ, ܻሻ ≤ ܸ(ܵ, ܻሻと 仮 定 する . 1. R の 全 タ プ ル が ,与 え ら れ た S の タ プ ル と 結 合 す る 確 率 は1/ܸ(ܵ, ܻሻ. 2. S は T(S)タ プ ル あ る た め ,結 合 さ れ る タ プ ル 数 の 期 待 値 はܶ(ܵሻ/ܸ(ܵ, ܻሻ. 3. R は T(R)タ プ ル あ る た め ,R と S を 等 結 合 し た 時 の 結 合 推 定 サ イ ズ はܶ(ܴሻܶ(ܵሻ/ܸ(ܵ, ܻሻ. 一 般 的 に は V(R,Y)と V(S,Y)の 大 き い 方 で 割 る こ と で 推 定 サ イ ズ を 求 め る た め ,一 般 式 は 以 下 の よ う に な る . ܶ(ܴ⋈ܵሻ = ܶ(ܴሻܶ(ܵሻ/ max൫ܸ(ܴ, ܻሻ, ܸ(ܵ, ܻሻ൯ (ܣ. 1ሻ 図 図 図 図 7 シ ス テ ム の 実 行 時 間シ ス テ ム の 実 行 時 間シ ス テ ム の 実 行 時 間シ ス テ ム の 実 行 時 間 0 20 40 60 80 100 120 1 2 3 4 5 6 実 行 時 間 (m se c) 実行回数(回目) 旧シ ステ ム 新シ ステ ム 図 図図 図 8 シ ス テ ム の メ モ リ 使 用 量シ ス テ ム の メ モ リ 使 用 量シ ス テ ム の メ モ リ 使 用 量シ ス テ ム の メ モ リ 使 用 量 15000 17000 19000 21000 23000 25000 27000 1 2 3 4 5 6 メ モ リ 使用量 (K B ) 実行回数(回目) 旧シ ステ ム 新シ ステ ムY が い く つ か の 属 性 を 表 す と 仮 定 す る . R(x, y1, y2)と S(y1, y2, z)の 結 合 サ イ ズ は 以 下 の よ う に し て 推 定 す る .
ܶ(ܴሻܶ(ܵሻ
max൫ܸ(ܴ, ݕ1ሻ, ܸ(ܵ, ݕ1ሻ൯ max൫ܸ(ܴ, ݕ2ሻ, ܸ(ܵ, ݕ2ሻ൯ (ܣ. 2ሻ
A.2. Left-deep tree
木 の 形 は 図 A.1 に 示 す よ う に 3 種 類 あ る [5].
図 図図
図 A.1 木 の 形木 の 形木 の 形 木 の 形
(a)を left-deep tree,(b)を bushy tree,(c)を right-deep tree と 呼 ぶ . 結 合 順 序 を left-deep tree に 制 限 す る こ と で 次 の よ う な 利 点 が あ る .
1. 木 の 形 を 制 限 す る こ と で 探 索 数 が 減 る .
2. 一 般 的 な 結 合 ア ル ゴ リ ズ ム (特 に nested-loop join, one-pass join)で は 非 left-deep tree を 使 っ た 同 じ ア ル ゴ リ ズ ム よ り も , left-deep tree を 使 っ た 方 が , 効 率 が 良 い 傾 向 に あ る .