Mercurial > hg > Papers > 2014 > nobuyasu-master
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> |