# HG changeset patch # User Nobuyasu Oshiro # Date 1374211200 -32400 # Node ID daaa1277ab2c99d113208371f8475da76bee9030 # Parent fa37607c0c1c3e225f1e6d8403871b4fb2728d48 fix spell miss diff -r fa37607c0c1c -r daaa1277ab2c Paper/jssst.tex --- a/Paper/jssst.tex Fri Jul 19 14:06:45 2013 +0900 +++ b/Paper/jssst.tex Fri Jul 19 14:20:00 2013 +0900 @@ -182,9 +182,9 @@ \end{figure} 破壊的木構造は, 編集を行う際に木のロックを掛ける必要がある. -データを受け取ろうと木を走査するスレッドは書き換えの終了を待つ必要があり, 閲覧者が +この時, データを受け取ろうと木を走査するスレッドは書き換えの終了を待つ必要があり, 閲覧者が いる場合は木の走査が終わるまで書き換えをまたなければならない. -これではスケールしないと考えられる. +これではスケールしにくいと考えられる. \subsection{非破壊的木構造木構造} 非破壊的木構造は破壊的木構造とは違い一度作成したデータを破壊することはない. @@ -202,13 +202,14 @@ \end{figure} 非破壊的木構造により, 木構造を編集しながら走査することが可能となる. +よって, 破壊的木構造よりスケールすると考えている. \subsection{Jungle におけるデータ編集} 木の編集は, 通常 Node を書き換えるため Node の API として提供されることが多いが, Jungle で は JungleTreeEditor を利用して行う. JungleTree Editor には編集するためのいくつかのメソッドが用意されており, NodePath と -呼ばれるルートノードからノードまでのマスを指定することでノードが編集される. +呼ばれるルートノードからノードまでのパスを指定することでノードが編集される. NodePath は, ルートノードからスタートし, ノードの子供の場所を次々に指定していくことで編集対象 のノードの場所を表す(図\ref{fig:nodepath}). @@ -223,25 +224,26 @@ Tree 編集の API として次の4つが用意されている. \begin{itemize} \item \verb+addNewChildAt(NodePath _path,int _pos)+ +\end{itemize} +NodePath で指定された Node に子供となる Node を追加するAPIである. +pos で指定された番号に子供として追加を行う. + +\begin{itemize} \item \verb+deleteChildAt(NodePath _path,int _pos)+ +\end{itemize} +NodePath と pos により指定される Node を削除する API である. + +\begin{itemize} \item \verb+putAttribute(NodePath _path,+\\ \verb+String _key,ByteBuffer _value)+ +\end{itemize} +Node に attribute を追加する API である. +文字列をキーにして ByteBuffer によりデータを保持する. + +\begin{itemize} \item \verb+deleteAttribute(NodePath _path,+\\ \verb+String _key)+ \end{itemize} - -\subsubsection{addNewChildAt} -NodePath で指定された Node に子供となる Node を追加するAPIである. -pos で指定された番号に子供として追加を行う. - -\subsubsection{deleteChildAt} -NodePath と pos により指定される Node を削除する API である. - -\subsubsection{putAttribute} -Node に attribute を追加する API である. -文字列をキーにして ByteBuffer によりデータを保持する. - -\subsubsection{deleteAttribute} NodePath により指定される Node の attribute を削除する API である. 削除する attribute は文字列のキーで指定する. @@ -262,12 +264,13 @@ \end{verbatim} 大文字の英字は実行した API を表す. -<>により囲まれている数値は NodePath を示す. +\verb|<|\verb|>|により囲まれている数値は NodePath を示す. NodePath の後ろは posision や attribute の情報を表している. NodeOperation と NodePath の組み合わせを TreeOperation として扱い, それらいくつか集まりが TreeOperationLog となる. \section{Alice を用いた Jungle の分散実装} -Alice を用いた Jungle のデータ分散は, 上記の TreeOperationLog を Data Segment として扱うことで行える. +Alice を用いた Jungle のデータ分散は, 上記の TreeOperationLog を Data Segment として扱い +他ノードがその Data Segment にアクセスできるようにすることで行える. そのために必要なことは以下となる. \begin{itemize} \item トポロジーの形成 @@ -311,7 +314,7 @@ また, 親も子供となるノードの DSM に対して "child1" や "child2" キーによりアクセスすることが可能となる. Alice ではスクリプトが用意されており, ノードの数と子供の数を指定するだけで dot ファイルの作成が行える. -このように, 比較的楽にトポロジーの形成が行えるのは Alice の特徴である. +このように, Alice では比較的楽にトポロジーの形成が行える. \subsection{TreeOperationLog の MessagePack によるシリアライズ} TreeOperationLog は MessagePack でシリアライズできないものを List のフィールド変数に保持していた.