annotate abst.tex @ 18:96fc201c4e8c

add bibi
author tatsuki
date Wed, 18 Feb 2015 12:24:03 +0900
parents ceeb95a12d64
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
7848919edb48 add abst
tatsuki
parents:
diff changeset
2 \usepackage[dvips]{graphicx}
7848919edb48 add abst
tatsuki
parents:
diff changeset
3 \usepackage{ascmac}
7848919edb48 add abst
tatsuki
parents:
diff changeset
4 \usepackage{picins}
7848919edb48 add abst
tatsuki
parents:
diff changeset
5 \usepackage{fancyhdr}
7848919edb48 add abst
tatsuki
parents:
diff changeset
6 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
7848919edb48 add abst
tatsuki
parents:
diff changeset
7 \rhead{}
7848919edb48 add abst
tatsuki
parents:
diff changeset
8 \cfoot{}
7848919edb48 add abst
tatsuki
parents:
diff changeset
9
7848919edb48 add abst
tatsuki
parents:
diff changeset
10 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
7848919edb48 add abst
tatsuki
parents:
diff changeset
11 \setlength{\headheight}{0mm}
7848919edb48 add abst
tatsuki
parents:
diff changeset
12 \setlength{\headsep}{5mm}
7848919edb48 add abst
tatsuki
parents:
diff changeset
13 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
7848919edb48 add abst
tatsuki
parents:
diff changeset
14 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
7848919edb48 add abst
tatsuki
parents:
diff changeset
15 \setlength{\textwidth}{181mm}
7848919edb48 add abst
tatsuki
parents:
diff changeset
16 \setlength{\textheight}{261mm}
7848919edb48 add abst
tatsuki
parents:
diff changeset
17 \setlength{\footskip}{0mm}
7848919edb48 add abst
tatsuki
parents:
diff changeset
18 \pagestyle{empty}
7848919edb48 add abst
tatsuki
parents:
diff changeset
19
7848919edb48 add abst
tatsuki
parents:
diff changeset
20 \begin{document}
11
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
21 \title{分散木構造データベースJungleによる\\企業向け許認可システム}
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
22
7848919edb48 add abst
tatsuki
parents:
diff changeset
23 \author{金川竜己 \\ 指導教員 河野真治 {} }
7848919edb48 add abst
tatsuki
parents:
diff changeset
24 \maketitle
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
25 \begin{abstract}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
26 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,
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
27 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.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
28 As an application of Jungle, authorization system on enterprises, maTrix is implemented. Representation ability, necessary functionality of Jungle and practical performance are
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
29 verified. This research is supported by Symphonies, Inc.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
30 \end{abstract}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
31
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
32
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
33 \thispagestyle{fancy}
7848919edb48 add abst
tatsuki
parents:
diff changeset
34
7848919edb48 add abst
tatsuki
parents:
diff changeset
35 \section{分散木構造データベースJungle}
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
36 知識構造は様々なサービスで扱われるが、それらは木構造を持つことが多い。例えば、書籍、Webの基本であるHTML、組織構造などである。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
37 これらのデータをRDBでは表構造に変換する必要があるが、木構造のまま格納することにより、直接的な操作や効率的なサービスが可能に
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
38 なると考えられる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
39 当研究室では木構造をそのまま格納し、 データの変更の際に過去の木構造を保存するデータベースであるJungleを開発している。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
40 非破壊変更により、書き込みと読み込みを同時に行うことができ、安全に木の複製を行うことができるので、スケールアウトがしやすくなっている。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
41 当研究では、Jungleの上に、組織の許認可管理アプリケーションmaTrixを実装し、データベースの表現力、機能の十分性、実用的な性能などの検証を行った。
11
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
42
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
43
7848919edb48 add abst
tatsuki
parents:
diff changeset
44 \section{組織中の許認可管理\\アプリケーションmaTrix}
15
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
45 maTrixは組織構造を、人、役職、役割、権限を表すそれぞれ別な木構造の集まりとして持っている。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
46 ある木のノードは、他の木からidを用いて参照されることがある。例えば役職技官には、PC貸出権限がidを経由して付属する。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
47 許認可判断は決まったルールにそって行われる。例えば、PCの貸出権限は台数に依存するかもしれない。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
48 このようなルールは組織構造とは別にポリシーファイルとして記述される。maTrixではXCAMLをルールの記述に使用している。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
49 XACMLは組織構造を参照するので、Jungleの木構造を参照する仕組みが必要となる。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
50 XACMLとJungle DBの組み合わせに対して、Subject(誰が)、Resource(何を)、Action(どうする)かを問い合わせ、その許諾を書く。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
51 許諾事項は日々更新される組織構造やポリシーに対して判断され、過去の情報も残しておく必要がある。
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
52
16
tatsuki
parents: 15
diff changeset
53 \section{Jungle上でのmaTrixの\\データ構造の表現}
tatsuki
parents: 15
diff changeset
54 maTrixの人、組織、役割、権限等のデータは木構造であるため Jungleにそのままマッピングできる。
11
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
55 実際のmaTrixのデータ構造の一部(表\ref{list:PersonTree})と、そのデータを実際に格納したJungleTree(図\ref{fig:PersonTree})を以下に記す。
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
56 \begin{figure}[h]
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
57 \begin{center}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
58 \includegraphics[height = 8cm , bb=0 0 398 367]{fig/TreePersonJungle.pdf}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
59 \caption{Jungle上での人物Treeの表現例(1)}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
60 \label{fig:PersonTree}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
61 \end{center}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
62 \end{figure}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
63
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
64 \clearpage
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
65 \begin{table}[h]
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
66 \caption{図\ref{fig:PersonTree}に対応したXML}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
67 \label{list:PersonTree}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
68 \begin{center}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
69 \begin{tabular}{|l|} \hline
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
70 \verb|<|Persons\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
71 \ \verb|<|Person id="p:1" type="Person"\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
72 \ \ \verb|<|PersonData\verb|>| \verb|<|/PersonData\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
73 \ \verb|<|/Person\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
74 \ \verb|<|Person id="p:2" type="Person"\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
75 \ \ \verb|<|PersonData\verb|>| \verb|<|/PersonData\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
76 \ \verb|<|/Person\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
77 \verb|<|/Persons\verb|>|\\ \hline
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
78 \end{tabular}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
79 \end{center}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
80 \end{table}
16
tatsuki
parents: 15
diff changeset
81
tatsuki
parents: 15
diff changeset
82 Jungleは、TreeNodeにデータを格納する際、String KeyとByteBuffer attributeの組み合わせで保持しているため、1つのkeyに対して複数のattributeを持つことは出来ない。
tatsuki
parents: 15
diff changeset
83 そのため、表\ref{list:PersonTree2}の様に、1つの要素に複数の値がある場合はデータを格納できない。
tatsuki
parents: 15
diff changeset
84 しかし、表\ref{list:maTrixDataChild}の様に、データの2つのNodeに分割することで、Jungleに格納できるようになる。
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
85
11
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
86 \begin{table}[h]
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
87 \caption{Jungle上で表現できないデータ例}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
88 \label{list:PersonTree2}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
89 \begin{center}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
90 \begin{tabular}{|l|} \hline
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
91 \verb|<|Ids\verb|>|r:10 r:34\verb|<|/Ids\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
92 \hline
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
93 \end{tabular}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
94 \end{center}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
95 \end{table}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
96
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
97 \begin{table}[h]
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
98 \caption{Jungleに対応したデータ例}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
99 \label{list:maTrixDataChild}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
100 \begin{center}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
101 \begin{tabular}{|l|} \hline
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
102 \verb|<|Ids\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
103 \ \verb|<|Id\verb|>|r:10\verb|<|/Id\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
104 \ \verb|<|Id\verb|>|r:34\verb|<|/Id\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
105 \verb|<|/Ids\verb|>| \\
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
106 \hline
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
107
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
108 \end{tabular}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
109 \end{center}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
110 \end{table}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
111
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
112 Jungle上でのmaTrixの組織構造の表現は、Treeに対するIdの検索を用いて表現すれば良い。
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
113 また、maTrixがXML形式で出力したデータを、Jungleに格納するために、SAXを用いて、Jungle用のXMLReaderを作成した。
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
114
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
115 \section{Jungle上での検索APIの設計と実装}
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
116 JungleのTreeに対して検索を行うfind関数の実装を行った。
16
tatsuki
parents: 15
diff changeset
117 find関数は引数にQuery、String key、String valueの3つの引数を取り、条件に一致したNodeのIteratorを返す。
tatsuki
parents: 15
diff changeset
118 第1引数には以下に記載してある、探索の条件を記述する関数boolean comdition(TreeNode)を定義したInterfaceQueryを。
tatsuki
parents: 15
diff changeset
119 第2、第3引数の、String key、String valueはIndexの取得を行うために使用する。
tatsuki
parents: 15
diff changeset
120 \begin{itembox}[l]{find関数の定義}
tatsuki
parents: 15
diff changeset
121 \begin{verbatim}
tatsuki
parents: 15
diff changeset
122 public Iterator<TreeNode> find(Query query,
tatsuki
parents: 15
diff changeset
123 String key, String searchValue);
tatsuki
parents: 15
diff changeset
124 \end{verbatim}
tatsuki
parents: 15
diff changeset
125 \end{itembox}
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
126
16
tatsuki
parents: 15
diff changeset
127 \begin{itembox}[l]{QueryInterfaceの定義}
tatsuki
parents: 15
diff changeset
128 \begin{verbatim}
tatsuki
parents: 15
diff changeset
129 public interface Query {
tatsuki
parents: 15
diff changeset
130 boolean condition(TreeNode _node);
tatsuki
parents: 15
diff changeset
131 }
tatsuki
parents: 15
diff changeset
132 \end{verbatim}
tatsuki
parents: 15
diff changeset
133 \end{itembox}
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
134
11
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
135
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
136
17
tatsuki
parents: 16
diff changeset
137 find関数を使用して、maTrixがデータにアクセスする際に使用する関数を全て実装し、ポリシーファイルを用いて許認可判断を行えるようにした。
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
138
11
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
139 \section{まとめ}
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
140 本研究は、実際に使われている組織の中の許認可を判断するアプリケーションmaTrixのデータ構造をどのようにJungle上で表現するかを設計し、実際にmaTrixのデータ構造を格納した。
17
tatsuki
parents: 16
diff changeset
141 maTrixで使われているデータアクセス関数を実装して、XACMLファイルを使用し許認可判断を行えるようにし、Jungle上に実用的な業務アプリケーションを構築した。
11
7736b4d79048 abst update
tatsuki
parents: 9
diff changeset
142 本研究は、PCIホールディングス株式会社と株式会社Symphonyとの共同研究である。
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
143 \thispagestyle{fancy}
7848919edb48 add abst
tatsuki
parents:
diff changeset
144 \begin{thebibliography}{9}
7848919edb48 add abst
tatsuki
parents:
diff changeset
145
7848919edb48 add abst
tatsuki
parents:
diff changeset
146 \bibitem{1}
7848919edb48 add abst
tatsuki
parents:
diff changeset
147 玉城将士 非破壊的木構造を用いた分散CMSの設計と実装
7848919edb48 add abst
tatsuki
parents:
diff changeset
148 \bibitem{2}
7848919edb48 add abst
tatsuki
parents:
diff changeset
149 大城信康 分散Database Jungleに関する研究
7848919edb48 add abst
tatsuki
parents:
diff changeset
150 \bibitem{3}
7848919edb48 add abst
tatsuki
parents:
diff changeset
151 Eric Redmond and Jim R. Wilson 7つのデータベース7つの世界
17
tatsuki
parents: 16
diff changeset
152 \bibitem{4}
tatsuki
parents: 16
diff changeset
153 XACML References and Products
7
7848919edb48 add abst
tatsuki
parents:
diff changeset
154 \end{thebibliography}
7848919edb48 add abst
tatsuki
parents:
diff changeset
155 \end{document}