comparison paper/chapter2.tex @ 22:56753cfbeeab

Added merge_imp.pdf
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Thu, 23 Jan 2014 19:05:44 +0900
parents a7fbd5db80fb
children 67880a2ca650
comparison
equal deleted inserted replaced
21:a4dfb70496ee 22:56753cfbeeab
1 \chapter{木構造データベースJungleの実装と分散設計} 1 \chapter{木構造データベースJungleの実装と分散設計}
2 \section{CAP 定理} 2
3 3
4 4
5 \section{木構造データベースJungle} 5 \section{木構造データベースJungle}
6 Jungle はスケーラビリティのある CMS の開発を目指して当研究室で開発されている非破壊的木構造データベースである. 6 Jungle はスケーラビリティのある CMS の開発を目指して当研究室で開発されている非破壊的木構造データベースである.
7 一般的なコンテンツマネジメントシステムではブログツールや Wiki・SNS が多く, これらの 7 一般的なコンテンツマネジメントシステムではブログツールや Wiki・SNS が多く, これらの
129 \subsection{TreeOperationLog} 129 \subsection{TreeOperationLog}
130 API を使用すると, Jungle 内部では NodeOperation として順次ログに積まれていき, 最終的に 130 API を使用すると, Jungle 内部では NodeOperation として順次ログに積まれていき, 最終的に
131 commit されることで編集が行われる. 131 commit されることで編集が行われる.
132 この時ログに積まれる複数の NodeOperation を TreeOperationLog という. 132 この時ログに積まれる複数の NodeOperation を TreeOperationLog という.
133 Jungle ではこの TreeOperationLog 単位でデータの編集が行われる. 133 Jungle ではこの TreeOperationLog 単位でデータの編集が行われる.
134 以下に TreeOperationLog の具体的な例を示す. 134 以下に TreeOperationLog の具体的な例を示す(\ref{src:treelog}).
135 \begin{verbatim} 135 \begin{lstlisting}[frame=lrbt,label=src:treelog,caption=トポロジーマネージャーの利用,numbers=left]
136 [APPEND_CHILD:<-1>:pos:0] 136 [APPEND_CHILD:<-1>:pos:0]
137 [PUT_ATTRIBUTE:<-1,1>:key:author,value:oshiro] 137 [PUT_ATTRIBUTE:<-1,1>:key:author,value:oshiro]
138 [PUT_ATTRIBUTE:<-1,1>:key:mes,value:hello] 138 [PUT_ATTRIBUTE:<-1,1>:key:mes,value:hello]
139 [PUT_ATTRIBUTE:<-1,1>:key:key,value:hoge] 139 [PUT_ATTRIBUTE:<-1,1>:key:key,value:hoge]
140 [PUT_ATTRIBUTE:<-1,1>:key:timestamp,value:0] 140 [PUT_ATTRIBUTE:<-1,1>:key:timestamp,value:0]
141 \end{verbatim} 141 \end{lstlisting}
142 このログは今回の研究で使用したベンチマーク用掲示板プログラムにおける書き込みにより行われるログである(図\ref{fig:treeoperationlog}). 142 このログは今回の研究で使用したベンチマーク用掲示板プログラムにおける書き込みにより行われるログである(図\ref{fig:treeoperationlog}).
143 143
144 大文字の英字は実行した NodeOperation を表す. 144 大文字の英字は実行した NodeOperation を表す.
145 <> により囲まれている数字は NodePath を示す. 145 <> により囲まれている数字は NodePath を示す.
146 NodePath の表記以降は Node の position や attribute の情報を表している. 146 NodePath の表記以降は Node の position や attribute の情報を表している.
152 \end{center} 152 \end{center}
153 \end{figure} 153 \end{figure}
154 154
155 155
156 156
157 \section{データ衝突時におけるマージによる解決}
158 Jungle への分散実装を行うことである問題が発生する.
159 それは更新されたデータ同士が衝突を起こした時の処理である.
160 Jungle はリクエストがきた場合, 現在もっているデータを返す.
161 しかしそのデータは最新のものであるかは保証されない.
162 よって, 別のサーバノードで動いている Jungle からの更新データと衝突する可能性がある.
163
164 この問題に対して Jungle はアプリケーションレベルでのマージを実装して貰うことで解決をはかる.
157 165
158 166
159 167
168
169
170
171
172
173
174
175