comparison slides/slides.html @ 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
comparison
equal deleted inserted replaced
88:f257e8ebd79c 89:396b121f989c
103 <div class='slide'> 103 <div class='slide'>
104 <h1>研究の背景と目的</h1> 104 <h1>研究の背景と目的</h1>
105 <p>ウェブサービスにとってデータベースは必須であり、ウェブサービスの規模に比例してデータベースへの負荷も高まる。</p> 105 <p>ウェブサービスにとってデータベースは必須であり、ウェブサービスの規模に比例してデータベースへの負荷も高まる。</p>
106 <p>データベースの処理能力の高さはそのままウェブサービスの質に繋がるため、データベースのスケーラビリティの確保は重要である。</p> 106 <p>データベースの処理能力の高さはそのままウェブサービスの質に繋がるため、データベースのスケーラビリティの確保は重要である。</p>
107 <p>スケーラビリティ確保の方法としてデータ分散があるが、分散する方法により性能も変わってくる。</p> 107 <p>スケーラビリティ確保の方法としてデータ分散があるが、分散する方法により性能も変わってくる。</p>
108 <p>コンテンツマネジメントシステムに合ったスケーラビリティの確保ができるデータベースの開発を行う。</>
108 </div> 109 </div>
109 110
110 <div class='slide'> 111 <div class='slide'>
111 <h1> 112 <h1>
112 ウェブサービスにおけるデータベースの重要性 113 ウェブサービスにおけるデータベースの重要性
156 <li>例:ブログツール、Wiki</li> 157 <li>例:ブログツール、Wiki</li>
157 <p>分散コンテンツマネジメントシステムに求められること。</p> 158 <p>分散コンテンツマネジメントシステムに求められること。</p>
158 <li>Webコンテンツを分散して管理</li> 159 <li>Webコンテンツを分散して管理</li>
159 <li>スケールアウトするシステム</li> 160 <li>スケールアウトするシステム</li>
160 <p>データ全体の整合性に遅延がある、結果整合性でもよい。書き込みや読み込みを優先としたデータベースが必要。</p> 161 <p>データ全体の整合性に遅延がある、結果整合性でもよい。書き込みや読み込みを優先としたデータベースが必要。</p>
161 <p>そこで、非破壊的木構造データベースJungleの提案を行った。</p> 162 <p>そこで、非破壊的木構造データベースJungleの開発が行われた。</p>
162 </div> 163 </div>
163 164
164 <div class='slide'> 165 <div class='slide'>
165 <h1> 166 <h1>
166 非破壊的木構造データベースJungle 167 非破壊的木構造データベースJungle
198 Jungleの分散設計 199 Jungleの分散設計
199 </h1> 200 </h1>
200 <p>ここまでJungleに実装されている非破壊的木構造の利点について述べた。</p> 201 <p>ここまでJungleに実装されている非破壊的木構造の利点について述べた。</p>
201 <p>次に、Jungleにおける分散設計について述べる。</p> 202 <p>次に、Jungleにおける分散設計について述べる。</p>
202 <p>データ分散を行うにあたり、まず考えることはトポロジーの形成と他のノードからデータの伝搬の仕方である。</p> 203 <p>データ分散を行うにあたり、まず考えることはトポロジーの形成と他のノードからデータの伝搬の仕方である。</p>
203 <p>Jungleはこの問題に対し、ツリートポロジーを形成し、データ編集の際に発生するcommit logを他のノードに流すことで解決する。</p> 204 <p>Jungleはこの問題に対し、ツリートポロジーを形成し、データ編集の際に発生するオペレーションを他のノードに流すことで解決する。</p>
204 </div> 205 </div>
205 206
206 <div class='slide'> 207 <div class='slide'>
207 <h1> 208 <h1>
208 Jungleトポロジーの形成 209 Jungleトポロジーの形成
213 <li>複数のノードによる分散トポロジーの設定</li> 214 <li>複数のノードによる分散トポロジーの設定</li>
214 <li>トポロジー上でのデータアクセス機構</li> 215 <li>トポロジー上でのデータアクセス機構</li>
215 </ul> 216 </ul>
216 <p>JungleにAliceを組み込み、Jungleのノード同士でトポロジーを形成する。</p> 217 <p>JungleにAliceを組み込み、Jungleのノード同士でトポロジーを形成する。</p>
217 <p>Aliceの機能である他ノードへのデータアクセス機構を使用してデータ分散を行う。</p> 218 <p>Aliceの機能である他ノードへのデータアクセス機構を使用してデータ分散を行う。</p>
218 219 </ul>
219 </div> 220 </div>
220 221
221 <div class='slide'> 222
222 <h1> 223
223 Jungleの分散設計: データ変更コマンドのAPI 224 <div class='slide'>
224 </h1> 225 <h1>
225 226 分散設計: データ編集オペレーション
226 227 </h1>
227 </div> 228 <p>Aliceにより、ネットワークトポロジーの作成と他サーバが持つデータアクセス機構を実装できた。</p>
228 229 <p>次はどのデータを取得することでデータの分散を行うか考えなければならない。</p>
229 <div class='slide'> 230 <br>
230 <h1> 231 <p>Jungleにはデータ編集に使われるオペレーションがある。</p>
231 232 <p>データ編集に使われるオペレーションをそのまま他サーバノードへ流すことでデータの分散が行える。</p>
232 </h1> 233 <p>オペレーションには次の4つがある</p>
233 234 <ul>
234 235 <li>addNewChild:子ノードの追加を行う</li>
235 </div> 236 <li>deleteChildAt:指定したノードの削除を行う</li>
236 237 <li>putAttribute:子ノードにattributeに追加を行う</li>
237 238 <li>deleteAttribute:子ノードのattributeを削除する</li>
239 <br>
240 </div>
241
242 <div class='slide'>
243 <h1>
244 データ編集オペレーション
245 </h1>
246 <p>子ノードを追加し、その子ノードにattributeを追加する場合次のノードオペレーションが実行される。</p>
247 <ol>
248 <li>[APPEND_CHILD:<-1>:pos:0]</li>
249 <li>[PUT_ATTRIBUTE:<-1,0>:key:mes,value:hello]</li>
250 </ol>
251 <p>このノードオペレーションの実行結果を図に示す。</p>
252 <p style="text-align:center;">
253 <img src="./images/node_operation.png">
254 </p>
255 <p><font color="">トポロジー上でノードオペレーションを渡すことで同じ編集を行いデータの分散を行う。</font></p>
256 <br/>
257 <br/>
258 </div>
259
260
261 <div class='slide'>
262 <h1>
263 Jungle分散実装
264 </h1>
265 <p>以上の設計を元にJungleに分散実装を行った。</p>
266 <p>以下の図はJungleにおけるデータ分散の様子を表している。</p>
267 <p style="text-align:center;">
268 <img src="./images/distributed_jungle.png">
269 </p>
270 <p>Aliceでトポロジーを形成後に、データ編集に使われたオペレーションを他サーバノードに送る。</p>
271 <p>オペレーションを受信したノードはデータ編集を行う。他にサーバが繋がっている場合はそちらにもオペレーションを送る。</p>
272 <br/>
273 <br/>
274 </div>
275
276 <div class='slide'>
277 <h1>
278 Jungle分散実装
279 </h1>
280 <p>これまでの実装でJungleのデータが分散が行われるようになった。</p>
281 <p>しかしもう1つ問題がある。複数のノードから書き込まれるデータの整合性を取る方法が必要である。</p>
282 <p>JungleではこれをMergeを使うことで自動的に解決する。</p>
283 <p>Mergeとは2つ以上の変更の結果を受けて1つの変更に変えることである。</p>
284 <p>今回は、性能比較に用いる掲示板システムにMergeの実装を行った。</p>
285 <p>掲示板システムにおけるMergeを説明する。</p>
286 </div>
238 287
239 <div class='slide'> 288 <div class='slide'>
240 <h1> 289 <h1>
241 掲示板システムにおけるMerge 290 掲示板システムにおけるMerge
242 </h1> 291 </h1>
292 <p>2つの状態をもつ掲示板の書き込みができる。この2つの書き込みから新しい書き込みを作る。</p>
243 <p style="text-align:center;"> 293 <p style="text-align:center;">
244 <img src="./images/bulletinboard_merge.png"> 294 <img style="width:70%;" src="./images/bulletinboard_merge.png">
245 </p> 295 </p>
246 <p>2つの状態をもつ掲示板の書き込みができる。</p> 296 <p>掲示板はcommutativeなため、いつ書き込んでも良い。よってMergeが自動的に行える。</p>
247 <p>掲示板はcommutativeなため、Mergeが自然に行える。</p> 297 <br/>
248 </div> 298 </div>
249 299
250 300
251 301
252 <div class='slide'> 302
253 <h1> 303 <div class='slide'>
254 Jungleの分散設計:トポロジー形成とログによるデータ分散 304 <h1>
255 </h1> 305 分散データベースJungleの評価
256 <table>
257 <tr>
258 <th>commit log伝搬によるデータ分散</th>
259 </tr>
260 <tr>
261 <td>
262 <img src="./images/distributed_jungle.png">
263 </td>
264 </tr>
265 </table>
266 <p>サーバノード同士でツリートポロジーを形成する。データ編集をどのように行ったのかを示すログ commit log を伝搬させデータの分散を行う。</p>
267 </div>
268
269
270
271 <div class='slide'>
272 <h1>
273
274 </h1> 306 </h1>
275 </div> 307 <p>分散データベースとしてJungleの性能を評価する。</p>
276 308 <p>分散Key-ValueデーターべースCassandraと比較を行う。</p>
277 309 <p>比較方法は、Jungle, Cassandra をそれぞれバックエンドとした簡易掲示板を作成する。</p>
278 <div class='slide'> 310 <p>掲示板に対してHTTP Requestで並列に読み込みと書き込みの負荷をかけ計測する。</p>
279 <h1> 311 <p>レスポンスが返る平均時間と標準偏差を求めグラフ化する</p>
280 312 </div>
281 </h1> 313
282 </div> 314
283 315 <div class='slide'>
284 316 <h1>
285 <div class='slide'> 317 実験内容
286 <h1> 318 </h1>
287 319 <p>実験は2つ行う</p>
288 </h1> 320 <li>実験1:サーバを単体で起動し、複数のクライアントからの負荷をかける。</li>
289 </div> 321 <p style="text-align:center;">
290 322 <img style="width:60%;" src="./images/cluster_request_server.png">
291 323 </p>
292 <div class='slide'> 324 <p>サーバ単体の性能を比較する。</p>
293 <h1> 325 <p>クライアントの増加に対してサーバ1台にかかるリクエストも増加</p>
294 326 </div>
295 </h1> 327
296 </div> 328 <div class='slide'>
297 329 <h1>
330 実験内容
331 </h1>
332 <li>実験2:サーバを単体で起動し、複数のクライアントからの負荷をかける。</li>
333 <p style="text-align:center;">
334 <img style="width:60%;" src="./images/clients_request_servers.png">
335 </p>
336 <p>分散環境下における性能を比較する。</p>
337 <p>クライアントとサーバがともに増加するため、サーバ一台に対するリクエストは変わらず。</p>
338 <p>サーバが全体で受けるリクエストは増加する。</p>
339 </div>
298 340
299 <div class='slide'> 341 <div class='slide'>
300 <h1> 342 <h1>
301 実験1:単体サーバへの負荷 343 実験1:単体サーバへの負荷
302 </h1> 344 </h1>
303 <p style="text-align:center;"> 345 <p style="text-align:center;">
304 <img style="width:70%;" src="./images/cluster_request_server.png"> 346 <img style="width:70%;" src="./images/cluster_request_server.png">
305 </p> 347 </p>
306 </div> 348 <p>レスポンス速度(縦軸の数値)が低い程良い</p>
307 349 <p>クライアント(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p>
308 350 </div>
309
310 351
311 <div class='slide'> 352 <div class='slide'>
312 <h1> 353 <h1>
313 単体サーバへの負荷:読み込み負荷 354 単体サーバへの負荷:読み込み負荷
314 </h1> 355 </h1>
349 </h1> 390 </h1>
350 <p style="text-align:center;"> 391 <p style="text-align:center;">
351 <img style="width:70%;" src="./images/clients_request_servers.png"> 392 <img style="width:70%;" src="./images/clients_request_servers.png">
352 </p> 393 </p>
353 <p>レスポンス速度(縦軸の数値)が低い程良い</p> 394 <p>レスポンス速度(縦軸の数値)が低い程良い</p>
354 <p>クライアトとノードの数(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p> 395 <p>クライアントとノードの数(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p>
355 </div> 396 </div>
356 397
357 398
358 <div class='slide'> 399 <div class='slide'>
359 <h1> 400 <h1>