view chapter8.tex @ 18:96fc201c4e8c

add bibi
author tatsuki
date Wed, 18 Feb 2015 12:24:03 +0900
parents 3ac8c8d97fea
children 4a3f413c4ec6
line wrap: on
line source

\chapter{結論}
\label{chap:poordirection}
\section{まとめ}
本研究では、初めに当研究室が開発している分散データベースJungleで使われている非破壊的木構造について述べ、破壊的木構造に比べてロックが少ないというメリットがあること、当研究室で開発している並列分散フレームワークAliceを用いて分散実装を行っていることを述べた。

次に、実際にJungleの上に構築する、組織の中の許認可管理を行うアプリケーションであるmaTrixが、どのようなデータ構造を保持し、申請の許認可を行っているかの説明を行い、Jungle上でmaTrixをどのように実装するかの説明を行った。

maTrixを表現する上で、Jungleに必要な機能があったため機能拡張を行った。Java8の新機能であるlambda式を用いてTreeに対して特定の値の検索を行えるようにし、functionalJavaのTreeMapを用いてIndexを実装することで検索の高速化に成功した。また、全てのVersionのTreeが持っている固有のrevisionIdを使用し、過去のTreeに対するアクセスも可能にした。

さらに、saxを用いてXMLReaderを実装したことでJungleにXML形式で記述されたデータを格納できるようになり、maTrixが書き出したデータを取り込めるようになった。
また、XACMLInterpreterを実装することでポリシーファイルを読み込み、実際にJungleを用いて許認可判断を行えるようになりJungle上で許認可判断を行えるようになった。

最後に、検索APIの性能評価を行った結果、Jungleの検索はIndexを用いることで実用的な速度が出ることを確認した。

\section{今後の課題}
\subsection{push/pop}
Jungleの新しい子のInsert処理の計算量は木の深さに依存するため、最悪計算量はO(n)となる。
しかし、Treeの根の部分に子を追加するpush/popを実装することでInsertの計算量が、非破壊の性質を維持しながらO(1)で行えるようになる

\subsection{indexのIncrementalUpdate}
今JungleのIndexは木の更新が行われる度に新しく作りなおされているため、メモリの消費が大きい
しかし新しく作り直さず、木の更新時に差分更新を行うことでメモリの消費を抑えて各versionのTreeにIndexを保持することが可能になる。

\subsection{differencialList}
Treeの葉部分に、更新可能な未定義ノードを付加しておくことで、ルートまでのコピーを行わずにノードの追加を行えるようになるので、更新処理が短くなる。

\subsection{exponential backoff}
Jungleは書き込みが競合し、書き込みに失敗した場合すぐに再度書き込みを行うため、書き込みが集中した際失敗を繰り返すことがある。
しかし、書き込みが失敗する度に一定時間待機してから再度書き込みを行うことで、競合を避ける事が出来る。