1 / 11

アプリケーション依存の先読みが可能な O/R マッピングツール

アプリケーション依存の先読みが可能な O/R マッピングツール. 理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号  01_0017_3  青木康博. O/R マッピングフレームワーク. オブジェクト指向プログラムと RDB のインピーダンスミスマッチを解消 マッピング作業を自動化 DB データの更新・取得 トランザクション、例外処理、 DB 接続 SQL は不要!!. EJB CMP, JDO, Hibernate, Cayenne, etc. インピーダンス・ミスマッチ. オブジェクト ( リレーショナルテーブルをフィールドに保持 ). テーブル.

cyrus-ramos
Download Presentation

アプリケーション依存の先読みが可能な O/R マッピングツール

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. アプリケーション依存の先読みが可能なO/Rマッピングツールアプリケーション依存の先読みが可能なO/Rマッピングツール 理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 01_0017_3 青木康博

  2. O/Rマッピングフレームワーク • オブジェクト指向プログラムとRDBのインピーダンスミスマッチを解消 • マッピング作業を自動化 • DBデータの更新・取得 • トランザクション、例外処理、DB接続 • SQLは不要!! EJB CMP, JDO, Hibernate, Cayenne, etc... インピーダンス・ミスマッチ オブジェクト (リレーショナルテーブルをフィールドに保持) テーブル

  3. 既存O/Rマッピングは非効率 • 既存フレームワークはマッピングが固定 • すべてのリレーショナルテーブルを一括取得=先読み • 手動で一部を遅延可能(XML記述で指定) • 固定的なマッピングの問題 • 無駄な先読みデータが計算機資源を浪費 • 遅延を濫用するとDBアクセスが頻発 • 効率ならSQLを駆使して手動で直書き? • コード散在、保守性、拡張性の低下 トレードオフ 文脈に応じて的確に先読みしたい

  4. 本研究で開発:文脈に応じた 先読みが可能なフレームワーク本研究で開発:文脈に応じた 先読みが可能なフレームワーク • 開発したフレームワーク • O/Rマッピングはすべてオンデマンド • テーブルだけでなくプロパティも • 既存のCayenneフレームワークを改造 • 文脈に応じて細やかに部分的先読み • AspectJのライブラリを開発 • XPathに基づき先読みのタイミングとデータを直感的に指定 コード合成  (weave) 先読み記述 (AspectJプログラム) アプリケーション マッピング フレームワーク DB オブジェクト 透過的な永続化 テーブル

  5. Paper ・ paperid(PK) ・ title ・ psfile Cayenneの改造 • 先読み機能に適したフレームワーク • 細粒度なマッピング(プロパティ単位) • リレーショナルテーブルはそのプライマリキーのみ取得 • 別々に取得したプロパティからオブジェクトを構築 • データへのアクセス経路を記録 • 先読みの指定に必要 • マッピングに必要 DB paperid title psfile paper

  6. 先読みを支援するAspectJライブラリ • AspectJライブラリを利用して先読み記述 • モジュール的に独立 • 文脈に基づいてプログラマブルに記述可能 • DBアクセスに基づいた先読みの指定 • XPathでデータを指定できるライブラリ • 先読みタイミング • 先読みデータ 細やかな先読みでも煩雑なSQLは不要

  7. Proceeding Paper Paper Paper ・psfile ・title ・psfile ・title ・psfile ・title 先読みアスペクトの記述例 public aspect PolicyAspect { after(Paper p) : load() && this(p)[//Proceeidng/Paper/@*]{ prefetch(p, “../Paper/@psfile”); } } マッピングのタイミングの指定 取得データの指定 • XPathによる先読みのタイミングの指定 • XPathによる取得データの指定 • ⇒ 直感的かつ容易に指定が可能 先読みの実行

  8. after(Paper paper) : load() && this(paper)[//Author/Paper/@*] { int i = getInt(“../authorid”); if(i == id) prefetch(paper, “../Paper/@*"); else prefetch(paper, “./@*"); id = i; } after(Paper paper) : load() && this(paper)[//Paper/@*] { int min = 0; while(min + 100 <= getInt(“../@paperid) min += 100; prefetch(paper, "//Paper[@paperid >= " + min + “ and @paperid < ” + (min + 100) + “]/@*"); 時間・DBアクセス・メモリ量の比較実験 一部の リレーション 一部の行 一部の列 実行時間(s) メモリ使用量(MB) ・DBサーバ: Linux 2.6.7, P4 Xeon 3.06G, 2GB, PostgreSQL 7.4.2 ・クライアント: WinXP, P4 2.8G, 1GB ・LAN:1000BaseTX メモリを浪費 テーブル 単位 プロパティ 単位 本フレーム ワーク 本フレーム ワーク テーブル 単位 プロパティ 単位 DBアクセス回数 after(Paper paper) : load() && this(paper) [//Paper/@*] { prefetch(paper,“//Paper/@*[self::titleand self::psfile]"); } テーブル 単位 1 1 100 DBアクセスが頻発 文脈に応じた適切な先読み => 実行時間・メモリ量の効率化 プロパティ 単位 2,000 1,500 564 本フレーム ワーク 3 11 174

  9. 関連技術 • CMP Entity Bean • EJBの機能の一部 • EJBコンテナがSQLを自動管理 • SQLの発行のタイミングや先読みなどの指定が出来ない • Hibernate • 柔軟性の高いマッピングをサポート • HQLによるアクセスが可能 • アプリケーションの文脈依存の先読みをサポートしていない

  10. まとめと今後の課題 • アプリケーション依存の先読みが可能なO/Rマッピングフレームワーク • 先読み記述をアスペクトとして記述 • 文脈に応じた細かな先読みが可能 • 簡単な実験によって有効性を確認 • 今後の課題 • 現実的なアプリケーションでの実験 • 言語拡張の実装 • より細かなタイミングの指定 • アプリケーション単位でのキャッシュのポリシーの指定

  11. Journal Paper Proceeding Person RDBアクセスに基づいた先読み journal paper 先読み getPapers() proceeding getMembers() getAuthor() 先読み Person

More Related