view midterm.tex @ 7:cf949ad77abe default tip

version-6
author suruga
date Fri, 27 Oct 2017 16:53:05 +0900
parents c4d0b3739d1f
children
line wrap: on
line source

\documentclass[twocolumn,twoside,9.5pt]{jarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{picins}
\usepackage{fancyhdr}
\usepackage{here}
%\pagestyle{fancy}
\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 中間発表予稿}
\rhead{}
\cfoot{}

\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
\setlength{\headheight}{0mm}
\setlength{\headsep}{5mm}
\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
\setlength{\textwidth}{181mm}
\setlength{\textheight}{261mm}
\setlength{\footskip}{0mm}
\pagestyle{empty}

\input{dummy.tex}
\begin{document}
\title{分散データベースJungleの評価}
\author{145762E 氏名 仲松栞 {}{} 指導教員 : 河野 真治}
\date{}
\maketitle
\thispagestyle{fancy} 

\section{研究背景}
スマートフォンやタブレット端末の普及にともない、年々Webサービスの利用者は増加した一方で、データ量が増大し、サーバ側への負荷も増加している。
これを解決するため、Webサービスには、よりシステムの処理能力を拡張する性質である、スケーラビリティが求められてきている。

スケーラビリティとは、高性能のマシンを用意したり、複数のマシンに処理を分散させたりすることで、システムの処理能力を向上させる性能を指す。本実験で指すスケーラビリティとは、後者の方である。Webサービスにスケーラビリティを付与する方法の1つに、データベースにスケーラビリティを持たせる事が考えられる。

そこで、当研究室ではスケーラビリティを持つデータベースとして木構造を持つ分散データベースJungleを開発している。方法としては、分散環境上で複数のデータベースJungleを起動することで、処理を分散させる。

これまでに行われた分散環境上でのJungleの性能を検証する実験[2]では、使用するテストプログラムのフロントエンドにWebサーバーJettyが使用されており、純粋なJungleの性能は測定できていなかった。今回は、新たに改良されたJungleの性能を、Webサーバーを取り除いたTestプログラムを用いて測定することを目的とする。

\section{分散データベースJungle}
Jungleは、当研究室で開発を行っている木構造の分散データベースで、Javaを用いて実装されている。

Jungleは名前付きの複数の木の集合からなり、木は複数のノードの集合でできている。ノードは自身の子のリストと属性名、属性値を持ち、データベースのレコードに相応する。通常のレコードと異なるのは、ノードに子供となる複数のノードが付くところである。

通常のRDBと異なり、Jungleは木構造をそのまま読み込むことができる。例えば、XMLやJsonで記述された構造を、データベースを設計することなく読み込むことが可能である。また、この木を、そのままデータベースとして使用することも可能である。しかし、木の変更の手間は木の構造に依存する。特に非破壊木構造[3]を採用しているJungleでは、木構造の変更の手間はO(1)からO(n)となりえる。つまり、アプリケーションに合わせて木を設計しない限り、十分な性能を出すことはできない。逆に、正しい木の設計を行えば高速な処理が可能である。

Jungleはデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとしてTreeOperationLog[2]に残している。Jungleの分散ノード間の通信は木の変更のTreeOperationLogを交換することによって、分散データベースを構成するよう設計されている。

\section{分散フレームワークAliceによる分散環境の構築}
本研究では、分散環境上でのJungleの性能を確認する為、VM32台分のサーバーノードを用意し、それぞれでJungleを起動することで、Jungle間で通信をする環境をつくる。
Jungleを起動したサーバーノード間の通信部分を、当研究室で開発している並列分散フレームワークAlice[1]にて再現する。

Aliceには、ネットワークのトポロジーを構成するTopologyManager[2]という機能が備わっている。TopologyManagerに参加表明をしたサーバーノードに順番に、接続先のサーバーノードのIPアドレス、ポート番号、接続名を送り、受け取ったサーバーノードはそれらに従って接続する。
今回、TopologyManagerはJungleをのせたVM32台分のサーバーノードを、木構造を形成するように采配する(図\ref{fig:topologymanager} )。

トポロジー構成後、Jungle間の通信でのデータ形式にはTreeOperationLogを利用する。TreeOperationLogには、ノードの編集の履歴などの情報が入っている。TreeOperationLogをAliceによって他のJungleへ送ることで、送信元のJungleと同じ編集を行う。こうして、Jungle間でのデータの同期を可能にしている。
\begin{figure}[H]
    \centering
    \includegraphics[width=70mm]{pic/topologymanager.pdf}
    \caption{AliceによるJungleの木構造トポロジーの形成}
    \label{fig:topologymanager}
\end{figure}
\section{TORQUE Resource Manager}
分散環境上でのJungleの性能を測定するにあたり、VM32台にJungleを起動させた後、それぞれでデータを書き込むプログラムを動作させる。プログラムを起動する順番やタイミングは、TORQUE Resource Manager[1]というジョブスケジューラーによって管理する。

TORQUE Resource Manager は、ジョブを管理・投下・実行する3つのデーモンで構成されており、
ジョブの管理・投下を担うデーモンが稼働しているヘッダーノードから、ジョブの実行を担うデーモンが稼働している計算ノードへジョブが投下される(図\ref{fig:torque} )。
  \begin{figure}[ht]
    \begin{center}
        \includegraphics[width=70mm]{./pic/torque.pdf}
    \end{center}
        \caption{TORQUEの構成}
         \label{fig:torque}
\end{figure}

ユーザーはジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。その際に、利用したいマシン数やCPUコア数を指定する。TORQUEは、ジョブに必要なマシンが揃い次第、受け取ったジョブを実行する。
\section{テストプログラム}
これまでの分散環境上でのJungleの性能を測定する実験で使われたテストプログラムは、フロントエンドにJettyというWebサーバーが使われていた。
しかし、Webサーバーが仲介した測定結果となってしまい、純粋なJungleの性能を測定できないという問題がある。
そこで、Webサーバーを取り除き、これまでの研究により純粋にJungleの性能を測定するテストプログラムを作成する。

テストプログラムは、木構造における子ノードに、データを複数書き込む機能を提供する。
末端の複数の子ノードにデータをそれぞれ書き込み、最終的にrootノードへデータをmergeしていく(図\ref{fig:logupdatetest} )。

測定範囲は、
\begin{itemize}
 \item 末端ノードからrootノードへデータが到達する時間
 \item 末端Jungleからrootノードを介して別の末端ノードへデータが到達する時間
\end{itemize}
の2点を計測する予定である。
\begin{figure}[H]
    \centering
    \includegraphics[width=70mm]{pic/logupdatetest.pdf}
    \caption{TestプログラムによるJungleの性能測定}
    \label{fig:logupdatetest}
\end{figure}

\section{今後の作業}
今後の方針として、本研究室で開発している並列分散フレームワークであるAlice[1]とTORQUE Resource Manager[1]を用いて、分散環境上でのJungleの性能を測定する。
測定後は、結果をふまえ、Jungleの性能を向上させる為のmergeアルゴリズム等を考案・実装し、スケーラビリティを持つ実用的な分散データベースの開発を目指す。

\begin{thebibliography}{9}
    \bibitem{1}
        杉本 優 : 分散フレームワーク Alice上の Meta Computation と応用,
    \bibitem{2}
        大城 信康 : 分散 Database Jungle に関する研究,
    \bibitem{3}    
        金川 竜己 : 非破壊的木構造データベース Jungle とその評価
    \bibitem{4}
        大城 信康, 杉本 優, 河野真治 : Data Segment の分散データベースへの応用, 日本ソフトウェア科学会(2013).
   
\end{thebibliography}
\end{document}