changeset 29:5ee5d1bfce28 default tip

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 19 Feb 2015 13:17:33 +0900
parents 81739e6ae6b9
children
files slide/slide.html
diffstat 1 files changed, 75 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/slide/slide.html	Thu Feb 19 13:03:39 2015 +0900
+++ b/slide/slide.html	Thu Feb 19 13:17:33 2015 +0900
@@ -104,23 +104,38 @@
 <div>
 <font size=5>
 <h1>知的構造を格納するためのデータベース</h1>
-<p>我々が扱っている知識は木構造であることが多い</p>
-<p>RDBに木構造のデータを格納する際は表変換を行う必要があり、データ構造が煩雑になりやすい</p>
-<p>木構造のデータを直接格納できるデータベースJungleの開発を行っている</p>
-<p>Jungle上に組織の許認可管理アプリケーションmaTrixを実装する</p>
-<p>データベースの表現力、機能の十分性、実用的な性能実証実験を行う</p>
+<il>
+<li>我々が扱っている知識は木構造であることが多い
+<li>RDBに木構造の格納する際は表に変換を行う必要があり、スキーマが煩雑になる
+<li>木構造のデータを直接格納できるデータベースが望ましい
+</il>
+
+<p>そこで、並列研では非破壊木構造データベースJungleの開発を行っている</p>
+<p>Jungleの表現力、機能の十分性検証、及び性能実証実験を行いたい</p>
+<p>そのために、Jungle上に組織の許認可管理アプリケーションmaTrixを実装した</p>
 </font>
 </div>
 
 
+<div>
+<font size=5>
+<h1>Jungle上でのmaTrixのデータ構造の表現</h1>
+<p>Jugnleでは木構造持つノードを、そのままデータベースとして扱う</p>
+<p>maTrixの人物Treeの一部をJungleのノードで表現</p>
+<p>ノードは複数の子供ノードを持つ</p>
+<p>ノードには属性名と属性の値の組があり、データベースのレコードに相当する</p>
+<img src="./images/TreePersonJungle.png">
+</font>
+</div>
+
 
 <div>
 <font size=5>
 <h1>Jungleのデータの編集</h1>
-<p>新しい木構造を作成することでデータの編集を行う。</p>
+<p>新しい木構造を作成することでデータの編集を行う</p>
 <img src="./images/non_destructive_tree_edit2.png">
-<p>書き込み時に、ロックをかける必要があるのはルートノードを入れ替えるときのみ。</p>
-<p>データの上書きが無いため、読み込み中にロックをかける必要がない。</p>
+<p>書き込み時に、ロックをかける必要があるのはルートノードを入れ替えるときのみ</p>
+<p>データの上書きが無いため、読み込み中にロックをかける必要がない</p>
 </font>
 </div>
 
@@ -129,8 +144,8 @@
 <div>
 <font size=5>
 <h1>組織の中の許認可管理アプリケーションmaTrix</h1>
-<p>人、組織、役割等の情報を木構造として保持しており、Idでお互いに参照し組織構造を表現している。</p>
-<p>許認可の判断は、アクセスルールが記述されたポリシーファイルにそって行われる。</p>
+<p>人、組織、役割等の情報を木構造として保持しており、Idでお互いに参照し組織構造を表現している</p>
+<p>許認可の判断は、アクセスルールが記述されたポリシーファイルにそって行われる</p>
 </font>
 </div>
 
@@ -176,37 +191,30 @@
 
 <div>
 <font size=5>
-<h1>maTrixの組織構造表現例</h1>
-<p>maTrixの組織構造は純粋な木構造ではない</p>
-<p>木同士が相互参照を行うことで組織構造を表現している。</p>
-<img src="./images/sosikiTree.png">
-<p>この図だと、人物Treeと組織Treeがお互い参照を行い組織運用モデルを表現している。</p>
+<h1>Jungle上でのIdを使った木の相互参照</h1>
+<p>組織構造は複数の木構造を持ち、お互いのノード参照し合っている</p>
+<p>ex. 人物は、そのロールの木の中のノードを参照する</p>
+<img src="./images/TreePersonJungle.png">
+<p>ロールの木のノードにID属性を用意し、異なるID値を割りふる</p>
+<p>ノードIDにより参照を可能にする</p>
+<p>→ノードIDの検索機能が必要となる</p>
 </font>
 </div>
 
 
 <div>
 <font size=5>
-<h1>Jungle上でのmaTrixのデータ構造の表現</h1>
-<p>この図は、maTrixの人物Treeの一部をJungleに格納したものである。</p>
-<img src="./images/TreePersonJungle.png">
-<p>この様にJungleでは木構造のデータを読み込む。</p>
-</font>
-</div>
-
-<div>
-<font size=5>
 <h1>maTrixでの許認可管理</h1>
-<p>maTrixを用いた許認可は、組織構造だけでは判断されない。</p>
-<p>アクセス可能な時間等のルールは組織構造では表現できないからである。</p>
-<p>そこでアクセスルールを記述したポリシーファイルを用いて許認可管理を行う。</p>
-<p>ポリシーファイルには、subject(誰が)、Resource(何に対して)、Action(何が出来るか)を記述する。</p>
+<p>maTrixを用いた許認可は、組織構造だけでは判断されない</p>
+<p>アクセス可能な時間等のルールは組織構造では表現できないからである</p>
+<p>そこでアクセスルールを記述したポリシーファイルを用いて許認可管理を行う</p>
+<p>ポリシーファイルには、subject(誰が)、Resource(何に対して)、Action(何が出来るか)を記述する</p>
 
 <p>以下に許認可管理の流れを示す</p>
 <ul>
-<li>Aさん(Subject)が、学科のノートPC(Resource)の借りる(Action)ために、maTrixに貸出許可を求める。</li>
-<li>maTrixはリポジトリから、貸出許可を与えるかを判断するためのポリシーを取得する。</li>
-<li>ポリシーファイルを元に、組織構造にアクセスを行い許可を与えるかどうかを判断する。</li>
+<li>Aさん(Subject)が、学科のノートPC(Resource)の借りる(Action)ために、maTrixに貸出許可を求める</li>
+<li>maTrixはリポジトリから、貸出許可を与えるかを判断するためのポリシーを取得する</li>
+<li>ポリシーファイルを元に、組織構造にアクセスを行い許可を与えるかどうかを判断する</li>
 </ul>
 </font>
 </div>
@@ -214,27 +222,20 @@
 
 <div>
 <font size=5>
-<h1>Jungle上でのIdを使った木の相互参照</h1>
-<p>Treeの検索は、Jungleが提供しているTraverserを使用する。</p>
+<h1>Treeの検索</h1>
+<p>Jungleの木をたどる Traverserを使用する</p>
 <div style="padding: 10px; margin-bottom: 10px; border: 1px solid #333333;">
 InterfaceTraverser traverser = tree.getTraverser(boolean useIndex);
 </div>
-<p>TraverserはTreeのNodeを走破する機能を持ったクラスです。</p>
-<p>TreeからgetTraverserで取得可能。</p>
-<p>第一引数で 検索を行う際にIndexを使用するかどうかを選択できる。</p>
-</font>
-</div>
-
-<div>
-<font size=5>
-<h1>Idを使った木の相互参照2 </h1>
-<p>Traverser.findでTreeに対して検索を行う。</p>
+<p>TraverserはTreeのNodeを走破する機能を持ったクラスです</p>
+<p>TreeからgetTraverserで取得可能</p>
+<p>第一引数で 検索を行う際にIndexを使用するかどうかを選択できる</p>
 <div style="padding: 10px; margin-bottom: 10px; border: 1px solid #333333;">
  public Iterator&lt;TreeNode&gt; nodeIterator = traverser.find(Query query,String key, String searchValue);
 </div>
-<p>第一引数には、探索の条件を記述する関数boolean condition(TreeNode)を定義したQueryを受け取る。</p>
-<p>第二、第三引数の、String key、String valueはIndexの取得に使用する。</p>
-<p>条件に一致したNodeのIteratorを返す。</p>
+<p>第一引数には、探索の条件を記述する関数boolean condition(TreeNode)を定義したQueryを受け取る</p>
+<p>第二、第三引数の、String key、String valueはIndexの取得に使用する</p>
+<p>条件に一致したNodeのIteratorを返す</p>
 <div style="padding: 10px; margin-bottom: 10px; border: 1px solid #333333;">
 public interface Query {<br>
 &nbsp;&nbsp boolean condition(TreeNode _node);<br>
@@ -248,14 +249,14 @@
 <div>
 <font size=5>
 <h1>JungleのIndex</h1>
-<p>indexを実装することで探索計算量がO(logN)となる。</p>
-<p>Jungleは過去のTreeを全て保持しているため、Treeのversion毎にIndexを持っている必要がある。</p>
-<p>version毎にIndexを作るとメモリを多量消費してしまう。</p>
-<p>FunctionalJavaのTreeMapを使用してIndexの実装を行った。</p>
-<p>データの更新が行われた際に、一度作られたIndexに対して更新を行わず、新しいIndexを構築します。</p>
-<p>その際、過去のIndexとデータを共有している。</p>
-<p>複数のversionのIndexがあっても、データの差分しかメモリは消費されない。</p>
-<p>メモリの使用量を抑えつつ複数のversionでIndexを保持できる。</p>
+<p>indexを実装することで探索計算量がO(logN)となる</p>
+<p>Jungleは過去のTreeを全て保持しているため、Treeのversion毎にIndexを持っている必要がある</p>
+<p>version毎にIndexを作るとメモリを多量消費してしまう</p>
+<p>FunctionalJavaのTreeMapを使用してIndexの実装を行った</p>
+<p>データの更新が行われた際に、一度作られたIndexに対して更新を行わず、新しいIndexを構築します</p>
+<p>その際、過去のIndexとデータを共有している</p>
+<p>複数のversionのIndexがあっても、データの差分しかメモリは消費されない</p>
+<p>メモリの使用量を抑えつつ複数のversionでIndexを保持できる</p>
 </font>
 </div>
 
@@ -263,16 +264,16 @@
 <div>
 <font size=5>
 <h1>木構造の親を辿るQuery</h1>
-<p>maTrixで許認可を判断する際に、木構造の親を辿る検索を行う必要がある。</p>
-<p>以下に親を辿る検索を行う例を記す。</p>
+<p>maTrixで許認可を判断する際に、木構造の親を辿る検索を行う必要がある</p>
+<p>以下に親を辿る検索を行う例を記す</p>
 <ol>
-<li>Aさんが、maTrixに工学部の学生にのみ貸出を行っている書籍の貸出許可を求める。</li>
-<li>Aさんの所属している組織の情報を取得する(情報工学科)。</li>
-<li>情報工学科の親の情報を取得する(工学部)。</li>
-<li>Aさんは工学部に所属しているため本の貸出を許可する。</li>
+<li>Aさんが、maTrixに工学部の学生にのみ貸出を行っている書籍の貸出許可を求める</li>
+<li>Aさんの所属している組織の情報を取得する(情報工学科)</li>
+<li>情報工学科の親の情報を取得する(工学部)</li>
+<li>Aさんは工学部に所属しているため本の貸出を許可する</li>
 </ol>
-<p>TreeNodeでgetを行うと、親Nodeを返すParentIndexを実装した。</p>
-<p>3番目の処理でParentIndexを使用する。</p>
+<p>TreeNodeでgetを行うと、親Nodeを返すParentIndexを実装した</p>
+<p>3番目の処理でParentIndexを使用する</p>
 </font>
 </div>
 
@@ -280,30 +281,20 @@
 <div>
 <font size=5>
 <h1>maTrixのポリシーファイルのInterpreter</h1>
-<p>Jungle上での許認可判断は、組織構造とポリシーファイルを参照して行う。</p>
-<p>引数にポリシーファイルと、誰が(subject)、何に(Resource)、どうするか(Action)を取る。</p>
-<p>返り値は、許可(Permit) or 拒否(Deny)がある。</p>
-<p>実際にJungleの上で許認可判断が行えるようになった。</p>
+<p>Jungle上での許認可判断は、組織構造とポリシーファイルを参照して行う</p>
+<p>引数にポリシーファイルと、誰が(subject)、何に(Resource)、どうするか(Action)を取る</p>
+<p>返り値は、許可(Permit) or 拒否(Deny)がある</p>
+<p>実際にJungleの上で許認可判断が行えるようになった</p>
 </font>
 </div>
 
 <div>
 <font size=5>
 <h1>maTrixのポリシーファイルのInterpreter</h1>
-<p>Jungle上での許認可判断は、組織構造とポリシーファイルを参照して行う。</p>
-<p>引数にポリシーファイルと、誰が(subject)、何に(Resource)、どうするか(Action)を取る。</p>
-<p>返り値は、許可(Permit) or 拒否(Deny)がある。</p>
-<p>実際にJungleの上で許認可判断が行えるようになった。</p>
-</font>
-</div>
-
-<div>
-<font size=5>
-<h1>Interpreterのデモ</h1>
-<li>首都圏第一営業部責任者</li>
-<li>urn:srl-oasis:systems:aso:normal-menu</li>
-<li>読み込みと書き込みを許可する</li>
-<p>ルールが記述されたpolicyを用いる。</p>
+<p>Jungle上での許認可判断は、組織構造とポリシーファイルを参照して行う</p>
+<p>引数にポリシーファイルと、誰が(subject)、何に(Resource)、どうするか(Action)を取る</p>
+<p>返り値は、許可(Permit) or 拒否(Deny)がある</p>
+<p>実際にJungleの上で許認可判断が行えるようになった</p>
 </font>
 </div>
 
@@ -312,7 +303,7 @@
 <h1>今後の課題</h1>
 <li>分散版の実装</li><br>
 <li>maTrix専用のデータ構造の定義</li>
-<p>今は、maTrixのデータ構造をそのまま格納しているため、Jungleに合ったデータ構造を設計する。</p>
+<p>今は、maTrixのデータ構造をそのまま格納しているため、Jungleに合ったデータ構造を設計する</p>
 </font>
 </div>
 
@@ -320,11 +311,11 @@
 <div>
 <font size=5>
 <h1>まとめ</h1>
-<p>Jungle上で実用アプリケーションを構築できた。</p>
-<p>その際に必要だった機能をJungleに追加した。</p>
+<p>Jungle上で実用アプリケーションを構築できた</p>
+<p>その際に必要だった機能をJungleに追加した</p>
 <li>Query</li>
 <li>Index</li>
-<p>実際にポリシーファイルを読み込み許認可を行えた。</p>
+<p>実際にポリシーファイルを読み込み許認可を行えた</p>
 </font>
 </div>