view abst.tex @ 15:70151ab67333

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 17 Feb 2015 17:55:05 +0900
parents 713f6f9ceda3
children 56172d7c12e5
line wrap: on
line source

\documentclass[twocolumn,twoside,9.5pt]{jarticle}
\usepackage[dvips]{graphicx}
\usepackage{ascmac}
\usepackage{picins}
\usepackage{fancyhdr}
\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
\rhead{}
\cfoot{}

\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
\setlength{\headheight}{0mm}
\setlength{\headsep}{5mm}
\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
\setlength{\textwidth}{181mm}
\setlength{\textheight}{261mm}
\setlength{\footskip}{0mm}
\pagestyle{empty}

\begin{document}
\title{分散木構造データベースJungleによる\\企業向け許認可システム}

\author{金川竜己  \\ 指導教員 河野真治 {} }
\maketitle
\begin{abstract}
Knowledge used in various services are usually tree structured, such as books, HTML or organization. In RDB, these tree structures are converted into table base representation,
but more direct use of tree structure on a database is preferable. Jungle Database can store tree structure directory and it modifies trees non destructively.
As an application of Jungle, authorization system on enterprises, maTrix is implemented. Representation ability, necessary functionality of Jungle and practical performance are
verified. This research is supported by Symphonies, Inc.
\end{abstract}


\thispagestyle{fancy}

\section{分散木構造データベースJungle}
知識構造は様々なサービスで扱われるが、それらは木構造を持つことが多い。例えば、書籍、Webの基本であるHTML、組織構造などである。
これらのデータをRDBでは表構造に変換する必要があるが、木構造のまま格納することにより、直接的な操作や効率的なサービスが可能に
なると考えられる。
当研究室では木構造をそのまま格納し、 データの変更の際に過去の木構造を保存するデータベースであるJungleを開発している。
非破壊変更により、書き込みと読み込みを同時に行うことができ、安全に木の複製を行うことができるので、スケールアウトがしやすくなっている。
当研究では、Jungleの上に、組織の許認可管理アプリケーションmaTrixを実装し、データベースの表現力、機能の十分性、実用的な性能などの検証を行った。


\section{組織中の許認可管理\\アプリケーションmaTrix}
maTrixは組織構造を、人、役職、役割、権限を表すそれぞれ別な木構造の集まりとして持っている。
ある木のノードは、他の木からidを用いて参照されることがある。例えば役職技官には、PC貸出権限がidを経由して付属する。
許認可判断は決まったルールにそって行われる。例えば、PCの貸出権限は台数に依存するかもしれない。
このようなルールは組織構造とは別にポリシーファイルとして記述される。maTrixではXCAMLをルールの記述に使用している。
XACMLは組織構造を参照するので、Jungleの木構造を参照する仕組みが必要となる。
XACMLとJungle DBの組み合わせに対して、Subject(誰が)、Resource(何を)、Action(どうする)かを問い合わせ、その許諾を書く。
許諾事項は日々更新される組織構造やポリシーに対して判断され、過去の情報も残しておく必要がある。

\section{Jungle上での\\maTrixのデータ構造の表現}
maTrixの人、組織、役割、権限等のデータは木構造なので Jungleの木構造にそのままマッピングできる。
実際のmaTrixのデータ構造の一部(表\ref{list:PersonTree})と、そのデータを実際に格納したJungleTree(図\ref{fig:PersonTree})を以下に記す。
\begin{figure}[h]
\begin{center}
\includegraphics[height = 8cm , bb=0 0 398 367]{fig/TreePersonJungle.pdf}
\caption{Jungle上での人物Treeの表現例(1)}
\label{fig:PersonTree}
\end{center}
\end{figure}

\clearpage
\begin{table}[h]
\caption{図\ref{fig:PersonTree}に対応したXML}
\label{list:PersonTree}
\begin{center}
\begin{tabular}{|l|} \hline
\verb|<|Persons\verb|>| \\
\ \verb|<|Person id="p:1" type="Person"\verb|>| \\
\ \ \verb|<|PersonData\verb|>| \verb|<|/PersonData\verb|>| \\ 
\ \verb|<|/Person\verb|>|  \\
\ \verb|<|Person id="p:2" type="Person"\verb|>| \\ 
\ \ \verb|<|PersonData\verb|>| \verb|<|/PersonData\verb|>| \\
\ \verb|<|/Person\verb|>| \\
\verb|<|/Persons\verb|>|\\ \hline
\end{tabular}
\end{center}
\end{table}
しかし、maTrixの一部のデータ構造がJungleに対応していないため、その部分のみJungleにあった形に修正を行い格納している。Jungle上で表現できないデータの例を以下に記す(\ref{list:PersonTree2})。

\begin{table}[h]
\caption{Jungle上で表現できないデータ例}
\label{list:PersonTree2}
\begin{center}
\begin{tabular}{|l|} \hline
\verb|<|Ids\verb|>|r:10 r:34\verb|<|/Ids\verb|>| \\
\hline
\end{tabular}
\end{center}
\end{table}

Jungleは、TreeNodeにデータを格納する際、String KeyとByteBuffer attributeの組み合わせで保持している。
しかし、1つのkeyに対して複数のattributeを持つことは出来ないので、表\ref{list:PersonTree2}の様に、1つの要素に複数の値がある場合などはそのままではデータを格納できない。
しかし、表\ref{list:maTrixDataChild}の様に、データの2つのNodeに分割することで、Jungleに格納できるようになる。
\begin{table}[h]
\caption{Jungleに対応したデータ例}
\label{list:maTrixDataChild}
\begin{center}
\begin{tabular}{|l|} \hline
\verb|<|Ids\verb|>| \\
\ \verb|<|Id\verb|>|r:10\verb|<|/Id\verb|>| \\
\ \verb|<|Id\verb|>|r:34\verb|<|/Id\verb|>| \\
\verb|<|/Ids\verb|>| \\
\hline

\end{tabular}
\end{center}
\end{table}

Jungle上でのmaTrixの組織構造の表現は、Treeに対するIdの検索を用いて表現すれば良い。
また、maTrixがXML形式で出力したデータを、Jungleに格納するために、SAXを用いて、Jungle用のXMLReaderを作成した。

\section{Jungle上での検索APIの設計と実装}
JungleのTreeに対して検索を行うfind関数の実装を行った。
以下にfind関数は、\\
public Iteratori$<$TreeNode$>$ \\
\ find (Query query ,String key,String Value);と定義した
.\\
.\\
.\\
また、find関数で使用するQueryInterfaceの定義は、\\
public interface Query\{\\
\ booleancondition(TreeNode node);\\
\}\\
と定義した

find関数は引数にQuery、String key、String valueの3つの引数を取り、条件に一致したNodeのIteratorを返す。
第一引数には以下に記載してある、探索の条件を記述する関数boolean comdition(TreeNode)を定義したInterfaceQueryを。
第二、第三引数の、String key、String valueはIndexの取得を行うために使用する。



find関数を実際に使用して、maTrixがデータにアクセスする際に使用する関数を全て実装し、実際に、XACMLを用いて許認可を行えるようにした。

\section{まとめ}
本研究は、実際に使われている組織の中の許認可を判断するアプリケーションmaTrixのデータ構造をどのようにJungle上で表現するかを設計し、実際にmaTrixのデータ構造を格納した。
そして実際にmaTrixで使われているデータアクセス関数を実装して、XACMLファイルを使用し許認可判断を行えるようにし、実際にJungle上に実用的な業務アプリケーションの構築に成功した。
本研究は、PCIホールディングス株式会社と株式会社Symphonyとの共同研究である。
\thispagestyle{fancy}
\begin{thebibliography}{9}

\bibitem{1}
玉城将士 非破壊的木構造を用いた分散CMSの設計と実装
\bibitem{2}
大城信康 分散Database Jungleに関する研究
\bibitem{3}
Eric Redmond and Jim R. Wilson 7つのデータベース7つの世界
\end{thebibliography}
\end{document}