changeset 36:65bd1b1250e9

Modified chapter2
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 28 Jan 2014 17:59:08 +0900
parents 2849dc0ea23a
children 7c6b89ae1ccf
files paper/chapter2.tex paper/figures/mongodb_sharding.pdf paper/graffle/mongodb_sharding.graffle paper/master_paper.pdf
diffstat 4 files changed, 54 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter2.tex	Tue Jan 28 01:49:44 2014 +0900
+++ b/paper/chapter2.tex	Tue Jan 28 17:59:08 2014 +0900
@@ -202,8 +202,7 @@
 マージは, 相手のリポジトリのデータ編集履歴を受け取り, ローカルにあるリポジトリの編集と合わせる作業である.
 データ衝突に対して Jungle はアプリケーションレベルでのマージを実装して貰うことで解決をはかる.
 
-
-\newpage
+以下にマージが必要な場合とそうでない場合のデータ編集についての図を示す(図\ref{fig:tree_conflict1},\ref{fig:tree_conflict2},\ref{fig:tree_conflict3}).
 
 \begin{figure}[htpb]
   \begin{center}
@@ -217,7 +216,7 @@
   \begin{center}
     \includegraphics[scale=0.48]{figures/tree_conflict3.pdf}
     \caption{自然に衝突を解決できるデータ編集}
-    \label{fig:tree_conflict1}
+    \label{fig:tree_conflict2}
   \end{center}
 \end{figure}
 
@@ -225,11 +224,10 @@
   \begin{center}
     \includegraphics[scale=0.48]{figures/tree_conflict2.pdf}
     \caption{衝突が発生するデータ編集}
-    \label{fig:tree_conflict2}
+    \label{fig:tree_conflict3}
   \end{center}
 \end{figure}
 
-\newpage
 
 \section{ネットワークトポロジーの形成}
 分散管理システムを参考に Jungle でもそれぞれのデータベースが独立に
@@ -280,8 +278,10 @@
   \end{minipage}
 \end{figure}
 
+
 そこで当研究室で開発を行っている並列分散フレームワークである Alice を使用する.
-Alice はトポロジー形成とネットワーク上でのデータ送受信のための機能を提供する.
+Alice はユーザが望んだマシンへの接続や必要なデータへのアクセスを行う機構と, 接続トポロジー
+形成機能を提供している.
 
 % トポロジー形成の説明をする. 重要さなども。
 % トポロジーの形成は容易ではない.
@@ -292,19 +292,40 @@
 
 \section{並列分散フレームワークAlice}
 Alice は当研究室で開発している並列分散フレームワークである.
-Alice はデータを DataSegment, コードを CodeSegment という単位で扱うプログラミングを提供している.
-DataSegment として扱われるデータは
+Alice はデータを DataSegment, タスクを CodeSegment という単位で扱うプログラミングを提供している.
+コードの部分となる CodeSegment は, 計算に必要なデータである DataSegment が揃い次第実行が行われる(図\ref{fig:cs_ds}).
+CodeSegment の結果により出力される新たなデータでは, 別の CodeSegment が実行されるための DataSegment となる.
+DataSegment と CodeSegment の組み合わせにより並列・分散プログラミングの依存関係が表される.
 
-% DataSegment, CodeSegment はなしにしたほうがいいかもしれない. Alice が論文の主題じゃないから
-% それとこの2つの説明をするとしたら結構な量になる
+\begin{figure}[htpb]
+  \begin{center}
+    \includegraphics[scale=0.70]{figures/cs_ds.pdf}
+    \caption{DataSegment と CodeSegment によるプログラムの流れ}
+    \label{fig:cs_ds}
+  \end{center}
+\end{figure}
+
+\subsection{MessagePack によるシリアライズ}
+Alice では DataSegment のデータ表現に MessagePack(http://msgpack.org) を利用している.
+MessagePack はオブジェクトをバイナリへと変換させるシリアライズライブラリである.
+Alice によりネットワークを介してデータにアクセスするときは, そのデータが MessagePack でシリアライズが
+行えることが条件である.
 
 
-\section{データの永続性}
-% TreeOperationLog(ログ)をシリアライズ可能な形にしてデータをおくること
-% シリアライズできる形にしたものをそのままHDに書き出すだけでログの永続性は行える
+
+\section{Jungle のデータ分散}
+Alice によりトポロジーの形成とデータアクセスの機構が提供された.
+後はデータ分散の為にどのデータをネットワークに流すのか決めなければならない.
+そこで選ばれたのが TreeOperationLog である.
+TreeOperationLog はデータ編集の履歴になる.
+どの Node にどのような操作をしたのかという情報が入っている.
+この TreeOperationLog を Alice を使って他サーバノードに送り, データの編集をしてもらうことで
+同じデータを持つことが可能となる.
+Alice を用いるため, この TreeOperationLog は MessagePack によりシリアライズ可能な形にすることが
+必要である.
 
 
-\section{CAP 定理と Jungle}
+\subsection{CAP 定理と Jungle}
 ここまでの Jungle の設計を踏まえて, CAP 定理における Jungle の立ち位置を考える.
 分散管理バージョンのように独立したリポジトリもち, それぞれが独自の変更を加えることが
 行えることで一貫性はゆるい.
@@ -324,4 +345,17 @@
 
 
 
+\section{Jungle ログによるデータの永続性}
+% TreeOperationLog(ログ)をシリアライズ可能な形にしてデータをおくること
+% シリアライズできる形にしたものをそのままHDに書き出すだけでログの永続性は行える
+Jungle は非破壊でさらにオンメモリにデータを保持するため, 使用するメモリの容量が大きくなる.
+そのため, ハードディスクに書き出すし, 一定の区切りで保持している過去のデータをメモリ上から掃除しなければならない.
+そこで, ログによるデータの永続性の実装を行う.
+ここでログをどのようなデータ表現でハードディスクへと書きだすかという問題が発生するが, これは Alice を使うことで
+解決している.
+Alice を用いるため MessagePack によりシリアライズ可能な TreeOperationLog ができる.
+このシリアライズ可能な TreeOperationLog をそのままハードディスクへ書き込むこととでログの永続性ができる.
 
+
+
+
Binary file paper/figures/mongodb_sharding.pdf has changed
--- a/paper/graffle/mongodb_sharding.graffle	Tue Jan 28 01:49:44 2014 +0900
+++ b/paper/graffle/mongodb_sharding.graffle	Tue Jan 28 17:59:08 2014 +0900
@@ -111,7 +111,7 @@
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
 
 \f0\fs24 \cf0 Node 1 \
-\'95\'a1\'90\'bb}</string>
+\'82\'cc\'95\'a1\'90\'bb}</string>
 			</dict>
 		</dict>
 		<dict>
@@ -281,8 +281,8 @@
 			<integer>18</integer>
 			<key>Points</key>
 			<array>
-				<string>{309.27766479496364, 154.34473225221419}</string>
-				<string>{384.19325946411072, 225.65530972810561}</string>
+				<string>{309.27893450562811, 154.34472448532927}</string>
+				<string>{384.19771954251536, 225.65527860353771}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -351,8 +351,8 @@
 			<integer>15</integer>
 			<key>Points</key>
 			<array>
-				<string>{249.72233520503642, 154.34473225221419}</string>
-				<string>{174.80674053588936, 225.65530972810564}</string>
+				<string>{249.72106549437194, 154.34472448532927}</string>
+				<string>{174.80228045748476, 225.65527860353774}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -553,7 +553,7 @@
 	<key>MasterSheets</key>
 	<array/>
 	<key>ModificationDate</key>
-	<string>2014-01-26 09:13:49 +0000</string>
+	<string>2014-01-28 07:08:44 +0000</string>
 	<key>Modifier</key>
 	<string>Oshiro Nobuyasu</string>
 	<key>NotesVisible</key>
Binary file paper/master_paper.pdf has changed