changeset 78:04f63b011fee

Writed description of merge
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Mon, 03 Feb 2014 09:43:16 +0900
parents bd73f0e1cdd4
children 2e53de70f64e
files slides/graffle/bulletinboard.graffle slides/graffle/distributed_jungle.graffle slides/images/bulletinboard.png slides/images/distributed_jungle.png slides/index.html
diffstat 5 files changed, 72 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/slides/graffle/bulletinboard.graffle	Mon Feb 03 08:40:32 2014 +0900
+++ b/slides/graffle/bulletinboard.graffle	Mon Feb 03 09:43:16 2014 +0900
@@ -46,7 +46,7 @@
 	<key>Creator</key>
 	<string>Oshiro Nobuyasu</string>
 	<key>DisplayScale</key>
-	<string>1 0/72 in = 1 0/72 in</string>
+	<string>1 0/72 in = 1.0000 in</string>
 	<key>GraphDocumentVersion</key>
 	<integer>8</integer>
 	<key>GraphicsList</key>
@@ -264,8 +264,8 @@
 			<integer>43</integer>
 			<key>Points</key>
 			<array>
-				<string>{269.06222126362366, 212.25858455839085}</string>
-				<string>{357.58971930282109, 301.53530614616898}</string>
+				<string>{269.06221111285691, 212.25858903927798}</string>
+				<string>{357.58966362040229, 301.5353307583095}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -299,8 +299,8 @@
 			<integer>42</integer>
 			<key>Points</key>
 			<array>
-				<string>{257.03808289316225, 215.66789461414629}</string>
-				<string>{284.29360483025704, 298.12599034636082}</string>
+				<string>{257.03804122796947, 215.66790079569958}</string>
+				<string>{284.29341568798242, 298.12601827059672}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -334,8 +334,8 @@
 			<integer>41</integer>
 			<key>Points</key>
 			<array>
-				<string>{239.86847523687476, 215.37560954206259}</string>
-				<string>{205.70266092776362, 298.41835165715531}</string>
+				<string>{239.86843791101938, 215.3756026695975}</string>
+				<string>{205.70248887399381, 298.41832003853915}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -369,8 +369,8 @@
 			<integer>40</integer>
 			<key>Points</key>
 			<array>
-				<string>{227.53341533474949, 211.26774501159844}</string>
-				<string>{122.27701931951354, 302.52620571551574}</string>
+				<string>{227.53340884345789, 211.26774166657401}</string>
+				<string>{122.27698145548852, 302.52618625100098}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -537,7 +537,8 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
 
-\f0\fs24 \cf0 board}</string>
+\f0\fs24 \cf0 board\
+name}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -590,7 +591,7 @@
 	<key>MasterSheets</key>
 	<array/>
 	<key>ModificationDate</key>
-	<string>2014-02-02 18:06:49 +0000</string>
+	<string>2014-02-03 00:00:30 +0000</string>
 	<key>Modifier</key>
 	<string>Oshiro Nobuyasu</string>
 	<key>NotesVisible</key>
--- a/slides/graffle/distributed_jungle.graffle	Mon Feb 03 08:40:32 2014 +0900
+++ b/slides/graffle/distributed_jungle.graffle	Mon Feb 03 09:43:16 2014 +0900
@@ -46,7 +46,7 @@
 	<key>Creator</key>
 	<string>Oshiro Nobuyasu</string>
 	<key>DisplayScale</key>
-	<string>1 0/72 in = 1 0/72 in</string>
+	<string>1 0/72 in = 1.0000 in</string>
 	<key>ExportShapes</key>
 	<array>
 		<dict>
@@ -486,8 +486,8 @@
 			<integer>3042</integer>
 			<key>Points</key>
 			<array>
-				<string>{127.10000000000154, 219}</string>
-				<string>{182.04838104423948, 245.10669687621981}</string>
+				<string>{127.09999999999999, 219}</string>
+				<string>{182.04838104423936, 245.10669687622232}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -549,7 +549,7 @@
 		</dict>
 		<dict>
 			<key>Bounds</key>
-			<string>{{147, 286}, {32, 15}}</string>
+			<string>{{147, 294.46578979492188}, {32, 15}}</string>
 			<key>Class</key>
 			<string>ShapedGraphic</string>
 			<key>ID</key>
@@ -615,7 +615,7 @@
 		</dict>
 		<dict>
 			<key>Bounds</key>
-			<string>{{210.40040941170102, 309.46579060064522}, {79.5, 21}}</string>
+			<string>{{210.4792478622102, 309.46509330538788}, {79.5, 21}}</string>
 			<key>Class</key>
 			<string>ShapedGraphic</string>
 			<key>ID</key>
@@ -866,8 +866,8 @@
 			<integer>11</integer>
 			<key>Points</key>
 			<array>
-				<string>{228.09366979839604, 282.43108000262544}</string>
-				<string>{272.24817636845324, 357.57031883671561}</string>
+				<string>{228.12232377068844, 282.43082688753901}</string>
+				<string>{272.3772926444218, 357.56917653507588}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -901,8 +901,8 @@
 			<integer>10</integer>
 			<key>Points</key>
 			<array>
-				<string>{199.27917197175847, 282.39845754357174}</string>
-				<string>{142.27208126124901, 357.60200499056509}</string>
+				<string>{199.26989998631828, 282.39837385693244}</string>
+				<string>{142.23022340979924, 357.60162725857236}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -978,8 +978,8 @@
 			<integer>7</integer>
 			<key>Points</key>
 			<array>
-				<string>{293.56685508655772, 164.41792239542249}</string>
-				<string>{342.93314094834517, 239.58207764064034}</string>
+				<string>{293.56685580867173, 164.41792239522417}</string>
+				<string>{342.93314418168188, 239.58207760477583}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -1147,7 +1147,7 @@
 	<key>MasterSheets</key>
 	<array/>
 	<key>ModificationDate</key>
-	<string>2014-02-02 12:05:29 +0000</string>
+	<string>2014-02-03 00:36:34 +0000</string>
 	<key>Modifier</key>
 	<string>Oshiro Nobuyasu</string>
 	<key>NotesVisible</key>
Binary file slides/images/bulletinboard.png has changed
Binary file slides/images/distributed_jungle.png has changed
--- a/slides/index.html	Mon Feb 03 08:40:32 2014 +0900
+++ b/slides/index.html	Mon Feb 03 09:43:16 2014 +0900
@@ -125,10 +125,10 @@
 	</h3>
 	<p>Webコンテンツを構成するテキストや画像などのデジタルコンテンツを管理し配信するシステム。</p>
 	<li>例:ブログツール、Wiki</li>
-	<p>『分散』コンテンツマネジメントシステムに求められること。</p>
+	<p>分散コンテンツマネジメントシステムに求められること。</p>
 	<li>Webコンテンツを分散して管理</li>
 	<li>スケールアウトするシステム</li>
-	<p>データ全体の整合性に遅延がある結果整合性でも問題なく。書き込みや読み込みを優先としたデータベースが必要。</p>
+	<p>データ全体の整合性に遅延がある、結果整合性でもよい。書き込みや読み込みを優先としたデータベースが必要。</p>
 	<p>そこで、非破壊的木構造データベースJungleの提案を行った。</p>
       </article>
 
@@ -214,8 +214,8 @@
 	<p style="margin-top:-10px;">分散版管理システムとは多人数によるソフトウェア開発において変更履歴を管理するシステム</p>
 	<p style="margin-top:-10px;">分散版管理システムは次の特徴とAPIを持つ</p>
 	<ul>
-	    <li>開発者それぞれがリポジトリのクローンを持ち、開発はローカルのリポジトリを通すことで行われる</li>
-	    <li>ローカルのリポジトリは独立に存在し、サーバ上ある他人のリポジトリから変更履歴をとることができる。また自身の変更履歴を伝えることもできる</li>
+	    <li>開発者それぞれがリポジトリのクローンしてローカルに持ち、開発はローカルのリポジトリを通すことで行われる</li>
+	    <li>ローカルのリポジトリは独立に存在し、サーバ上にある他人のリポジトリから変更履歴をとることができる。また自身の変更履歴を伝えることもできる</li>
 	    <li>データ更新時に先に別の更新が入っていた(衝突)場合はMergeによりデータの整合性をとる</li>
 	</ul>
       </article>
@@ -234,8 +234,8 @@
 	<img style="height:200px;" src="./images/distributed_repository.png">
 	</p>
 	<small>
-	<p>分版版管理システムはリポジトリが壊れても別のリポジトリよりデータを復旧できることと、いつでも
-	読み込みが可能なため、高いスケーラビリティを持っている</p>
+	<p>分版版管理システムはリポジトリが壊れても別のリポジトリよりデータを復旧できることと、push/pullそれとMergeによる整合性
+	    の確保で、高いスケーラビリティを持っている</p>
 	</small>
       </article>
 
@@ -292,12 +292,43 @@
 	</small>
       </article>
 
+      <article>
+        <h3>
+	    Mergeによる更新の衝突の解決
+	</h3>
+	<small>
+	<table style="font-size: 0.7em; width:100%;" >
+	    <tr>
+		<td><p style="margin-top:-5px; margin-bottom:-5px; text-align:center;"><img src="./images/tree_conflict.png"></p></td>
+	    </tr>
+	    <tr>
+		<td><p style="margin-top:-5px; margin-bottom:-5px; text-align:center;"><img src="./images/tree_conflict3.png"></p></td>
+	    </tr>
+	</table>
+	<p style="margin-top:0px;">上の図は通常のデータ更新を示す</p>
+	<p style="margin-top:-20px;">下の図は、同じ木に対して2つのデータの更新があったが編集を無事終えるケースを示す</p>
+	</small>
+      </article>
+
+      <article>
+        <h3>
+	    Mergeによる更新の衝突の解決ができない場合
+	</h3>
+	<table style="font-size: 0.7em; width:100%;" >
+	    <tr>
+		<td><p style="margin-top:-5px; margin-bottom:-5px; text-align:center;"><img src="./images/tree_conflict2.png"></p></td>
+	    </tr>
+	</table>
+	<p>木の同じノードに対してデータの編集が行われた場合、どのような編集結果にすればよいかわからない。</p>
+	<p>どのような木が組まれ、どのようにデータを保存するかはアプリケーション毎に変わってくる。そのため、アプリケーション毎に
+	Mergeアルゴリズムは考えなくてはならない。</p>
+
+      </article>
 
       <article>
         <h3>
 	    Jungleの分散実装:掲示板システムにおけるMerge
 	</h3>
-	<p>Mergeとはデータ更新の衝突が起きた際の解決方法</p>
 	<p>Jungleではアプリケーション毎にMergeアルゴリズムを設計</p>
 	<p>後述する性能比較に用いた掲示板システムにおけるMergeの実装を考える</p>
 	<p>掲示板システムにおけるデータ構造を以下に示す</p>
@@ -328,7 +359,6 @@
 	</small>
       </article>
 
-
       <article>
         <h3>
 	    分散データベースJungleの評価
@@ -634,6 +664,16 @@
 
       <article>
         <h3>
+	    Mergeは必ずできるのか
+	</h3>
+	<p>Mergeを必ず行うことは難しい</p>
+	<p>例えば、更新するデータが画像だった場合、2つの画像のデータから新しい画像を作るわけにはいかない。</p>
+	<p>後に更新したものを優先するといった方法をとるか、ユーザの選択に委ねるしかない。</p>
+      </article>
+
+
+      <article>
+        <h3>
 	    分散Key-ValueストアCassandraの特徴
 	</h3>
 	<small style="line-height:30px;">