view paper/chapter3.tex @ 17:dfa2fd4658b2

Modified abstract
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 21 Jan 2014 17:15:09 +0900
parents e16dad3b80fc
children fc14b1876141
line wrap: on
line source

\chapter{Jungleの分散実装}
\section{TreeOperationLogを用いての分散データベースの実装}
Jungle でデータ扱うと TreeOperationLog として残ることは述べた.
この TreeOperationLog を他のサーバへと送り, Jungle の編集を行って
貰うことでデータの分散を行うことができる.
ここで問題になることはネットワークトポロジーの形成方法であった.

Jungle で使用するネットワークトポロジーはツリー型を考えている.
しかし, リング型といった他のネットワークトポロジーによる実装に関しても試す余地はある.
自由にネットワークトポロジーの形成を行うことができる必要があった.

そこで当研究室で開発を行っている並列分散フレームワークである Alice を使用することにした.
Alice により提供されるネットワークトポロジー形成を用いて TreeOperationLog を各サーバノードへ
配ることで並列分散フレームワークの実装を行う.

% トポロジー形成の説明をする. 重要さなども。
% トポロジーの形成は容易ではない.
% Alice が必要な機能を提供してくれることを述べる
% Alice はトポロジー形成の機能を提供している
% トポロジー間でのデータの受け渡す機能も提供している
\begin{figure}[htpb]
  \begin{minipage}{0.5\hsize}
  \begin{center}
    \includegraphics[scale=0.7]{figures/network_topology_ring.pdf}
    \caption{リング型のNetwork Topology}
    \label{fig:topology_ring}
  \end{center}
  \end{minipage}
  \begin{minipage}{0.5\hsize}
  \begin{center}
    \includegraphics[scale=0.7]{figures/network_topology_tree.pdf}
    \caption{ツリー型のNetwork Topology}
    \label{fig:topology_tree}
  \end{center}
  \end{minipage}
\end{figure}

\section{並列分散フレームワークAlice}
Alice は当研究室で開発している並列分散フレームワークである.
Alice はデータを DataSegment, コードを CodeSegment という単位で扱うプログラミングを提供している.
DataSegment として扱われるデータは



% DataSegment, CodeSegment はなしにしたほうがいいかもしれない. Alice が論文の主題じゃないから
% それとこの2つの説明をするとしたら結構な量になる

\section{Aliceによるトポロジーの形成}
Alice はサーバノードによるネットワークトポロジー形成の機能を持つ.
トポロジーの内容を dot ファイルに記述される.
以下に, サーバノードの数が5で, 2分木ツリー構造を形成する dot ファイル
の例を示す.
\begin{verbatim}
digraph test {
  node0 -> node1 [label="child1"]
  node0 -> node2 [label="child2"]
  node1 -> node0 [label="parent"]
  node1 -> node3 [label="child1"]
  node1 -> node4 [label="child2"]
  node2 -> node0 [label="parent"]
  node3 -> node1 [label="parent"]
  node4 -> node1 [label="parent"]
}
\end{verbatim}

トポロジーマネージャーは dot ファイルを読み込み, 接続要求をしてくるサーバノード
に, どのサーバノードにつなげればよいかを教える.
サーバノードには番号が割り振られ, 接続要求が先にきたもの程若い番号が割り当てられる.
これにより形成されるトポロジーを図\ref{fig:tree_topology}に示す.

\begin{figure}[htpb]
  \begin{center}
    \includegraphics[scale=0.70]{figures/tree_topology.pdf}
    \caption{Alice によるネットワークトポロジー形成}
    \label{fig:tree_topology}
  \end{center}
\end{figure}

矢印に書かれている文字列は, 相手のデータにアクセスするキーを示す.
"child1", "child2", "parent" というキーを使うことで別のサーバノードにあるデータを取得することができる.
%子共となるノードは "parent" キーにより親の DSM (Remote DSM) にアクセスすることができる.
%また, 親も子供となるノードの DSM に対して "child1" や "child2" キーによりアクセスすることが可能となる.

\subsection{トポロジー用 dot ファイル形成スクリプト}
Alice ではトポロジー形成用スクリプトが用意されている.
ノードの数と子供の数を指定するだけで dot ファイルの作成が行える.
また, ツリーに限らずリングやメッシュといったトポロジーの形成も行うことができる.

% MessagePackの説明もここに簡単に入れたほうがいいかも.

\section{Aliceを用いての分散実装}
Alice によりトポロジーを形成


\section{ログのシリアライズ}

ログのシリアライズについて述べる.
シリアライズとは, データをネットワーク上に流しても良い形式に変換することである.


\section{Jungleの永続性の実装}
\subsection{マージの実装}