view midterm.tex @ 2:7715906b998d

version_2
author suruga
date Thu, 26 Oct 2017 19:48:08 +0900
parents 45bc92a01821
children 700708affbc3
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の性能を検証する実験では、使用するTestプログラムのフロントエンドにWebサーバーJettyが使用されており、純粋なJungleの性能は測定できていなかった。今回は、新たに改良されたJungleの性能を、Webサーバーを取り除いたTestプログラムを用いて測定することを目的とする。

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

Jungleはデータをオンメモリで保持している。しかし、オンメモリのままでは電源が落ちた際にデータが失われてしまうという問題がある。
そこで、データの復旧を行えるよう、Jungleではログによって、バージョンごとにデータを保持している。
Jungleの分散ノード間の通信は木の変更のログを交換することによって、分散データベースを構成するよう設計されている。
持続性のある分散ノードを用いることでJungleの持続性を保証することができる。

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

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

Jungleは基本的にオンメモリで使用することを考えており、一度、木のルートを取得すれば、その上で木構造として自由にアクセスして良い。

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

Aliceとは当研究室で開発している並列分散フレームワークである。Aliceにより、トポロジーを構成する機能とデータアクセスの機構が提供される。

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

\begin{figure}[H]
    \centering
    \includegraphics[width=70mm]{pic/topologymanager.pdf}
    \caption{AliceによるJungleの木構造トポロジーの形成}
    \label{fig:topologymanager}
\end{figure}

AliceによってJungleのネットワークを木構造のトポロジーで形成した後に、Jungle間でのデータの通信部分を再現しなければならない。そこで、TreeOperationLog[2]を利用する。TreeOperationLogには、ノードの編集の履歴などの情報が入っている。TreeOperationLogをAliceによって他のJungleへ送ることで、送信元のJungleと同じ編集を送信先のJungleで行う。こうして、Jungle間でのデータの同期を可能にしている。
\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{Testプログラム}
これまでの分散環境上でのJungleの性能を測定する実験で使われたTestプログラムは、フロントエンドにJettyというWebサーバーが使われていた。
このままでは、Webサーバーを仲介したJungleの性能の測定結果になってしまう。
今回、Webサーバーを取り除き、これまでの研究により純粋にJungleの性能を測定するTestプログラムを作成する。

Testプログラムは、木構造における子ノードに、データを複数書き込む機能を提供する。
末端の複数の子ノードにデータをそれぞれ書き込み、最終的にrootノードへデータをmergeしていく(図\ref{fig:logupdatetest} )。
\begin{figure}[H]
    \centering
    \includegraphics[width=70mm]{pic/logupdatetest.pdf}
    \caption{LogupdateTestによる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}