6
|
1 \chapter{分散木構造データベースJungle}
|
4
|
2 Jungleとは、当研究室で開発を行っている、スケーラビリティのある、世の中の知識構造を煩雑なデータ設計を行うこと無く格納できることを目標としたデータベースである。
|
|
3 本章では、Jungleの基本的な特徴についての解説を行う。
|
3
|
4
|
0
|
5 \label{chap:concept}
|
2
|
6
|
4
|
7 \section{Jungleのデータ構造}
|
|
8 研究目的でも述べたが、我々が扱う知識は主に木構造である。
|
18
|
9 Jungleはそれらの知識を直接格納するため、データ形式は非破壊的木構造を採用している。
|
4
|
10 はじめに、非破壊的木構造と通常の破壊的木構造の違いについて説明を行う。
|
2
|
11
|
18
|
12 通常の破壊的木構造は、データの編集を行う際に、データを上書き更新する(図\ref{fig:Des})ため、編集を行っている間ずっと木にロックをかける必要がある。
|
|
13 また、閲覧者がいる場合検索途中にデータが変わることを避けるために、データの検索が終わるまで書き換えを待つ必要がある。
|
2
|
14 しかし、これではロックによりスケーラビリティが損なわれてしまう。
|
|
15
|
|
16 \begin{figure}[h]
|
|
17 \begin{center}
|
|
18 \includegraphics[height = 5cm ,bb=0 0 404 207]{fig/destructive_tree.pdf}
|
|
19 \caption{破壊的木構造の編集}
|
|
20 \label{fig:Des}
|
|
21 \end{center}
|
|
22 \end{figure}
|
|
23
|
|
24 \clearpage
|
|
25
|
|
26 それに比べ非破壊的木構造は、一度生成した木を上書きすることはない。
|
3
|
27 データの編集は、ルートから編集を行うノードまでコピーを行い新しく木構造を構築することで行う(図\ref{fig:nonDes})。
|
2
|
28
|
|
29 \begin{figure}[h]
|
|
30 \begin{center}
|
18
|
31 \includegraphics[height = 5cm , bb=0 0 459 207]{fig/non_destructive_tree.pdf}
|
2
|
32 \caption{非破壊的木構造の編集}
|
|
33 \label{fig:nonDes}
|
|
34 \end{center}
|
|
35 \end{figure}
|
|
36
|
|
37 非破壊的木構造においてデータのロックが必要になる部分は、木のコピーを作った後に、ルートノードを更新するときだけである。
|
3
|
38 また、データ編集を行っている間ロックが必要な破壊的木構造に比べ、非破壊的木構造は検索中の木が変更されないことが保証されいているため、編集中においてもデータの読み込みが可能である。(図\ref{fig:desMerit})
|
11
|
39 そのため、破壊的木構造に比べてスケールアウトがしやすくなっている。
|
2
|
40 \begin{figure}[h]
|
|
41 \begin{center}
|
|
42 \includegraphics[height = 7cm ,bb=0 0 350 301]{fig/non_destructive_merit.pdf}
|
|
43 \caption{非破壊的木構造の編集}
|
|
44 \label{fig:desMerit}
|
|
45 \end{center}
|
|
46 \end{figure}
|
3
|
47
|
18
|
48 また、Jungleは過去のversionのTreeを全て保持しているため、いつでもアクセスすることが可能である。
|
3
|
49
|
4
|
50 \section{分散機能}
|
|
51 Jungleの分散機能は、当研究室で開発を行っている並列分散フレームワークであるAliceを使用している。
|
|
52 Aliceはユーザーが望んだマシンへの接続や、必要なデータへのアクセスを行う機構等、ネットワークトポロジー形成機能を提
|
|
53 供している。
|
|
54
|
|
55 Jungleは、ネットワークトポロジーを構築する際に、木構造を想定したネットワークトポロジーを形成しサーバー同士を接続することで通信を行っている。
|
|
56 木構造なら、一度RootNodeまでデータを伝搬させることで整合性を取ることが出来る(図\ref{fig:topologu})からである。
|
3
|
57 データの伝搬中に衝突が発生した場合、Mergeを行い結果を改めて伝搬すれば良い。
|
2
|
58
|
3
|
59 \begin{figure}[h]
|
|
60 \begin{center}
|
|
61 \includegraphics[bb=0 0 329 263]{fig/network_topology_tree.pdf}
|
4
|
62 \caption{Jungle-networkのトポロジの形成例とデータの伝搬順序}
|
3
|
63 \label{fig:topologu}
|
|
64 \end{center}
|
|
65 \end{figure}
|
|
66
|
|
67
|