changeset 89:396b121f989c

fixed slides
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Mon, 03 Feb 2014 14:19:00 +0900
parents f257e8ebd79c
children 8f5c9719d6ee
files slides/graffle/distributed_jungle.graffle slides/images/distributed_jungle.png slides/slides.html
diffstat 3 files changed, 152 insertions(+), 71 deletions(-) [+]
line wrap: on
line diff
--- a/slides/graffle/distributed_jungle.graffle	Mon Feb 03 13:40:36 2014 +0900
+++ b/slides/graffle/distributed_jungle.graffle	Mon Feb 03 14:19:00 2014 +0900
@@ -486,8 +486,8 @@
 			<integer>3042</integer>
 			<key>Points</key>
 			<array>
-				<string>{127.09999999999999, 219}</string>
-				<string>{182.04838104423936, 245.10669687622232}</string>
+				<string>{127.09999999999997, 219}</string>
+				<string>{182.04838104423936, 245.10669687622234}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -610,12 +610,12 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
 
-\f0\fs24 \cf0 commit log}</string>
+\f0\fs24 \cf0 operation}</string>
 			</dict>
 		</dict>
 		<dict>
 			<key>Bounds</key>
-			<string>{{210.4792478622102, 309.46509330538788}, {79.5, 21}}</string>
+			<string>{{210.47943009689689, 309.46509167217647}, {79.5, 21}}</string>
 			<key>Class</key>
 			<string>ShapedGraphic</string>
 			<key>ID</key>
@@ -647,7 +647,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
 
-\f0\fs24 \cf0 commit log}</string>
+\f0\fs24 \cf0 operation}</string>
 			</dict>
 		</dict>
 		<dict>
@@ -675,7 +675,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
 
-\f0\fs24 \cf0 commit log}</string>
+\f0\fs24 \cf0 operation}</string>
 			</dict>
 		</dict>
 		<dict>
@@ -703,7 +703,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
 
-\f0\fs24 \cf0 commit log}</string>
+\f0\fs24 \cf0 operation}</string>
 			</dict>
 		</dict>
 		<dict>
@@ -866,8 +866,8 @@
 			<integer>11</integer>
 			<key>Points</key>
 			<array>
-				<string>{228.12232377068844, 282.43082688753901}</string>
-				<string>{272.3772926444218, 357.56917653507588}</string>
+				<string>{228.12238999129161, 282.43082627275749}</string>
+				<string>{272.3775911089877, 357.56917388154017}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -901,8 +901,8 @@
 			<integer>10</integer>
 			<key>Points</key>
 			<array>
-				<string>{199.26989998631828, 282.39837385693244}</string>
-				<string>{142.23022340979924, 357.60162725857236}</string>
+				<string>{199.26987871078217, 282.39837366008095}</string>
+				<string>{142.23012736023978, 357.6016263731625}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -933,6 +933,14 @@
 			<integer>9</integer>
 			<key>Shape</key>
 			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
 			<key>Text</key>
 			<dict>
 				<key>Text</key>
@@ -954,6 +962,14 @@
 			<integer>8</integer>
 			<key>Shape</key>
 			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
 			<key>Text</key>
 			<dict>
 				<key>Text</key>
@@ -978,8 +994,8 @@
 			<integer>7</integer>
 			<key>Points</key>
 			<array>
-				<string>{293.56685580867173, 164.41792239522417}</string>
-				<string>{342.93314418168188, 239.58207760477583}</string>
+				<string>{293.56685581033651, 164.41792239522417}</string>
+				<string>{342.93314418918908, 239.58207760477583}</string>
 			</array>
 			<key>Style</key>
 			<dict>
@@ -1045,6 +1061,14 @@
 			<integer>5</integer>
 			<key>Shape</key>
 			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
 			<key>Text</key>
 			<dict>
 				<key>Text</key>
@@ -1066,6 +1090,14 @@
 			<integer>4</integer>
 			<key>Shape</key>
 			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
 			<key>Text</key>
 			<dict>
 				<key>Text</key>
@@ -1087,6 +1119,14 @@
 			<integer>3</integer>
 			<key>Shape</key>
 			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
 			<key>Text</key>
 			<dict>
 				<key>Text</key>
@@ -1147,7 +1187,7 @@
 	<key>MasterSheets</key>
 	<array/>
 	<key>ModificationDate</key>
-	<string>2014-02-03 00:36:34 +0000</string>
+	<string>2014-02-03 05:13:01 +0000</string>
 	<key>Modifier</key>
 	<string>Oshiro Nobuyasu</string>
 	<key>NotesVisible</key>
Binary file slides/images/distributed_jungle.png has changed
--- a/slides/slides.html	Mon Feb 03 13:40:36 2014 +0900
+++ b/slides/slides.html	Mon Feb 03 14:19:00 2014 +0900
@@ -105,6 +105,7 @@
 	<p>ウェブサービスにとってデータベースは必須であり、ウェブサービスの規模に比例してデータベースへの負荷も高まる。</p>
 	<p>データベースの処理能力の高さはそのままウェブサービスの質に繋がるため、データベースのスケーラビリティの確保は重要である。</p>
 	<p>スケーラビリティ確保の方法としてデータ分散があるが、分散する方法により性能も変わってくる。</p>
+	<p>コンテンツマネジメントシステムに合ったスケーラビリティの確保ができるデータベースの開発を行う。</>
   </div>
 
   <div class='slide'>
@@ -158,7 +159,7 @@
 	<li>Webコンテンツを分散して管理</li>
 	<li>スケールアウトするシステム</li>
 	<p>データ全体の整合性に遅延がある、結果整合性でもよい。書き込みや読み込みを優先としたデータベースが必要。</p>
-	<p>そこで、非破壊的木構造データベースJungleの提案を行った。</p>
+	<p>そこで、非破壊的木構造データベースJungleの開発が行われた。</p>
   </div>
 
   <div class='slide'>
@@ -200,7 +201,7 @@
     <p>ここまでJungleに実装されている非破壊的木構造の利点について述べた。</p>
     <p>次に、Jungleにおける分散設計について述べる。</p>
     <p>データ分散を行うにあたり、まず考えることはトポロジーの形成と他のノードからデータの伝搬の仕方である。</p>
-    <p>Jungleはこの問題に対し、ツリートポロジーを形成し、データ編集の際に発生するcommit logを他のノードに流すことで解決する。</p>
+    <p>Jungleはこの問題に対し、ツリートポロジーを形成し、データ編集の際に発生するオペレーションを他のノードに流すことで解決する。</p>
   </div>
 
   <div class='slide'>
@@ -215,86 +216,127 @@
     </ul>
     <p>JungleにAliceを組み込み、Jungleのノード同士でトポロジーを形成する。</p>
     <p>Aliceの機能である他ノードへのデータアクセス機構を使用してデータ分散を行う。</p>
-
-  </div>
-
-  <div class='slide'>
-    <h1>
-	Jungleの分散設計: データ変更コマンドのAPI
-    </h1>
-
-    
-  </div>
-
-  <div class='slide'>
-    <h1>
-	
-    </h1>
-
-    
-  </div>
-
-
-
-  <div class='slide'>
-    <h1>
-	掲示板システムにおけるMerge
-    </h1>
-    <p style="text-align:center;">
-	<img src="./images/bulletinboard_merge.png">
-    </p>
-    <p>2つの状態をもつ掲示板の書き込みができる。</p>
-    <p>掲示板はcommutativeなため、Mergeが自然に行える。</p>
+    </ul>
   </div>
 
 
 
   <div class='slide'>
     <h1>
-	Jungleの分散設計:トポロジー形成とログによるデータ分散
+	分散設計: データ編集オペレーション
     </h1>
-	<table>
-	    <tr>
-		<th>commit log伝搬によるデータ分散</th>
-	    </tr>
-	    <tr>
-		<td>
-		    <img src="./images/distributed_jungle.png">
-		</td>
-	    </tr>
-	</table>
-	<p>サーバノード同士でツリートポロジーを形成する。データ編集をどのように行ったのかを示すログ commit log を伝搬させデータの分散を行う。</p>
+    <p>Aliceにより、ネットワークトポロジーの作成と他サーバが持つデータアクセス機構を実装できた。</p>
+    <p>次はどのデータを取得することでデータの分散を行うか考えなければならない。</p>
+    <br>
+    <p>Jungleにはデータ編集に使われるオペレーションがある。</p>
+    <p>データ編集に使われるオペレーションをそのまま他サーバノードへ流すことでデータの分散が行える。</p>
+    <p>オペレーションには次の4つがある</p>
+    <ul>
+	<li>addNewChild:子ノードの追加を行う</li>
+	<li>deleteChildAt:指定したノードの削除を行う</li>
+	<li>putAttribute:子ノードにattributeに追加を行う</li>
+	<li>deleteAttribute:子ノードのattributeを削除する</li>
+	<br>
   </div>
 
-
-
   <div class='slide'>
     <h1>
-
-   </h1>
+	データ編集オペレーション
+    </h1>
+    <p>子ノードを追加し、その子ノードにattributeを追加する場合次のノードオペレーションが実行される。</p>
+    <ol>
+	<li>[APPEND_CHILD:<-1>:pos:0]</li>
+	<li>[PUT_ATTRIBUTE:<-1,0>:key:mes,value:hello]</li>
+    </ol>
+    <p>このノードオペレーションの実行結果を図に示す。</p>
+    <p style="text-align:center;">
+    <img src="./images/node_operation.png">
+    </p>
+    <p><font color="">トポロジー上でノードオペレーションを渡すことで同じ編集を行いデータの分散を行う。</font></p>
+    <br/>
+    <br/>
   </div>
 
 
   <div class='slide'>
     <h1>
+	Jungle分散実装
+    </h1>
+    <p>以上の設計を元にJungleに分散実装を行った。</p>
+    <p>以下の図はJungleにおけるデータ分散の様子を表している。</p>
+    <p style="text-align:center;">
+	<img src="./images/distributed_jungle.png">    
+    </p>
+    <p>Aliceでトポロジーを形成後に、データ編集に使われたオペレーションを他サーバノードに送る。</p>
+    <p>オペレーションを受信したノードはデータ編集を行う。他にサーバが繋がっている場合はそちらにもオペレーションを送る。</p>
+    <br/>
+    <br/>
+  </div>
 
-   </h1>
+  <div class='slide'>
+    <h1>
+	Jungle分散実装
+    </h1>
+    <p>これまでの実装でJungleのデータが分散が行われるようになった。</p>
+    <p>しかしもう1つ問題がある。複数のノードから書き込まれるデータの整合性を取る方法が必要である。</p>
+    <p>JungleではこれをMergeを使うことで自動的に解決する。</p>
+    <p>Mergeとは2つ以上の変更の結果を受けて1つの変更に変えることである。</p>
+    <p>今回は、性能比較に用いる掲示板システムにMergeの実装を行った。</p>
+    <p>掲示板システムにおけるMergeを説明する。</p>
   </div>
 
+  <div class='slide'>
+    <h1>
+	掲示板システムにおけるMerge
+    </h1>
+    <p>2つの状態をもつ掲示板の書き込みができる。この2つの書き込みから新しい書き込みを作る。</p>
+    <p style="text-align:center;">
+	<img style="width:70%;" src="./images/bulletinboard_merge.png">
+    </p>
+    <p>掲示板はcommutativeなため、いつ書き込んでも良い。よってMergeが自動的に行える。</p>
+    <br/>
+  </div>
+
+  
+
 
   <div class='slide'>
     <h1>
-
+	    分散データベースJungleの評価
    </h1>
+	<p>分散データベースとしてJungleの性能を評価する。</p>
+	<p>分散Key-ValueデーターべースCassandraと比較を行う。</p>
+	<p>比較方法は、Jungle, Cassandra をそれぞれバックエンドとした簡易掲示板を作成する。</p>
+	<p>掲示板に対してHTTP Requestで並列に読み込みと書き込みの負荷をかけ計測する。</p>
+	<p>レスポンスが返る平均時間と標準偏差を求めグラフ化する</p>
   </div>
 
 
   <div class='slide'>
-    <h1>
-
-   </h1>
+      <h1>
+	  実験内容
+      </h1>
+	<p>実験は2つ行う</p>
+	<li>実験1:サーバを単体で起動し、複数のクライアントからの負荷をかける。</li>
+	<p style="text-align:center;">
+	    <img style="width:60%;" src="./images/cluster_request_server.png">
+	</p>
+	<p>サーバ単体の性能を比較する。</p>
+	<p>クライアントの増加に対してサーバ1台にかかるリクエストも増加</p>
   </div>
 
+  <div class='slide'>
+      <h1>
+	  実験内容
+      </h1>
+	<li>実験2:サーバを単体で起動し、複数のクライアントからの負荷をかける。</li>
+	<p style="text-align:center;">
+	    <img style="width:60%;" src="./images/clients_request_servers.png">
+	</p>
+	<p>分散環境下における性能を比較する。</p>
+	<p>クライアントとサーバがともに増加するため、サーバ一台に対するリクエストは変わらず。</p>
+	<p>サーバが全体で受けるリクエストは増加する。</p>
+  </div>
 
   <div class='slide'>
     <h1>
@@ -303,11 +345,10 @@
 	<p style="text-align:center;">
 	    <img style="width:70%;" src="./images/cluster_request_server.png">
 	</p>
+       <p>レスポンス速度(縦軸の数値)が低い程良い</p>
+       <p>クライアント(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p>
   </div>
 
-
-
-
   <div class='slide'>
     <h1>
 	単体サーバへの負荷:読み込み負荷
@@ -351,7 +392,7 @@
 	   <img style="width:70%;" src="./images/clients_request_servers.png">
        </p>
        <p>レスポンス速度(縦軸の数値)が低い程良い</p>
-       <p>クライアトとノードの数(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p>
+       <p>クライアントとノードの数(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p>
   </div>