# HG changeset patch # User Nobuyasu Oshiro # Date 1391292750 -32400 # Node ID 4e8bfd65768f72b06d089d0ec9556d03511f211a # Parent 26bfd74c4c415a3fdcd138db4868e16594204a93 Fixed diff -r 26bfd74c4c41 -r 4e8bfd65768f paper/chapter1.tex --- a/paper/chapter1.tex Sat Feb 01 22:49:54 2014 +0900 +++ b/paper/chapter1.tex Sun Feb 02 07:12:30 2014 +0900 @@ -34,7 +34,7 @@ \newpage \section{CAP 定理} -分散データシステムにおいて次の3つを同時に保証することはできない +分散データシステムにおいて次の3つを同時に保証することはできない. \begin{itemize} \item 一貫性(Consistency) 全てのノードはクエリが同じならば同じデータを返す. diff -r 26bfd74c4c41 -r 4e8bfd65768f paper/chapter2.tex --- a/paper/chapter2.tex Sat Feb 01 22:49:54 2014 +0900 +++ b/paper/chapter2.tex Sun Feb 02 07:12:30 2014 +0900 @@ -97,12 +97,12 @@ \section{Jungle におけるデータへのアクセス} Jungleにおいてのデータアクセス手段について述べる. -Jungleではそれぞれの Node が attribute として保持する. -attributeはKey-Valueによりデータを保持する. +JungleではそれぞれのNodeがattributeを保持する. +attributeはKey-Valueによりデータを保持される. KeyはString型でValueはByteBufferを使用している. Jungleでデータへのアクセスは, このNodeへのアクセスをさす. Node へのアクセスは, 木の名前と Node を指すパスにより行える. -このパスは NodePath と呼ばれる(図\ref{fig:nodepath}). +このパスはNodePathと呼ばれる(図\ref{fig:nodepath}). \begin{figure}[htpb] \begin{center} @@ -163,7 +163,7 @@ [PUT_ATTRIBUTE:<-1,0>:key:mes,value:hello] [PUT_ATTRIBUTE:<-1,0>:key:timestamp,value:0] \end{lstlisting} -このログは今回の研究で使用したベンチマーク用掲示板プログラムにおける書き込みにより行われるログである(図\ref{fig:treeoperationlog}). +このログはルートノードに対し子ノードを追加し, 追加した子ノードに attribute を3つ追加する際に図れるログである(図\ref{fig:treeoperationlog}). 大文字の英字は実行した NodeOperation の種類を表す. \verb|<>| により囲まれている数字は NodePath を示す. @@ -178,7 +178,7 @@ \end{center} \end{figure} -図\ref{fig:treeoperationlog}の説明を行う. +ログの動作を表している図\ref{fig:treeoperationlog}の説明を行う. まず, \verb|APPEND_CHILD:<-1>:pos:0|によりRoot Nodeの0番目の子供となるNodeの追加を行う. 次に, 追加を行ったNodeに対して\verb|PUT_ATTRIBUTE<-1,0>| により attribute の情報を持たせていく. attributeの内容に作者の情報を表すauther, メッセージの内容を表すmes, そしてタイムスタンプ diff -r 26bfd74c4c41 -r 4e8bfd65768f paper/chapter3.tex --- a/paper/chapter3.tex Sat Feb 01 22:49:54 2014 +0900 +++ b/paper/chapter3.tex Sun Feb 02 07:12:30 2014 +0900 @@ -3,7 +3,10 @@ 非破壊的木構造によりデータを破壊せずに保持するJungleは, 過去のデータ もみることができる. また, データ編集をした際には, TreeOperationLogとして履歴が残る. -これらを踏まえ, 本章ではJungleの分散データベースとしての設計を行う. +Jungleが分散設計をするにあたり, 参考にしているシステムとして分散バージョン +管理システムがある. +本章では分散バージョン管理システムとは何かを説明し, Jungleの分散データベース +の設計について述べる. \section{分散バージョン管理システムによるデータの分散} Jungleの分散設計はGitやMercurial といった分散バージョン管理システム(以下, 分散管理システム)の機能を参考に作る. diff -r 26bfd74c4c41 -r 4e8bfd65768f paper/chapter4.tex --- a/paper/chapter4.tex Sat Feb 01 22:49:54 2014 +0900 +++ b/paper/chapter4.tex Sun Feb 02 07:12:30 2014 +0900 @@ -250,7 +250,7 @@ \subsection{TreeOperationLogのシリアライズ} -TreeOperationLogをシリアライズ可能な形にするにあたって気をつけなければならないのが, フィールドを +ログの実体であるTreeOperationLogをシリアライズ可能な形にするにあたって気をつけなければならないのが, フィールドを シリアライズ可能にする部分である. TreeOperationLogはTreeOperationをいくつも保持し, TreeOperationはNodePathとNodeOperationを保持するものであった. そのため, これら全てをシリアライズ可能な形にしなければならない. @@ -259,7 +259,7 @@ MessagePackはListを扱うこともできるため, TreeOperationLogで継承されていたIterableの挙動もListを使うことで 実装を行うことができた. -\subsection{ログに対する情報の追加} +\section{ログに対する情報の追加} TreeOperationLogをシリアライズ可能な形にした後, 問題が発生した. それは, TreeOperationLog自体は木の名前を保持していないというものである. そのため, TreeOperationLogだけを受け取っても, そのログがどの木に対して行われるのか @@ -272,7 +272,7 @@ % 木がなければそのばでつくるようにした \subsection{NetworkTreeOperationLogの実装} -NetworkTreeOperationLogの実装の一部を以下(\ref{fig:netlog})に示す. +NetworkTreeOperationLogの実装の一部を以下(\ref{src:netlog})に示す. \begin{lstlisting}[frame=lrbt,label=src:netlog,caption=NetworkTreeOperationが持つフィールド,numbers=left] @Message public class NetworkTreeOperationLog implements TreeOperationLog @@ -416,7 +416,7 @@ \newpage \section{永続性の実装} 次は, ログの書き出しによる永続性の実装について述べる. -第3章でJungleはWriterいう永続性実装のための機能が元々用意されていることを述べた. +第3章でJungleはWriterという永続性実装のための機能が元々用意されていることを述べた. 永続性で考えなければならないことは, どのようなデータをどんなデータ表現で書き込むかということである. 今回の実装ではログであるTreeOperationLogを書き出す. また, TreeOperationLogの情報を保持しつつ, MessagePackでシリアライズできるクラスとして diff -r 26bfd74c4c41 -r 4e8bfd65768f paper/chapter5.tex --- a/paper/chapter5.tex Sat Feb 01 22:49:54 2014 +0900 +++ b/paper/chapter5.tex Sun Feb 02 07:12:30 2014 +0900 @@ -242,7 +242,7 @@ %これはクライアントの数が増加してもサーバノードの数も増加するため, サーバノード一台に対する %HTTPからの負荷が変わらないためだと考えられる. 特に読み込みに関してはConsistentcy Level QUORUMの場合と比べると3倍以上離れている場合もある. -実験1に比べてJungleとCassandraの差が開いているのはCassandraのConsisteyncy Level +実験1に比べてJungleとCassandraの差が開いているのはCassandraのConsistency Level がQUORUMに設定されていることが要因の1つとしてあげられる. 今回CassandraのReplication factorは5と設定している. そのため, Consistency LevelがQUORUMの場合は, 書き込みは3つのノードに書き込まれたことを確認 diff -r 26bfd74c4c41 -r 4e8bfd65768f paper/master_paper.pdf Binary file paper/master_paper.pdf has changed