Presentation is loading. Please wait.

Presentation is loading. Please wait.

XMLデータベースを用いた Javaのための仮想的な オブジェクト指向データベースの試作

Similar presentations


Presentation on theme: "XMLデータベースを用いた Javaのための仮想的な オブジェクト指向データベースの試作"— Presentation transcript:

1 XMLデータベースを用いた Javaのための仮想的な オブジェクト指向データベースの試作
「XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作」という題目で、 谷研究室、福澤太の発表を始めます。 よろしくお願いいたします。 2007年2月10日 谷 聖一研究室 福澤 太

2 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
目次 オブジェクト指向とは? 研究目的 オブジェクト指向言語と関係データベース オブジェクト指向言語とオブジェクト指向データベース XMLとは? XMLデータベースを用いた オブジェクト指向データベースの提案 デモ 課題と今後の目標 目次はこのようになっています。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

3 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
目次 オブジェクト指向とは? 研究目的 オブジェクト指向言語と関係データベース オブジェクト指向言語とオブジェクト指向データベース XMLとは? XMLデータベースを用いた オブジェクト指向データベースの提案 デモ 課題と今後の目標 では始めに、そもそもオブジェクト指向とは、どういったものであるかご説明いたします。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

4 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
オブジェクト指向とは? キーボード CPU ディスプレイ マザーボード 例えば、 CPU、マザーボード、メモリ、ハードディスク、ディスプレイ、キーボードなど、 各パーツの相互作用によって、一台のパソコンが出来ているように、 オブジェクト指向は、オブジェクトの集合の相互作用によって、システムの振る舞いを構築する考え方です。 メモリー HDD XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

5 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
オブジェクト指向とは? クラス : オブジェクトの定義 インスタンス : クラスに値を入れたもの キーボード CPU フィールド  オブジェクトを表す値の入れ物 メソッド  オブジェクトへの操作・振る舞い ディスプレイ マザーボード 具体的には、一つ一つのオブジェクトに対して、クラスというオブジェクトの定義をします。 クラスは、オブジェクトを表す値を格納するための入れ物であるフィールドと、 そのオブジェクトへの操作・もしくは内部的な振る舞いを記述するメソッドの二つの部分から成り立ちます。 例えばフィールドは、CPUの周波数やHDDの容量など、オブジェクトを表す値を入れる変数であり、メソッドはCPUの演算であったり、メモリに対してメモリ上のあるアドレスの値を取り出す、といった操作そのものを定義する部分です。 また、クラスをもとにフィールドに実際にオブジェクトを表す値を入れたものをインスタンスと呼びます。 メモリー HDD XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

6 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
オブジェクト指向とは? インスタンス クラス : オブジェクトの定義 インスタンス : クラスに値を入れたもの オブジェクト・モデル キーボード CPU フィールド  オブジェクトを表す値の入れ物 メソッド  オブジェクトへの操作・振る舞い ディスプレイ マザーボード さらに、インスタンスはあるインスタンスの参照を持つことが出来ます。 つまり、フィールドの値として格納しているものが、あるインスタンスであるということです。 図では、参照を持つインスタンスから参照されるインスタンスへ向けて、矢印で表しています。 あるインスタンスの参照を持つと言うことは、 参照を持つインスタンスは、参照されるインスタンスが表すクラスが定義するメソッドを、呼び出すことが出来ると言うことであり、 参照されるインスタンスは参照を持つインスタンスの影響を受けると言うことです。 このインスタンスの参照関係で構築されるグラフ構造のデータ表現を、 オブジェクトモデル、もしくは単純にオブジェクトと呼び、 このオブジェクト・モデルを通してオブジェクト指向ではデータ表現を行います。 オブジェクト指向は、この他に継承やオブジェクトの識別性などの概念を合わせたものと言えますが、 時間の都合上それらの説明は省略させていただきます。 ご了承下さい。 つまり、オブジェクト指向を用いることにより、 より現実世界の「もの」をそのままの形でプログラムなどで表現可能となります。 メモリー HDD XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

7 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
目次 オブジェクト指向とは? 研究目的 オブジェクト指向言語と関係データベース オブジェクト指向言語とオブジェクト指向データベース XMLとは? XMLデータベースを用いた オブジェクト指向データベースの提案 デモ 課題と今後の目標 続いて、研究目的です。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

8 研究目的 オブジェクト指向言語と関係データベース
研究目的  オブジェクト指向言語と関係データベース オブジェクト指向言語 関係データベース インスタンス 現在、もっとも多くの場面で用いられているデータベースは、関係データベースと呼ばれるデータベースです。 オブジェクト指向なプログラミング言語をオブジェクト指向言語と呼びますが、 オブジェクト指向言語で用いられるデータベースとしてもほとんどの場合、関係データベースです。 関係データベースとは、各列に項目、行に一組のデータを格納する二次元の表に対して、重複を避け、一事実を一カ所に格納するよう正規化を行い、 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

9 研究目的 オブジェクト指向言語と関係データベース
研究目的  オブジェクト指向言語と関係データベース オブジェクト指向言語 関係データベース インスタンス インピーダンスミスマッチ 複数の表に分割し、複数の表の間に関係を持たせた関係モデルと呼ばれるデータ表現を用いて、データベースを構築します。 オブジェクト指向言語は先ほど説明致しましたオブジェクト・モデルを用いてデータ表現を行います。 この異なった二つのデータ表現の間で一組のデータをやりとりする際には、 データ構造の設計の際の制限や、オブジェクトモデルと関係モデルの間で変換処理をその都度記述をしなければならない点や、 変換にかかる計算コストなどいくつもの問題があり、これらはインピーダンスミスマッチと呼ばれ、 オブジェクト指向言語と関係データベースを連携させる上で大きな問題となっています。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

10 研究目的 オブジェクト指向言語とオブジェクト指向データベース
研究目的  オブジェクト指向言語とオブジェクト指向データベース オブジェクト指向言語 オブジェクト指向データベース インスタンス インスタンス しかし、もしオブジェクト指向言語とオブジェクト指向データベースを連携させるのであれば、 インピーダンスミスマッチは発生しません。 オブジェクト指向データベースでは、オブジェクト指向言語のオブジェクト・モデルをそのままの形でデータベースに格納し取り出すことが可能です。 しかし、現在JavaやC++やC#やRubyといったオブジェクト指向言語が台頭してきているにもかかわらず、 オブジェクト指向データベースは、大規模で特殊な環境を除いてほとんど使われていません。 それは何故か? XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

11 研究目的 オブジェクト指向言語とオブジェクト指向データベース
研究目的  オブジェクト指向言語とオブジェクト指向データベース 歴史 オブジェクト指向言語 オブジェクト指向データベース 1960~1980年代 オブジェクト指向、オブジェクト指向言語の誕生 1980年代初期 オブジェクト指向データベースの研究が始まる 1980年代後半 C++の誕生 オブジェクト指向データベースの研究が盛んに行われるようになる 1990年代初期 C++に対応した多数のOODBMSが発売される 1993年 ODMGによりOQLやODLが策定される 1995年 Javaの誕生 1999年 ODMGがJavaに対応 2001年 ODMGの活動休止 インスタンス インスタンス オブジェクト指向データベースは、 1980年代初期から中期にグラフ構造を格納可能なデータベースの研究から発展し、 1990年代前半までは盛んに研究が行われていました。 また、1993年には、オブジェクト指向データベースのための標準規格ODMGが策定され、 オブジェクト指向データベースのための問い合わせ言語OQLなどが定められましたが、 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

12 研究目的 オブジェクト指向言語とオブジェクト指向データベース
研究目的  オブジェクト指向言語とオブジェクト指向データベース 歴史 オブジェクト指向言語 オブジェクト指向データベース 1960~1980年代 オブジェクト指向、オブジェクト指向言語の誕生 インスタンス インスタンス オブジェクト指向データベースの欠点 1980年代初期 オブジェクト指向データベースの研究が始まる 1980年代後半 C++の誕生 オブジェクト指向データベースの研究が盛んに行われるようになる オブジェクト指向言語でなければならない オブジェクト指向という概念は曖昧 1990年代初期 C++に対応した多数のOODBMSが発売される 関係データベースは良い製品が多く・環境も整備されている 1993年 ODMGによりOQLやODLが策定される オブジェクト指向データベースの欠点である、 オブジェクト指向という概念自体が曖昧であり、言語ごとデータベースごとに異なっている点、 関係データベースでよりよい製品が出てきた点などから、 1990年代後半以降、オブジェクト指向データベースは衰退していきます。 1995年 Javaの誕生 1999年 ODMGがJavaに対応 2001年 ODMGの活動休止 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

13 研究目的 オブジェクト指向言語とオブジェクト指向データベース
研究目的  オブジェクト指向言語とオブジェクト指向データベース オブジェクト指向言語 オブジェクト指向データベース インスタンス インスタンス しかし、オブジェクト指向言語を使う上で、オブジェクトモデルを、 そのままの形でデータベースに格納可能であるオブジェクト指向データベースは重要な存在であり、 簡単に導入可能なオブジェクト指向データベースが存在しないという現状は、解消しなければならない。 そう考え、このあと説明致します方法を用いれば、そう難しくなくオブジェクト指向データベースを 実現できるのでは無いかと思いつきまして、 僕はオブジェクト指向データベースの試作を卒業研究に選びました。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

14 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
目次 オブジェクト指向とは? 研究目的 オブジェクト指向言語と関係データベース オブジェクト指向言語とオブジェクト指向データベース XMLとは? XMLデータベースを用いた オブジェクト指向データベースの提案 デモ 課題と今後の目標 続いて、具体的にオブジェクト指向データベースの提案に入る前に、そこで使う技術であるXMLについて先にご説明致します。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

15 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
XMLとは? <html xmlns=" xml:lang="ja">  <head>   <title>目次</title>  </head>  <body> XMLデータベースを用いたJavaのための仮想的な<br/> オブジェクト指向データベースの提案<br/>   <ul>    <li>オブジェクト指向とは?</li>    <li>研究目的</li>    <li>XMLとは?</li>    <li>XMLDBを用いたOODBの提案</li>    <li>デモ</li>    <li>課題と今後の目標</li>   </ul>  </body> </html> 属性 要素 開始タグ 要素内容 要素 ここにいる皆さんでしたらご存じのことと思いますが、HTMLという言語があります。 XMLはHTMLと同じマークアップ言語です。 つまり、開始タグと終了タグによって囲まれた要素の中に、要素内容として表現したいデータを記します。 また、要素は要素の入れ子構造にし、要素には属性という形で値を付加することが出来ます。 また、XMLはHTMLと違い、要素の構造を定義が可能であり、構造を定義したのであれば、その定義に則って記述します。 終了タグ XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

16 XMLとは? タグによって構造化され、構造の定義が可能な、 テキスト形式のデータ記述のための仕様 要素 プログラムAPI
<html xmlns=" xml:lang="ja">  <head>   <title>目次</title>  </head>  <body> XMLデータベースを用いたJavaのための仮想的な<br/> オブジェクト指向データベースの提案<br/>   <ul>    <li>オブジェクト指向とは?</li>    <li>研究目的</li>    <li>XMLとは?</li>    <li>XMLDBを用いたOODBの提案</li>    <li>デモ</li>    <li>課題と今後の目標</li>   </ul>  </body> </html> 属性 タグによって構造化され、構造の定義が可能な、 テキスト形式のデータ記述のための仕様 要素 開始タグ 要素内容 プログラムAPI DOM SAX XMLDBへの問い合わせ言語 XQuery 要素 任意の場所を指定する XPath XMLの応用例 XHTML MathML SVG つまり、XMLとはタグによって構造化されるマークアップ言語であり、その構造の定義を可能とするメタ言語の二つの側面を備えた、世界で唯一と言えるテキスト形式である標準化されたデータ記述のための表現方法定めた仕様です。 XMLには、XMLそのものの事を標準化した仕様以外にも、 プログラムからXMLを操作するための仕様であるDOMやSAX、 XMLの上の任意の場所を指定する仕様であるXPath、 XMLを専門に格納するデータベースであるXMLデータベースに対する問い合わせ言語XQueryや、 XMLを使う上で、そのタグの名前や構造などを定義した応用規格として、 次世代のWeb記述言語であり、この裏の例でも出していますXHTMLなど 多数の規格が存在します。 終了タグ XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

17 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
目次 オブジェクト指向とは? 研究目的 オブジェクト指向言語と関係データベース オブジェクト指向言語とオブジェクト指向データベース XMLとは? XMLデータベースを用いた オブジェクト指向データベースの提案 デモ 課題と今後の目標 それでは、オブジェクト指向データベースの実現方法の提案に入ります。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

18 XMLデータベースを用いた オブジェクト指向データベースの提案
オブジェクトをXMLに変換 クライアント アプリケーション クライアント側システム サーバー側システム XMLDBごとのドライバ XMLデータベース インスタンス XML ネットワーク ネットワーク まず、このシステムは大きく分けて、5つの部分から構成されています。 オブジェクト指向データベースを使用するアプリケーション部分である、クライアントアプリケーション クライアントアプリケーションに対して、オブジェクト指向データベースとしての窓口であるクライアント側システム ネットワーク越しにクライアントからの処理を行うサーバー側システム XMLデータベースごとに異なった仕様を吸収し、標準的な処理を提供するためのXMLデータベースごとのドライバ ネットワークを挟み、オブジェクト指向データベースに格納するオブジェクト・モデルをXMLとして格納するXMLデータベース 以上、五つの部分です。 図ですと、この内の真ん中三つの部分が、僕が作成する部分です。 また、クライアントアプリケーションは、オブジェクト指向言語であるJavaを対象とします。 そして、このシステムでは、クライアント側システムにおいて、 オブジェクト指向言語のオブジェクトモデルを、各インスタンスごとに分割したXMLに変換し、 インスタンスの参照関係を、属性を用いてXML上でも参照関係で表します。 そして、サーバー側システム以降は、XMLとしてオブジェクトを管理していきます。 次に、オブジェクトの検索とオブジェクトの登録・更新という二つの観点から、 このシステムの振る舞いの説明を致します。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

19 XMLデータベースを用いた オブジェクト指向データベースの提案
オブジェクトの検索をOQLで記述 OQLによる検索 OQLをXQueryに変換 XML クライアント アプリケーション クライアント側システム サーバー側システム XMLDBごとのドライバ XMLデータベース まず、オブジェクトの検索について。 オブジェクトの検索にはオブジェクト指向データベースへの問い合わせ言語としてODMGが定めたOQLのサブセットを使用します。 始めに、クライアントアプリケーションはOQLで記述した検索内容をクライアントシステム側に渡します。 クライアント側システムは、XMLに変換されているオブジェクトを検索するために、OQLをXQueryに変換し、それをサーバー側システムを通して、裏でオブジェクトを格納しているXMLデータベースに投げます。 そして、その結果としてオブジェクトを表すXMLがサーバー側システムに返ってきます。 しかし、このXQueryによる検索でXMLデータベースから獲得したXMLは、 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

20 XMLデータベースを用いた オブジェクト指向データベースの提案
オブジェクトの検索をOQLで記述 OQLによる検索 OQLをXQueryに変換 クライアント アプリケーション クライアント側システム サーバー側システム XMLDBごとのドライバ XMLデータベース XML XML XML オブジェクトモデルのルートとなるインスタンス、例えばこの点滅している部分のXMLだけです。 そのため、獲得したXMLが参照するXMLを獲得するための処理を行います。 図ですと、次にこの点滅している部分のXMLを獲得し、さらに参照するXMLを獲得するための処理を繰り返し行っていきます。 XML XML XML XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

21 XMLデータベースを用いた オブジェクト指向データベースの提案
オブジェクトの検索をOQLで記述 OQLによる検索 OQLをXQueryに変換 XML クライアント アプリケーション クライアント側システム サーバー側システム XMLDBごとのドライバ XMLデータベース 参照するXMLを 繰り返し獲得 そして、必要なXMLがそろった時点で、クライアント側にXMLを送信します。 クライアント側システムは送られてきたXMLから、オブジェクトを復元し、 クライアントアプリケーションに、検索結果として渡します。 以上がオブジェクトの検索の処理の流れです。 続いて、オブジェクトの登録・更新に関して説明致します。 XMLから オブジェクトに復元 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

22 XMLデータベースを用いた オブジェクト指向データベースの提案
オブジェクトの登録・更新 1.登録したい オブジェクトをBindする クライアント アプリケーション クライアント側システム サーバー側システム XMLDBごとのドライバ XMLデータベース 1.Bindされている オブジェクトを XMLに変換する 始めに、クライアントアプリケーションは、オブジェクト指向データベースへ新たに登録したいオブジェクトを、Bindします。これは仮の登録です。 また、先ほど説明致しました検索によってオブジェクト指向データベースから取り出したオブジェクトに関しては、全て、Bindされています。 そして、データベースに、Bindされているオブジェクトの状態を反映させたいタイミングで、コミットします。 コミットをした瞬間、データベースにBindされているオブジェクトをXMLに変換し、 新たに増えたインスタンスに関しては追加、 検索によってオブジェクト指向データベースから取り出されたインスタンスに関しては、変更があったものは更新、残りは更新の対象から外し、追加、更新の情報と共に、オブジェクトから変換されたXMLをサーバー側に送信し、XMLデータベースへXMLの追加、更新の処理を行い、オブジェクトの登録・更新の処理とします。 2.コミットする 2.追加・更新・ 無視に分ける XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

23 XMLデータベースを用いた オブジェクト指向データベースの提案
クライアントアプリケーションからは 一つのオブジェクト指向データベースに見える クライアント アプリケーション クライアント側システム サーバー側システム XMLDBごとのドライバ XMLデータベース このような処理により、 クライアントアプリケーションからは、 クライアント側システム以降が一つのオブジェクト指向データベースのように見えます。 このような方法でオブジェクト指向データベースを試作致しました。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

24 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
目次 オブジェクト指向とは? 研究目的 オブジェクト指向言語と関係データベース オブジェクト指向言語とオブジェクト指向データベース XMLとは? XMLデータベースを用いた オブジェクト指向データベースの提案 デモ 課題と今後の目標 それでは、このオブジェクト指向データベースのデモを次にお見せ致します。 しかし、データベースそのものだけでは、目に見えるような動作をするものではないため、今回はこのオブジェクト指向データベースを使った、システムを使って、デモをお見せすることで、オブジェクト指向データベースのデモとしたいと思います。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

25 デモ 著者 本 タイトル:String 名前:String 著者:著者[1…*] Wikipedia:String 著書:本[1…*]
著者クラスと本クラスからなる 二部グラフの構造をしたオブジェクト・モデル 著者 名前:String Wikipedia:String 著書:本[1…*] タイトル:String 著者:著者[1…*] 出版社:String ISBN番号:String 先に、お見せするシステムの説明を少ししておきます。 Amazon.comのデータを用いて、著者、本の間に互いに参照を持たせた二部グラフの構造をしたオブジェクト・モデルを用いて、ある著者を選択すると、著書である本を表示することができ、本を選択するとその本の著者を表示することができるというプログラムをお見せします。 また、著者、本はOQLによる検索が可能です。 すでにデータベースには、著者300人分、約2200冊のデータが格納されています。 また、このデータは、任意の著者または本を取ると、任意の著者または本まで辿りつくことが可能なデータとなっています。 では、デモに移ります。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

26 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
目次 オブジェクト指向とは? 研究目的 オブジェクト指向言語と関係データベース オブジェクト指向言語とオブジェクト指向データベース XMLとは? XMLデータベースを用いた オブジェクト指向データベースの提案 デモ 課題と今後の目標 最後に、課題と今後の目標についてお話しします。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

27 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
課題と今後の目標 理論部分での課題 (クエリ内からのメソッド呼び出し、排他制御、 オブジェクトの削除、クエリの最適化など) 実装部分での課題 (アクセス制限、バージョン管理、Xpriori以外のDBへの対応、高速化など) 追加機能 (ネイティブクエリ、スーパークラス・インターフェイスによるクエリ、クラスファイルからのスキーマ生成など) 現在、オブジェクトを登録し、OQLを用いた単純な検索は可能となっていますが、 まだまだ実用レベルのデータベースとしては機能不足です。 そもそもオブジェクト指向データベースとしての理論部分において、 オブジェクトをXMLに変換しているため、OQL内でメソッドを呼び出すことができない点や、 実装部分においても、データベースで管理されたログイン機能などのアクセス制限が無い点や、 先ほど、デモでもお見せしたとおり、少しでも複雑になったクエリは、結果が返ってくるまでに時間がかかるなど速度面の問題がある点など 理論的な問題点を解決し、実装し、オブジェクト指向データベースとしての機能を充実すべく、 これからも時間がある時にこつこつと研究を進めていこうと考えています。 以上です。 ご静聴ありがとうございました。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作

28 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作
御清聴ありがとうございました。 XMLデータベースを用いたJavaのための仮想的なオブジェクト指向データベースの試作


Download ppt "XMLデータベースを用いた Javaのための仮想的な オブジェクト指向データベースの試作"

Similar presentations


Ads by Google