view Paper/jssst.tex @ 11:522931416348

added destructive_tree.graffle
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Thu, 18 Jul 2013 00:23:59 +0900
parents e4c13f70c552
children fcfd5857d435
line wrap: on
line source

% Sample file for the use of compsoft style file.
%
\documentclass[T]{compsoft}

% Preamble
%
% 「コンピュータソフトウェア」誌に掲載される論文の場合,次で
% 巻数,号数,開始ページ,終了ページを指定する.
%\volNoPp{16}{5}{78}{83}

% ワークショップによる推薦論文の場合,ワークショップ名を指定する.
% \suisen{ワークショップ名}

% 特集の場合,特集のタイトルを与える.
% \tokushu{特集のタイトル}

% 大会論文の場合,\taikai で開催年を指定する.ここで指定した年から
% 大会の回数は計算される.
\taikai{2013}

% ここに,使用するパッケージを列挙する.
\usepackage[dvipdfmx]{graphicx}
\usepackage{listings,jlisting}
\usepackage{url}

% ユーザが定義したマクロなどはここに置く.ただし学会誌のスタイルの
% 再定義は原則として避けること.

\begin{document}

% 論文のタイトル
\title{Data Segment の分散データベースへの応用}

% 著者
% 和文論文の場合,姓と名の間には半角スペースを入れ,
% 複数の著者の間は全角スペースで区切る
%
\author{大城 信康 \and 河野 真治 \and 杉本 優
%
% ここにタイトル英訳 (英文の場合は和訳) を書く.
%
\ejtitle{}
%
% ここに著者英文表記 (英文の場合は和文表記) および
% 所属 (和文および英文) を書く.
% 複数著者の所属はまとめてよい.
%
\shozoku{Nobuyasu OSHIRO, Shinij KONO,Yu SUGIMOTO }{琉球大学大学院理工学研究科情報工学専攻並列信頼研}%
{Dept.Concurrency Reliance Laboratory, Information Engineering Course, Faculty of Engineering Graduate School of Engineering and Science, University of the Ryukyus}
%
% 出典情報は \shutten とすれば出力される.
%\shutten
%
% 受付年月日,記事カテゴリなどは自動的に生成される.
%\uketsuke{1999}{8}{3}
%
% その他,脚注に入れるものがあれば,\note に記述する.
%\note{脚注に入れる内容}
}

%
% 和文アブストラクト
\Jabstract{%

Data Segment のJava上の実装としてAliceを作成してきた。
非破壊的木構造データベースjungleの分散実装を行う際にノード間での通信が必要になる。
Aliceを用いてデータベースノード間の通信を行う利点と欠点について考察する。
}

%
% 英文アブストラクト(大会論文には必要なし)
% \Eabstract{}
%
\maketitle

\section{はじめに}
当研究室では並列・分散プログラムに向いたプログラミングを目指し, データを Data Segment, タスクを Code Segment という単位で扱うプログラミングスタイルの
提案を行なっている.
Data Segment, Code Segment によるプログラミングを提供する実装として, Java による分散ネットワークフレームワーク
Alice を開発している.
Alice はノード間のトポロジー生成を提供しており, Data Segment としてデータの送受信をノード間で行うことができる.

また, 当研究室では非破壊的木構造を用いたデータベースである Jungle の開発も行なっている.
Jungle はデータを非破壊で保持することでスケーラビリティのあるデータベースを目指している.
Jungle はデータの編集を TreeOperationLog という単位で行う.
Alice を使いこの TreeOperationLog を各ノード間で送受信することでデータの分散を行うことができる.

本研究では, Alice と Jungle を用いて分散データベースの実装を行う.
さらに, 例題のアプリケーションとして掲示板を作成し, 評価を行う.

\section{分散ネットワークフレームワーク Alice}
Alice は当研究室で開発している分散管理フレームワークである.
Data Segment とCode Segment による並列・分散プログラミングを提供する.

まず, Data Segment と Code Segment についての説明を行う.

\subsection{Data Segment}
Data Segment は計算に必要なデータになる.
Alice は Data Segment を文字列の Key で管理する.
Key 毎にリストが用意され, put された順番で Data Segment は取り出され計算が行われる.
Data Segment は Data Segment Manager(以下DSM) により管理される.
DSM はノード毎にキーを持つ.
他のノードの DSM にアクセスする場合は Remote DSM 経由で行う.
Alice による分散プログラミングはこの Remote DSM の機能を使用する.

Data Segment Manager は API を提供しており, この API を通じて Data Segment のやりとりが行われる
具体的には以下の API が用意されている.
\begin{itemize}
\item \verb+void put(String key, Value val)+
\item \verb+void update(String key, Value val)+
\item \verb+void peek(Receiver receiver, String key)+
\item \verb+void take(Receiver receiver, String key)+
\end{itemize}

\subsubsection{put}
put は Data Segment をリストへと追加する API である.

\subsubsection{update}
update はリストに入っている Data Segment を更新する API である.


\subsubsection{peek}
peek はリストに入っている Data Segment を取り出す API である.
peek により取り出された Data Segement はリストより削除されない.

\subsubsection{take}
take はリストに入っている Data Segment を取り出す API である.
取り出した Data Segment はリストより削除される.


\subsection{Code Segment}
Code Segment は Data Segment を受け取り計算を行うコードのことを示す.
並列プログラミングにおけるタスクにあたる.
Code Segment は Data Segment は対になっている.
Code Segment は計算に使う Data Segment のキーを登録して,  そのキー
にあたる Data Segment が用意され次第処理が実行される.
Code Segment が処理を開始するのに必要な Data Segment を Input Data Segment という.

Code Segment では Data Segment の生成を行い, put や update により新たにリストに登録することができる.
Code Segment 内で作成し登録される Data Segment は Output Data Segment と呼ばれる.

Code Segment は Input Data Segment と Output Data Segment の API を提供する.


\subsection{MessagePack}
Alice における Data Segment のデータ表現には MessagePack を利用している.
MessagePack はバイナリをベースにしたシリアライズライブラリーである.
また, MessagePack のバイナリにシリアライズできる型のみで構成された Value オブジェクト
が用意されている.
Java の基本的な型はシリアライズすることができる.

Value オブジェクトは自己記述なデータ形式になっている.
独自のクラスでも @Message アノテーションを付けることで Value 型
へと変換することができる.
その時は MessagePack がシリアライズできる型のみをフィールドに入れなければならない.


\section{非破壊的木構造を用いたデータベース Jungle}
Jungle は当研究室で開発している非破壊的木構造データベースである.
一般的なコンテンツマネジメントシステムではブログツールや Wiki・SNS が多く, これらの
ウェブサイトの構造は大体が木構造である.
そのため, Jungle ではデータ構造として木構造を採用した.

ここではまず破壊的木構造と, 非破壊的木構造の説明をし, Jungle の特徴について述べる.

\subsection{破壊的木構造}
破壊的木構造の編集は, 木構造で保持しているデータを直接書き換えることで行う.
図\ref{fig:destractive}はノード5をノード100へ破壊的な書き換えを表している.


\begin{figure}[htpb]
  \begin{center}
    \includegraphics[scale=0.50]{figures/destructive_tree.pdf}
    \caption{破壊的木構造}
    \label{fig:destractive}
  \end{center}
\end{figure}





\subsection{非破壊的木構造木構造}


\subsection{Jungleの特徴}


\section{その3}

\section{その4}

\section{まとめ}

\nocite{fix200609}
\bibliographystyle{junsrt}
\bibliography{reference}
\end{document}