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

Slides:



Advertisements
Similar presentations
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
Advertisements

blanco Framework ご紹介 DB版
IIS 4.0で開発をするコツ Webアプリケーション構築.
最新ファイルの提供を保証する代理FTPサーバの開発
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
JPAを利用した RESTful Webサービスの開発
S2Container.NET, S2Dao.NET コミッタ 藤井 宏明
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
RDBMSについて 2年7組  小鹿 慎太郎.
セマンティクスを利用した 図書検索システム
Curlの仕組み.
JavaBeans とJSP データベース論 第5回.
ネストした仮想化を用いた VMの安全な帯域外リモート管理
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
アスペクト指向プログラミングを用いたIDSオフロード
アスペクト指向プログラミングと Dependency Injection の融合
入出力データ型に透過な Webサービス動的実行システム 松江工業高等専門学校 情報工学科 越田高志 情報処理学会第68回全国大会
Flyingware : バイトコード変換による 安全なエージェントの実行
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
アプリケーションに応じた AOP による高速化が可能な 永続システム
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
関心事ごとに視点を切り替えて プログラムを編集できる 統合開発環境の提案と実装
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
各種ルータに対応する P2P通信環境に関する研究
動的データ依存関係解析を用いた Javaプログラムスライス手法
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
既存Javaプログラム向け 分散化支援システムの開発
豊富な情報を基にした pointcut を記述できるアスペクト指向言語
アスペクト指向を利用した永続オブジェクト・アクセスの高速化
アスペクト指向言語のための 独立性の高いパッケージシステム
アスペクト指向言語のための 独立性の高いパッケージシステム
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
「マイグレーションを支援する分散集合オブジェクト」
マイグレーションを支援する分散集合オブジェクト
福岡工業大学 情報工学部 情報工学科 種田研究室 于 聡
EntityManager と EJB QL EJB 3.0 コース 第8回 2006年8月5日.
大容量XML文書のデータ更新が 可能なXML編集ライブラリ
Josh : バイトコードレベルでのJava用 Aspect Weaver
統合開発環境によって表現された 言語機構によるコードのモジュール化
同期処理のモジュール化を 可能にする アスペクト指向言語
Javaによる Webアプリケーション入門 第4回
Annotation EJB 3.0 コース 第3回 2006年8月4日.
「マイグレーションを支援する分散集合オブジェクト」
アスペクト指向言語のための視点に応じた編集を可能にするツール
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
稚内北星学園大学 情報メディア学部 安藤 友晴
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
プログラム分散化のための アスペクト指向言語
統合開発環境のための プログラミング言語拡張 フレームワーク
開発者との対話を活かした 横断的構造の表現
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

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

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

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

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

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

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

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

“ 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/@*] { int min = 0; while(min + 100 <= getInt(“../@paperid) min += 100; prefetch(paper, "//Paper[@paperid >= " + min + “ and @paperid < ” + (min + 100) + “]/@*"); 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/@*] { prefetch(paper,“//Paper/@*[self::title and self::psfile]"); } テーブル 単位 DBアクセスが頻発 1 1 100 文脈に応じた適切な先読み => 実行時間・メモリ量の効率化 プロパティ 単位 2,000 1,500 564 本フレーム ワーク 3 11 174

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

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

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