comparison slides/index.html @ 114:d116e59fc8a2

Fixed references
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 04 Mar 2014 00:25:04 +0900
parents f257e8ebd79c
children
comparison
equal deleted inserted replaced
113:72e1662a302b 114:d116e59fc8a2
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <meta charset='utf-8'> 4 <meta charset='utf-8'>
5 <title>分散 Database Jungle に関する研究</title> 5 <title>分散 Database Jungle に関する研究</title>
6 <script src='slides.js'></script> 6
7 <style media='screen,projection'> 7 <!--
8 /**** 8 Notes on CSS media types used:
9 * Add your styles here. 9
10 */ 10 1) projection -> slideshow mode (display one slide at-a-time; hide all others)
11 11 2) screen -> outline mode (display all slides-at-once on screen)
12 body { font-size: 175%; } 12 3) print -> print (and print preview)
13 13
14 .step { color: silver; } /* or hide next steps e.g. .step { visibility: hidden; } */ 14 Note: toggle between projection/screen (that is, slideshow/outline) mode using t-key
15
16 Questions, comments?
17 - send them along to the mailinglist/forum online @ http://groups.google.com/group/webslideshow
18 -->
19
20 <!-- style sheet links -->
21 <link rel="stylesheet/less" href="themes/blank/projection.css.less" media="screen,projection">
22 <link rel="stylesheet/less" href="themes/blank/screen.css.less" media="screen">
23 <link rel="stylesheet/less" href="themes/blank/print.css.less" media="print">
24
25 <link rel="stylesheet/less" href="blank.css.less" media="screen,projection">
26
27 <!-- Notes about less css support
28 - all less stylesheets (*.css.less) need to get listed/loaded first (before the less.js script)
29 - find more info about less.js online @ http://lesscss.org
30
31 ***** NOTE:
32 less.js browser script currently won’t work if you’re using Google Chrome
33 and the path to your page starts with "file:///" due to a known Chrome issue.
34 (In the developer/js console you will see:
35 XMLHttpRequest cannot load file:///../s6/shared/projection.css.less.
36 Cross origin requests are only supported for HTTP.)
37 -->
38
39 <!-- add js libs (less, jquery) -->
40 <script src="js/less-1.1.4.min.js"></script>
41 <script src="js/jquery-1.7.min.js"></script>
42
43 <!-- S6 JS -->
44 <script src="js/jquery.slideshow.js"></script>
45 <script src="js/jquery.slideshow.counter.js"></script>
46 <script src="js/jquery.slideshow.controls.js"></script>
47 <script src="js/jquery.slideshow.footer.js"></script>
48 <script src="js/jquery.slideshow.autoplay.js"></script>
49 <script>
50 $(document).ready( function() {
51 Slideshow.init();
15 52
16 .slide { 53 // Example 2: Start Off in Outline Mode
17 font-family: 'Open Sans', Arial, sans-serif; 54 // Slideshow.init( { mode: 'outline' } );
18 55
19 color: rgb(102, 102, 102); 56 // Example 3: Use Custom Transition
20 text-shadow: 0 1px 1px rgba(0, 0, 0, .1); 57 // Slideshow.transition = transitionScrollUp;
21 } 58 // Slideshow.init();
59
60 // Example 4: Start Off in Autoplay Mode with Custom Transition
61 // Slideshow.transition = transitionScrollUp;
62 // Slideshow.init( { mode: 'autoplay' } );
63 } );
64 </script>
65
66 <!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
67 <!--[if IE]>
68 <script src="js/jquery.microsoft.js"></script>
69 <![endif]-->
70
71 </head>
72 <body>
73
74 <div class="layout">
75 <div id="header"></div>
76 <div id="footer">
77 <h1>分散 Database Jungle に関する研究</h1>
78 <h2>琉球大学大学院 情報工学専攻 修士2年次 大城信康</h2>
79 </div>
80 </div>
81
82 <div class="presentation">
83
84 <!-- add slides here; example -->
22 85
23 .slide h1, .slide h2, .slide h3 { 86 <div class='slide cover'>
24 color: rgb(51, 51, 51); 87 <h1>分散 Database Jungleに関する研究</h1>
25 } 88 <ul>
26 89 <p>琉球大学 大城信康
27 .slide pre { 90 <br>
28 font-family: 'Droid Sans Mono', 'Courier New', monospace; 91 Feb 3, 2013
29 font-size: 80%; 92 </p>
30 93 </ul>
31 padding: 5px 10px; 94 </div>
32 95
33 margin-top: 40px; 96 <div class='slide'>
34 margin-bottom: 40px; 97 <h1>概要</h1>
35
36 color: black;
37 background: rgb(240, 240, 240);
38 border: 1px solid rgb(224, 224, 224);
39 box-shadow: inset 0 2px 6px rgba(0, 0, 0, .1);
40 overflow: hidden;
41 }
42
43 .slide code {
44 font-family: 'Droid Sans Mono', 'Courier New', monospace;
45 color: black;
46 }
47
48 .slide h3 {
49 margin-top:-15px;
50 }
51
52 </style>
53 </head>
54 <body>
55
56 <section class='slides'>
57 <!-- Add your slides here. Delete or comment out the slides below. -->
58
59 <article class='cover'>
60 <h1>
61 分散 Database Jungle に関する研究
62 <br>
63
64 </h1>
65 <p>
66 大城 信康
67 <br>
68 Feb 3, 2013
69 </p>
70 </article>
71
72 <article>
73 <h3>
74 概要
75 </h3>
76 <p>非破壊的木構造データベースJungleに分散実装を行い掲示板システムに特化したデーターベースを作成し、その評価を行った。</p> 98 <p>非破壊的木構造データベースJungleに分散実装を行い掲示板システムに特化したデーターベースを作成し、その評価を行った。</p>
77 <p>分散データベースCassandraより2倍以上速く、分散環境下においては10倍以上速い結果も確認された。</p> 99 <p>分散データベースCassandraより2倍以上速く、分散環境下においては10倍以上速くなる結果も確認された。</p>
78 <br/> 100 <br/>
79 </article> 101 </div>
80 102
81 <article> 103 <div class='slide'>
82 <h3> 104 <h1>研究の背景と目的</h1>
83 研究の目的と背景
84 </h3>
85 <p>ウェブサービスにとってデータベースは必須であり、ウェブサービスの規模に比例してデータベースへの負荷も高まる。</p> 105 <p>ウェブサービスにとってデータベースは必須であり、ウェブサービスの規模に比例してデータベースへの負荷も高まる。</p>
86 <p>データベースの処理能力の高さはそのままウェブサービスの質に繋がるため、データベースのスケーラビリティの確保は重要である。</p> 106 <p>データベースの処理能力の高さはそのままウェブサービスの質に繋がるため、データベースのスケーラビリティの確保は重要である。</p>
87 <p>スケーラビリティ確保の方法としてデータ分散があるが、分散する方法により性能も変わってくる。</p> 107 <p>スケーラビリティ確保の方法としてデータ分散があるが、分散する方法により性能も変わってくる。</p>
88 <p>スケーラビリティのある分散データベースとしてJungleの実装を行う。</p> 108 <p>ウェブサービスのなかでも、コンテンツマネジメントシステムに合ったスケーラビリティの確保ができるデータベースの開発を行う。</>
89 </article> 109 </div>
90 110
91 111 <div class='slide'>
92 <article> 112 <h1>
93 <h3>
94 ウェブサービスにおけるデータベースの重要性 113 ウェブサービスにおけるデータベースの重要性
95 </h3> 114 </h1>
96 <p>ウェブサービスへの負荷が高まることは、データベースへの負荷が高まることでもある。</p> 115 <p>ウェブサービスへの負荷が高まることは、データベースへの負荷が高まることでもある。</p>
97 <p>データベースの性能が低ければ負荷に耐え切れずサービスはダウンする</p> 116 <p>データベースの性能が低ければ負荷に耐え切れずサービスはダウンする</p>
98 <p style="text-align:center;"> 117 <p style="text-align:center;">
99 <img src="./images/service_down.png"> 118 <img src="./images/service_down.png">
100 </p> 119 </p>
101 <p>そのため、データベースにはスケーラビリティが必要</p> 120 <p>そのため、データベースにはスケーラビリティが必要</p>
102 </article> 121 </div>
103 122
104 <article> 123 <div class='slide'>
105 <h3> 124 <h1>
106 スケーラビリティとは 125 スケーラビリティとは
107 </h3> 126 </h1>
108 <p>システムが負荷の増大に対して柔軟に拡張して対応できる性質</p> 127 <p>システムが負荷の増大に対して柔軟に拡張して対応できる性質</p>
109 <p>主に次の2つの方法によりシステムはスケールされる</p> 128 <p>主に次の2つの方法によりシステムはスケールされる</p>
110 <ul> 129 <ul>
111 <li><font color="blue">スケールアップ</font>:<br/>高価な単一マシンによる性能アップ</li> 130 <li><font color="blue">スケールアップ</font>:<br/>高価な単一マシンによる性能アップ</li>
112 <br/> 131 <br/>
113 <li><font color="red">スケールアウト</font>:<br/>汎用的なマシンを複数台用意することで性能アップ</li> 132 <li><font color="red">スケールアウト</font>:<br/>汎用的なマシンを複数台用意することで性能アップ</li>
114 </ul> 133 </ul>
115 <p>分散システムにおいては<font color="red">スケールアウト</font>によりスケーラビリティを高める</p> 134 <p>分散システムにおいては<font color="red">スケールアウト</font>によりスケーラビリティを高める</p>
116 </article> 135 <p style="text-align:center;">
117 136 <img style="" src="./images/scalability.png">
118 <article> 137 </p>
119 <h3> 138 </div>
139
140 <div class='slide'>
141 <h1>
120 データベースのスケーラビリティ 142 データベースのスケーラビリティ
121 </h3> 143 </h1>
122 <p>データベースのスケーラビリティを考えるとき、どういう用途で使用するかを考えるのが重要。</p> 144 <p>データベースのスケーラビリティを考えるとき、どういう用途で使用するかを考えるのが重要。</p>
123 <li>例えば、掲示板システムにおいては、書き込みと読み込みが速いことが求められる。</li> 145 <li>例えば、掲示板システムにおいては、書き込みと読み込みが速いことが求められる。</li>
124 <br/> 146 <br/>
125 <p>ウェブサービスは、サービスの内容によってスケーラビリティの確保の仕方も変わってくる。</p> 147 <p>ウェブサービスにおいても、どのようなサービスを行うかによってスケーラビリティの確保の仕方も変わってくる。</p>
126 <p>本研究で開発しているデータベースはコンテンツマネジメントシステム(CMS)を対象としている。</p> 148 <p>本研究で開発しているデータベースはコンテンツマネジメントシステム(CMS)を対象としている。</p>
127 <p style="text-align:center;"> 149 <br/>
128 <img style="" src="./images/scalability.png"> 150 </div>
129 </p> 151
130 152 <div class='slide'>
131 </article> 153 <h1>
132
133 <article>
134 <h3>
135 コンテンツマネジメントシステム(CMS) 154 コンテンツマネジメントシステム(CMS)
136 </h3> 155 </h1>
137 <p>Webコンテンツを構成するテキストや画像などのデジタルコンテンツを管理し配信するシステム。</p> 156 <p>Webコンテンツを構成するテキストや画像などのデジタルコンテンツを管理し配信するシステム。</p>
138 <li>例:ブログツール、Wiki</li> 157 <li>例:ブログツール、Wiki</li>
139 <p>分散コンテンツマネジメントシステムに求められること。</p> 158 <p>分散コンテンツマネジメントシステムに求められること。</p>
140 <li>Webコンテンツを分散して管理</li> 159 <li>Webコンテンツを分散して管理</li>
141 <li>スケールアウトするシステム</li> 160 <li>スケールアウトするシステム</li>
142 <p>データ全体の整合性に遅延がある、結果整合性でもよい。書き込みや読み込みを優先としたデータベースが必要。</p> 161 <p>データ全体の整合性に遅延がある、結果整合性でもよい。書き込みや読み込みを優先としたデータベースが必要。</p>
143 <p>そこで、非破壊的木構造データベースJungleの提案を行った。</p> 162 <p>そこで、非破壊的木構造データベースJungleの開発が行われた。</p>
144 </article> 163 <br/>
145 164 </div>
146 <article> 165
147 <h3>非破壊的木構造データベースJungle</h3> 166 <div class='slide'>
167 <h1>
168 非破壊的木構造データベースJungle
169 </h1>
148 <p>JungleはスケーラビリティのあるCMSの設計を目指して当研究室で開発されているデータベース。</p> 170 <p>JungleはスケーラビリティのあるCMSの設計を目指して当研究室で開発されているデータベース。</p>
149 <p>データを木構造で、さらに非破壊で保持する。</p> 171 <p>データを木構造で、さらに非破壊で保持する。</p>
150 <br/> 172 </div>
151 </article> 173
152 174 <div class='slide'>
153 <article> 175 <h1>
154 <h3>
155 非破壊的木構造 176 非破壊的木構造
156 </h3> 177 </h1>
157 <p>非破壊的木構造は一度作成したデータは変更しない</p> 178 <p>非破壊的木構造は一度作成したデータは変更しない</p>
158 <p>新しい木構造を作成することでデータの編集を行う</p> 179 <p>新しい木構造を作成することでデータの編集を行う</p>
159 <p style="text-align:center;"> 180 <p style="text-align:center;">
160 <img style="width:700px;" src="./images/non_destructive_tree_edit2.png"> 181 <img style="width:700px;" src="./images/non_destructive_tree_edit2.png">
161 </p> 182 </p>
162 <p></p> 183 </div>
163 </article> 184
164 185 <div class='slide'>
165 <article> 186 <h1>
166 <h3> 187 非破壊的木構造の利点
167 非破壊的木構造の利点 188 </h1>
168 </h3>
169 <p>非破壊的木構造は通常の木構造である破壊的木構造に比べ、以下のような利点を持つ</p> 189 <p>非破壊的木構造は通常の木構造である破壊的木構造に比べ、以下のような利点を持つ</p>
170 <ul> 190 <ul>
171 <li>一度作成したデータは変更されない</li> 191 <li>一度作成したデータは変更されない</li>
172 <li>データが変更されないため自由にコピーを作ることができる(いつでも読み込みが可能)</li> 192 <li>データが変更されないため自由にコピーを作ることができる(いつでも読み込みが可能)</li>
173 <li>ロックがすくない。ロックが必要なのは最新のルートノードを登録するときだけ</li> 193 <li>ロックがすくない。ロックが必要なのは最新のルートノードを登録するときだけ</li>
174 </ul> 194 </ul>
175 <p>ロックが少なく、いつでもコピーが可能なことから、非破壊的木構造はスケーラブルなシステムに有用となる</p> 195 <p>ロックが少なく、いつでもコピーが可能なことから、非破壊的木構造はスケーラブルなシステムに有用となる</p>
176 </article> 196 </div>
177 197
178 <article> 198 <div class='slide'>
179 <h3> 199 <h1>
180 Jungleの分散設計 200 Jungleの分散設計
181 </h3> 201 </h1>
182 <p>ここまでJungleに実装されている非破壊的木構造の利点について述べた。</p> 202 <p>ここまでJungleに実装されている非破壊的木構造の利点について述べた。</p>
183 <p>次に、Jungleにおける分散設計について述べる。</p> 203 <p>次に、Jungleにおける分散設計について述べる。</p>
184 <p>データ分散を行うにあたり、まず考えることはトポロジーの形成と他のノードからデータの伝搬の仕方である。</p> 204 <p>データ分散を行うにあたり、まず考えることはトポロジーの形成と他のノードからデータの伝搬の仕方である。</p>
185 <p>Jungleはこの問題に対し、ツリートポロジーを形成し、データ編集の際に発生するcommit logを他のノードに流すことで解決する。</p> 205 <p>Jungleはこの問題に対し、ツリートポロジーを形成し、データ編集の際に発生するオペレーションを他のノードに流すことで解決する。</p>
186 </article> 206 </div>
187 207
188 <article> 208 <div class='slide'>
189 <h3> 209 <h1>
190 Jungleの分散設計:トポロジー形成とログによるデータ分散 210 Jungleトポロジーの形成
191 </h3> 211 </h1>
192 <small> 212 <p>Jungleのトポロジー形成には当研究室で開発している並列分散フレームワークAliceを使用する。</p>
193 <table> 213 <p>Aliceは以下の機能が提供されている</p>
194 <tr> 214 <ul>
195 <th>commit log伝搬によるデータ分散</th> 215 <li>複数のノードによる分散トポロジーの設定</li>
196 </tr> 216 <li>トポロジー上でのデータアクセス機構</li>
197 <tr> 217 </ul>
198 <td> 218 <p>JungleにAliceを組み込み、Jungleのノード同士でトポロジーを形成する。</p>
199 <img src="./images/distributed_jungle.png"> 219 <p>Aliceの機能である他ノードへのデータアクセス機構を使用してデータ分散を行う。</p>
200 </td> 220 </ul>
201 </tr> 221 </div>
202 </table> 222
203 <p>サーバノード同士でツリートポロジーを形成する。データ編集をどのように行ったのかを示すログ commit log を伝搬させデータの分散を行う。</p> 223
204 </small> 224
205 </article> 225 <div class='slide'>
206 226 <h1>
207 <article> 227 分散設計: データ編集オペレーション
208 <h3> 228 </h1>
209 非破壊的木構造の利点を活かした分散設計 229 <p>Aliceにより、ネットワークトポロジーの作成と他サーバが持つデータアクセス機構を実装できた。</p>
210 </h3> 230 <p>次はどのデータを取得することでデータの分散を行うか考えなければならない。</p>
211 <p>Jungleで扱うつもりのデータは結果整合性でもよいCMSを想定していることを始めに説明した。</p> 231 <br>
212 <p>そこでJungleはMergeを使うことでデータの整合性をとることにした。</p> 232 <p>Jungleにはデータ編集に使われるオペレーションがある。</p>
213 <p>Mergeとは、2つ以上の変更を1つの変更にまとめることである。</p> 233 <p>データ編集に使われるオペレーションをそのまま他サーバノードへ流すことでデータの分散が行える。</p>
214 <p>分散システムにおいては、2つ以上のデータの更新が同じデータに対して行われていた場合、 234 <p>オペレーションには次の4つがある</p>
215 更新を受け取って新しいデータを作ることを指す。</p> 235 <ul>
216 <p>Mergeは自動で解決出来る場合とそうでない場合がある。</p> 236 <li>addNewChild:子ノードの追加を行う</li>
217 </article> 237 <li>deleteChildAt:指定したノードの削除を行う</li>
218 238 <li>putAttribute:子ノードにattributeに追加を行う</li>
219 239 <li>deleteAttribute:子ノードのattributeを削除する</li>
220 <article> 240 <br>
221 <h3> 241 </div>
222 Mergeによる更新の衝突を自然に解決 242
223 </h3> 243 <div class='slide'>
224 <small> 244 <h1>
225 <table style="font-size: 0.7em; width:100%;" > 245 データ編集オペレーション
226 <tr> 246 </h1>
227 <td><p style="margin-top:-5px; margin-bottom:-5px; text-align:center;"><img src="./images/tree_conflict.png"></p></td> 247 <p>子ノードを追加し、その子ノードにattributeを追加する場合次のノードオペレーションが実行される。</p>
228 </tr> 248 <ol>
229 <tr> 249 <li>[APPEND_CHILD:<-1>:pos:0]</li>
230 <td><p style="margin-top:-5px; margin-bottom:-5px; text-align:center;"><img src="./images/tree_conflict3.png"></p></td> 250 <li>[PUT_ATTRIBUTE:<-1,0>:key:mes,value:hello]</li>
231 </tr> 251 </ol>
232 </table> 252 <p>このノードオペレーションの実行結果を図に示す。</p>
233 <p style="margin-top:0px;">上の図は通常のデータ更新を示す</p> 253 <p style="text-align:center;">
234 <p style="margin-top:-20px;">下の図は、同じ木に対して2つのデータの更新があったが編集を無事終えるケースを示す</p> 254 <img src="./images/node_operation.png">
235 </small> 255 </p>
236 </article> 256 <p><font color="">トポロジー上でノードオペレーションを渡すことで同じ編集を行いデータの分散を行う。</font></p>
237 257 <br/>
238 258 <br/>
239 259 </div>
240 <article> 260
241 <h3> 261
242 Mergeによる更新の衝突が自然に解決できない場合 262 <div class='slide'>
243 </h3> 263 <h1>
244 <table style="font-size: 0.7em; width:100%;" > 264 Jungle分散実装
245 <tr> 265 </h1>
246 <td><p style="margin-top:-5px; margin-bottom:-5px; text-align:center;"><img src="./images/tree_conflict2.png"></p></td> 266 <p>以上の設計を元にJungleに分散実装を行った。</p>
247 </tr> 267 <p>以下の図はJungleにおけるデータ分散の様子を表している。</p>
248 </table> 268 <p style="text-align:center;">
249 <p>木の同じノードに対してデータの編集が行われた場合、どのような編集結果にすればよいかわからない。</p> 269 <img src="./images/distributed_jungle.png">
250 <p>どのような木が組まれ、どのようにデータを保存するかはアプリケーション毎に変わってくる。そのため、アプリケーション毎に 270 </p>
251 Mergeアルゴリズムは考えなくてはならない。</p> 271 <p>Aliceでトポロジーを形成後は、データ編集に使われたオペレーションを他サーバノードに送られる。</p>
252 272 <p>オペレーションを受信したノードはデータ編集を行う。他にサーバが繋がっている場合はそちらにもオペレーションを送る。</p>
253 </article> 273 <br/>
254 274 <br/>
255 <article> 275 </div>
256 <h3> 276
257 JungleとMergeの相性 277 <div class='slide'>
258 </h3> 278 <h1>
259 <p>Jungleは非破壊で過去のデータも保持しているため、更新時に過去のデータを参照して自然なMergeを行うことが可能。</p> 279 Jungle分散実装
260 <p>自然にMergeできない場合においても、アプリケーション毎にMergeアルゴリズムを設計することで対応する。</p> 280 </h1>
261 <p>Mergeが自動で行われるようになれば、Jungleで扱う木構造データは編集を自由に行うことができる。</p> 281 <p>これまでの実装でJungleのデータが分散が行われるようになった。</p>
262 <p>木構造データが自由に行えるようになれば、Jungleはデータのリクエストに対して手元のデータを返すことができる。</p> 282 <p>しかしもう1つ問題がある。複数のノードから書き込まれるデータの整合性を取る方法が必要である。</p>
263 <p>古いデータを編集されたものが更新されても、いずれはMergeにより最新のデータと合わせられるから。</p> 283 <p>JungleではこれをMergeを使うことで自動的に解決する。</p>
264 <p></p> 284 <p>Mergeとは2つ以上の変更の結果を受けて1つの変更に変えることである。</p>
265 </article> 285 <p>今回は、性能比較に用いる掲示板システムにMergeの実装を行った。</p>
266 286 <p>掲示板システムにおけるMergeを説明する。</p>
267 287 </div>
268 <article> 288
269 <h3> 289 <div class='slide'>
270 Jungleの分散実装 290 <h1>
271 </h3> 291 掲示板システムにおけるMerge
272 <p>以上がJungleにおける分散設計になる。</p> 292 </h1>
273 <br/> 293 <p>2つの状態をもつ掲示板の書き込みができる。この2つの書き込みから新しい書き込みを作る。</p>
274 <p>この分散設計を元にJungleのサーバノード同士でツリトポロジーを構成し、ログによるデータ分散を実装した。</p> 294 <p style="text-align:center;">
275 <p>また、Mergeの例として掲示板プログラムにおけるMergeの実装も行った。</p> 295 <img style="width:70%;" src="./images/bulletinboard_merge.png">
276 </article> 296 </p>
277 297 <p>掲示板はcommutativeなため、いつ書き込んでも良い。よってMergeが自動的に行える。</p>
278 298 <br/>
279 299 </div>
280 <article> 300
281 <h3> 301
282 Jungleの分散実装:掲示板システムにおけるMerge 302
283 </h3> 303
284 <p>Jungleではアプリケーション毎にMergeアルゴリズムを設計</p> 304 <div class='slide'>
285 <p>後述する性能比較に用いた掲示板システムにおけるMergeの実装を考える</p> 305 <h1>
286 <p>掲示板システムにおけるデータ構造を以下に示す</p>
287 <p style="text-align:center;">
288 <img src="./images/bulletinboard.png">
289 </p>
290 </article>
291
292 <article>
293 <h3>
294 Jungleの分散実装:掲示板システムにおけるMerge
295 </h3>
296 <small>
297 <table style="font-size: 0.7em; width:100%;" >
298 <tr>
299 <td><p>1</p></td>
300 <td><p style="margin-top:-5px; margin-bottom:-5px; text-align:center;"><img src="./images/merge_impl1.png"></p></td>
301 </tr>
302 <tr>
303 <td>2</td>
304 <td><p style="margin-top:-5px; margin-bottom:-5px; text-align:center;"><img src="./images/merge_impl2.png"></p></td>
305 </tr>
306 <tr>
307 <td>3</td>
308 <td><p style="margin-top:-5px; margin-bottom:-5px; text-align:center;"><img src="./images/merge_impl3.png"></p></td>
309 </tr>
310 </table>
311 </small>
312 </article>
313
314 <article>
315 <h3>
316 分散データベースJungleの評価 306 分散データベースJungleの評価
317 </h3> 307 </h1>
318 <p>分散データベースとしてJungleの性能を評価する。</p> 308 <p>分散データベースとしてJungleの性能を評価する。</p>
319 <p>分散Key-ValueデーターべースCassandraと比較を行う。</p> 309 <p>分散Key-ValueデーターべースCassandraと比較を行う。</p>
320 <p>比較方法は、Jungle, Cassandra をそれぞれバックエンドとした簡易掲示板を作成する。</p> 310 <p>比較方法は、Jungle, Cassandra をそれぞれバックエンドとした簡易掲示板を作成する。</p>
321 <p>掲示板に対してHTTP Requestで並列に読み込みと書き込みの負荷をかけ計測する。</p> 311 <p>掲示板に対してHTTP Requestで並列に読み込みと書き込みの負荷をかけ計測する。</p>
322 <p>レスポンスが返る平均時間と標準偏差を求めグラフ化する</p> 312 <p>レスポンスが返る平均時間と標準偏差を求めグラフ化する</p>
323 </article> 313 </div>
324 314
325 315
326 <article> 316 <div class='slide'>
327 <h3> 317 <h1>
328 JungleとCassandraの比較方法 318 実験内容
329 </h3> 319 </h1>
330 <p>実験は以下の2つを行う</p> 320 <p>実験は2つ行う</p>
331 <small> 321 <li>実験1:サーバを単体で起動し、複数のクライアントからの負荷をかける。</li>
332 <table style="font-size: 0.7em; width:100%;"> 322 <p style="text-align:center;">
333 <tr> 323 <img style="width:60%;" src="./images/cluster_request_server.png">
334 <th>実験1:サーバ単体への負荷</th><th>実験2:複数台のサーバに対する負荷</th> 324 </p>
335 </tr> 325 <p>サーバ単体の性能を比較する。</p>
336 <tr> 326 <p>クライアントの増加に対してサーバ1台にかかるリクエストも増加</p>
337 <td><img style="width:400px;" src="./images/cluster_request_server.png"></td> 327 </div>
338 <td><img style="width:400px;" src="./images/clients_request_servers.png"></td> 328
339 </tr> 329 <div class='slide'>
340 <tr> 330 <h1>
341 <td><p>複数のクライアントから単体のサーバへ負荷をかける</p></td> 331 実験内容
342 <td><p>複数のクライアントから複数のサーバへ負荷をかける</p></td> 332 </h1>
343 </tr> 333 <li>実験2:サーバを単体で起動し、複数のクライアントからの負荷をかける。</li>
344 </table> 334 <p style="text-align:center;">
345 <p>サーバ単体の性能と, 分散環境下における性能の2つを調べる。</p> 335 <img style="width:60%;" src="./images/clients_request_servers.png">
346 <p>分散環境下におけるノードは全て繋がっている</p> 336 </p>
347 </small> 337 <p>分散環境下における性能を比較する。</p>
348 </article> 338 <p>クライアントとサーバがともに増加するため、サーバ一台に対するリクエストは変わらず。</p>
349 339 <p>サーバが全体で受けるリクエストは増加する。</p>
350 <article> 340 </div>
351 <h3> 341
352 実験に使用するサーバの仕様 342 <div class='slide'>
353 </h3> 343 <h1>
354 <!-- 344 実験1:単体サーバへの負荷
355 <p>実験1:単体サーバへの負荷で使用するサーバ側</p> 345 </h1>
356 --> 346 <p style="text-align:center;">
357 <table style="font-size: 0.7em;"> 347 <img style="width:70%;" src="./images/cluster_request_server.png">
358 <tr> 348 </p>
359 <th></th><th>ブレードサーバ</th> 349 <p>レスポンス速度(縦軸の数値)が低い程良い</p>
360 </tr> 350 <p>クライアント(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p>
361 <tr> 351 </div>
362 <td>CPU</td> 352
363 <td>Intel(R) Xeon(R) CPU X5650@2.67GHz</td> 353 <div class='slide'>
364 </tr> 354 <h1>
365 <tr> 355 単体サーバへの負荷:読み込み負荷
366 <td>コア数</td> 356 </h1>
367 <td>24</td> 357 <object data="./images/bldsv12_read_bench.svg" type="image/svg+xml"></object>
368 </tr> 358 <p>Cassandraに比べJungleが全体的に良い結果を出している。</p>
369 <tr> 359 <p>台数が増える毎にJungleとCassandraの平均時間の差は離れている。</p>
370 <td>Memory</td> 360 <br/>
371 <td>132GB</td> 361 <br/>
372 </tr> 362 </div>
373 <tr> 363
374 <td>OS</td> 364
375 <td>Fedora 16</td> 365 <div class='slide'>
376 </tr> 366 <h1>
377 <tr> 367 単体サーバへの負荷:書き込み負荷
378 <td>HyperVisor</td> 368 </h1>
379 <td>なし(物理マシン)</td> 369 <object data="./images/bldsv12_write_bench.svg" type="image/svg+xml"></object>
380 </tr> 370 <p>読み込み同様JungleがCassandraよりもより結果を出している。</p>
381 </table> 371 <p>読み込み以上にCassandraとの差がついている。</p>
382 <small> 372 <br/>
383 <p style="">並列環境</p> 373 </div>
384 </small> 374
385 <table style="font-size: 0.7em; margin-top:-20px; "> 375
386 <tr> 376
387 <th></th><th>VMWareクラスタ</th><th>KVMクラスタ</th> 377 <div class='slide'>
388 </tr> 378 <h1>
389 <tr> 379 実験1の考察
390 <td>台数</td><td>48</td><td>12</td> 380 </h1>
391 </tr>
392 <tr>
393 <td>CPU</td>
394 <td>Intel(R) Xeon(R) CPU X5650@2.67GHz</td>
395 <td>Intel(R) Xeon(R) CPU X5650@2.67GHz</td>
396 </tr>
397 <tr>
398 <td>コア数</td>
399 <td>4</td>
400 <td>4</td>
401 </tr>
402 <tr>
403 <td>Memory</td>
404 <td>8GB</td>
405 <td>8GB</td>
406 </tr>
407 <tr>
408 <td>OS</td>
409 <td>Fedora 16</td>
410 <td>Fedora 16</td>
411 </tr>
412 <tr>
413 <td>HyperVisor</td>
414 <td>VMWare ESXi</td>
415 <td>KVM (Linux Fedora 16)</td>
416 </tr>
417 </table>
418
419 </article>
420
421
422 <article>
423 <h3>
424 実験1:単体サーバへの負荷
425 </h3>
426 <p style="text-align:center;">
427 <img style="width:80%;" src="./images/cluster_request_server.png">
428 </p>
429 </article>
430
431 <article>
432 <h3>
433 実験1:単体サーバへの負荷(読み込み)
434 </h3>
435 <small>
436 <p>ブレードサーバ一台に対して複数のクライアントからの負荷</p>
437 <table style="text-align:center;font-size:0.7em;">
438 <tr>
439 <td><img style="height:350px;" src="./images/bldsv12_read_bench.png"/></td>
440 </tr>
441 <tr>
442 <th style="text-align:center;">読み込みの実験結果</th>
443 </tr>
444 </table>
445 <p style="margin-top:0px;">JungleがCassandraより良い結果を示している</p>
446 <p style="margin-top:-20px;">クライアントが55台のときのJungleの最速とCassandraの最遅は3倍近く離れている</p>
447 </small>
448 </article>
449
450 <article>
451 <h3>
452 実験1:単体サーバへの負荷(書き込み)
453 </h3>
454 <small>
455 <p>ブレードサーバ一台に対して複数のクライアントからの負荷</p>
456 <table style="text-align:center;font-size:0.7em;">
457 <tr>
458 <td><img style="height:350px;" src="./images/bldsv12_write_bench.png"/></td>
459 </tr>
460 <tr>
461 <th style="text-align:center;">書き込みの実験結果</th>
462 </tr>
463 </table>
464 <p>読み込み同様Jungleのほうが良い結果を示している</p>
465 <p>読み込みよりJungleとCassandraの結果が重なる部分が減っている</p>
466 </small>
467 </article>
468
469 <article>
470 <h3>
471 実験1の考察
472 </h3>
473 <p>読み込み、書き込みともにJungleの性能がよく。平均だけみても2倍以上早い部分もある。</p> 381 <p>読み込み、書き込みともにJungleの性能がよく。平均だけみても2倍以上早い部分もある。</p>
474 <p>特に書き込みに関してはクライアントの数が増えるにつれ差が開いている。</p> 382 <p>特に書き込みに関してはクライアントの数が増えるにつれ差が開いている。</p>
475 <!-- 383 <!--
476 <p>要因の1つとしてCassandraはディスクへ書き込みを行うが、Jungleは全てのデータをオンメモリで扱っていることもある</p> 384 <p>要因の1つとしてCassandraはディスクへ書き込みを行うが、Jungleは全てのデータをオンメモリで扱っていることもある</p>
477 <p>これはある意味当然だが、もう1つ要因をあげられる</p> 385 <p>これはある意味当然だが、もう1つ要因をあげられる</p>
478 --> 386 -->
479 <p>これはJungleが全体的にロックが少ないことが要因としてあげられる。</li> 387 <p>これはJungleが全体的にロックが少ないことが要因としてあげられる。</p>
480 <p>Jungleは非破壊でデータの保持をするため、読み込みは自由に行える。書き込み時には木のコピーをとりルートノードを入れ替える 388 <p><font color="red">なぜロックが少ないか</font></p>
389 <p>Jungleは非破壊でデータの保持をするため、読み込みは自由に行える。書き込み時には木のコピーをとりルートノードを入れ替える
481 ときのみロックが発生する。</p> 390 ときのみロックが発生する。</p>
482 </article> 391 </div>
483 392
484 <article> 393 </div>
485 <h3> 394
486 実験2:分散環境下における負荷 395 <div class='slide'>
487 </h3> 396 <h1>
397 実験2:分散環境下における負荷
398 </h1>
488 <p style="text-align:center;"> 399 <p style="text-align:center;">
489 <img style="width:80%;" src="./images/clients_request_servers.png"> 400 <img style="width:70%;" src="./images/clients_request_servers.png">
490 </p> 401 </p>
491 </article> 402 <p>レスポンス速度(縦軸の数値)が低い程良い</p>
492 403 <p>クライアントとノードの数(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p>
493 <article> 404 </div>
494 <h3> 405
495 実験2:分散環境下における読み込み 406
496 </h3> 407 <div class='slide'>
497 <small> 408 <h1>
498 <table style="text-align:center;font-size:0.7em;"> 409 分散環境下における負荷:読み込み
499 <tr> 410 </h1>
500 <td><img style="height:350px;" src="./images/distributed_read_bench.png"> 411 <object data="./images/distributed_read_bench.svg" type="image/svg+xml"></object>
501 </tr> 412 <p>QUORUM(緑)はCassandraが3ノードに書き込んでいる結果を示す。</p>
502 <tr> 413 <p>Jungle同じレスポンスを維持している。</p>
503 <th style="text-align:center;">読み込みの実験結果</th> 414 <p>Jungleは1秒から5秒をキープ</p>
504 </tr> 415 <br/>
505 </table> 416 </div>
506 <p>CassandraはConsistency Level ONE(赤)とQUORUM(緑)両方を測定</p> 417
507 <p>Jungleは1秒から5秒をキープ</p> 418
508 </small> 419 <div class='slide'>
509 </article> 420 <h1>
510 421 分散環境下における負荷:書き込み
511 <article> 422 </h1>
512 <h3> 423 <object data="./images/distributed_write_bench.svg" type="image/svg+xml"></object>
513 実験2:分散環境下における書き込み 424 <p>QUORUM(緑)はCassandraが3ノードに書き込んでいる結果を示す。</p>
514 </h3> 425 <p>Jungle同じレスポンスを維持している。</p>
515 <small> 426 <p>Jungleは5.5秒から7.3秒をキープ</p>
516 <table style="text-align:center;font-size:0.7em;"> 427 <br/>
517 <tr> 428 <br/>
518 <td><img style="height:350px;" src="./images/distributed_write_bench.png"> 429 </div>
519 </tr> 430
520 <tr> 431 <div class='slide'>
521 <th style="text-align:center;">書き込みの実験結果</th> 432 <h1>
522 </tr>
523 </table>
524 <p>CassandraはConsistency Level ONE(赤)とQUORUM(緑)両方を測定</p>
525 <p>Jungleは5.5秒から7.3秒をキープ</p>
526 </small>
527 </article>
528
529
530 <article>
531 <h3>
532 実験2の考察 433 実験2の考察
533 </h3> 434 </h1>
534 <p>こちらもJungleがCassadraより良い結果を示した。実験1よりも差がでている。</p> 435 <p>こちらもJungleがCassadraより良い結果を示した。実験1よりも差がでている。</p>
535 <p>Jungleのグラフが横ばいになっていることに注目したい。</p> 436 <p>Jungleのグラフが横ばいになっていることに注目したい。</p>
536 <!-- 437 <!--
537 <p>Cassandraはノードの数が増えるに従いデータを取りにいくノードも増えることでレスポンスが遅くなっている。</p> 438 <p>Cassandraはノードの数が増えるに従いデータを取りにいくノードも増えることでレスポンスが遅くなっている。</p>
538 --> 439 -->
539 <p>Jungleはリクエストに対し手元にあるデータを返す。そのためノードの数が増えてもレスポンスの早さを維持できる。</p> 440 <p>Jungleはリクエストに対し手元にあるデータを返す。そのためノードの数が増えてもレスポンスの早さを維持できる。</p>
540 <p>Cassandraはデータを持っている数台のノードに読み込みに行くという作業が入るためJungleより遅くなってしまう</p> 441 <p>Cassandraはデータを持っている数台のノードに読み込みに行くという作業が入るためJungleより遅くなってしまう</p>
541 <p>Jungleは同期を取らないためデータ全体の整合性は落ちるが、分散管理システムを参考にした設計の有用性を示すことができた。</p> 442 <p>ただしJungleは全て非同期でデータの伝搬を行うため、データ全体の整合性は落ちる</p>
542 </article> 443 </div>
543 444
544 445 <div class='slide'>
545 <article> 446 <h1>
546 <h3>
547 まとめ 447 まとめ
548 </h3> 448 </h1>
549 <p>本研究では非破壊的木構造Jungleに分散データベースの実装を行った</p> 449 <p>本研究では非破壊的木構造Jungleに分散データベースの実装を行った</p>
550 <p>非破壊的木構造における利点を述べ、スケーラビリティの高い分散版管理システムとの類似性を述べた</p> 450 <p>非破壊的木構造における利点を述べ、分散実装を行った。</p>
451 <p>分散実装ではAliceを用いたトポロジー形成により、他ノードへデータ編集のオペレーションを送ることで
452 実装を行った。</p>
453 <p>データの整合性に関してはJungle側がMergeにより自動的にMergeを行うことで解決することを述べた。</p>
551 <p>Mergeアルゴリズムの1つとして掲示板プログラムにおけるMergeについて設計・実装を行った</p> 454 <p>Mergeアルゴリズムの1つとして掲示板プログラムにおけるMergeについて設計・実装を行った</p>
552 <p>性能比較の実験のためJungle、Cassandraで利用できる簡易掲示板の作成を行った</p> 455 <p>性能比較の実験のためJungle、Cassandraで利用できる簡易掲示板の作成を行った</p>
553 <p>実験は単体サーバと分散環境下において行い、どちらともCassandraよりよい結果をえることができた</p> 456 <p>実験は単体サーバと分散環境下において行い、どちらともCassandraより平均時間が最低でも2倍以上速いという結果を示すことができた。</p>
554 </article>
555
556 <!-- 457 <!--
557 <article> 458 <p>特にQUORUMとの差は数十倍になるときもあった。</p>
558 <h3> 459 -->
460 <br/>
461 </div>
462
463 <div class='slide'>
464 <h1>
559 今後の課題 465 今後の課題
560 </h3> 466 </h1>
561 <p>push/pull方式による分断耐性の実装</p>
562 <ul>
563 <li>現実装ではJungleはデータ編集が行われた際に発生するログを非同期で他サーバノードへと送信している</li>
564 <li>だがこの方法では接続が切れた際に再接続を行ったノードが全てのデータをとることができない</li>
565 <li>そこで非同期とは別に同期をとり他ノードとに差分となるデータを送るということを行いたい</li>
566 <li>これは分散管理システムにおけるpush/pull APIにあたる</li>
567 </ul>
568 </article>
569 -->
570 <article>
571 <h3>
572 今後の課題
573 </h3>
574 <p>データ分割の実装</p>
575 <ul>
576 <li>現在の実装は全てのノードで全てのデータを持たせている</li>
577 <li>この方法ではメモリの使用量が高いこととネットワーク帯域への負荷が懸念される</li>
578 <li>ノード単位で保持するデータを分ける実装が必要</li>
579 <li>その場合、木構造単位でノード毎にデータを分ける</li>
580 <li>持っていないデータの要求が来た場合は、データを持っているノードに取りに行くようにする</li>
581 </ul>
582 </article>
583
584 <article>
585 <h3>
586 今後の課題
587 </h3>
588 <p>Mergeアルゴリズムの設計</p> 467 <p>Mergeアルゴリズムの設計</p>
589 <ul> 468 <ul>
590 <li>JungleはMergeを使うことで更新データ衝突の問題を解決する。</li> 469 <li>JungleはMergeを使うことで更新データ衝突の問題を解決する。</li>
591 <li>今回実装した掲示板プログラムにおけるMergeは単純なもの。</li> 470 <li>今回実装した掲示板プログラムにおけるMergeは単純なもの。</li>
592 <li>他のアプリケーションではどのようにMergeを行うのか考察が必要。</li> 471 <li>他のアプリケーションではどのようにMergeを行うのか考察が必要。</li>
593 </ul> 472 </ul>
594 </article> 473 </div>
595 474
596 475
597 <article> 476
598 <h3> 477 <div class='slide'>
478 <h1>
599 今後の課題 479 今後の課題
600 </h3> 480 </h1>
601 <p>過去のデータの掃除について</p> 481 <p>過去のデータの掃除について</p>
602 <ul> 482 <ul>
603 <li>Jungleは非破壊でデータを保持するため過去のメモリの使用量が大きい</li> 483 <li>Jungleは非破壊でデータを保持するため過去のメモリの使用量が大きい</li>
604 <li>ある程度の単位で過去のデータの掃除を行いたい</li> 484 <li>ある程度の単位で過去のデータの掃除を行いたい</li>
605 <li>そのためにはどのノードがどのデータを持っているかという情報を扱うことが必要</li> 485 <li>そのためにはどのノードがどのデータを持っているかという情報を扱うことが必要</li>
606 <li>どれくらいデータが古くなると掃除を行うか判断が必要</li> 486 <li>どれくらいデータが古くなると掃除を行うか判断が必要</li>
607 </ul> 487 </ul>
608 </article> 488 </div>
609 489
610 <article> 490
611 <h3> 491 <div class='slide'>
612 </h3> 492 <h1>
613 <p></p> 493
614 <ul> 494 </h1>
615 </ul> 495
616 </article> 496 </div>
617 497
618 <article> 498 <div class='slide'>
619 <h3> 499 <h1>
620 Mergeは必ずできるのか 500
621 </h3> 501 </h1>
622 <p>Mergeを必ず行うことは難しい</p> 502
623 <p>例えば、更新するデータが画像だった場合、2つの画像のデータから新しい画像を作るわけにはいかない。</p> 503 </div>
624 <p>後に更新したものを優先するといった方法をとるか、ユーザの選択に委ねるしかない。</p> 504
625 </article> 505 <div class='slide'>
626 506 <h1>
627
628 <article>
629 <h3>
630 分散Key-ValueストアCassandraの特徴 507 分散Key-ValueストアCassandraの特徴
631 </h3> 508 </h1>
632 <small style="line-height:30px;">
633 <p>ring型トポロジーを形成。ring上にはHash値があり、書き込むデータのキーのハッシュ値により書き込むノードを決定</p> 509 <p>ring型トポロジーを形成。ring上にはHash値があり、書き込むデータのキーのハッシュ値により書き込むノードを決定</p>
634 <p>1つのデータの複製を最大何とるかというReplication factorの設定がある。</p> 510 <p>1つのデータの複製を最大何とるかというReplication factorの設定がある。</p>
635 <p>Consistency Levelというデータの読み書きの際に何台のノードから読み書きするかを決定できる</p> 511 <p>Consistency Levelというデータの読み書きの際に何台のノードから読み書きするかを決定できる</p>
636 <p>Consistency LevelにはONE,QUORUM,ALLがある。QUORUMはReplication factorの数/2+1 のノードに読み書きする。</p> 512 <p>Consistency LevelにはONE,QUORUM,ALLがある。QUORUMはReplication factorの数/2+1 のノードに読み書きする。</p>
637 </small> 513 <p style="text-align:center;">
638 <p>
639 <img style="margin-top:-30px;" src="./images/consistency_quorum.png"> 514 <img style="margin-top:-30px;" src="./images/consistency_quorum.png">
640 </p> 515 </p>
641 </article> 516 </div>
642 517
643 518 <div class='slide'>
644 <article> 519 <h1>
645 <h3> 520 実験に使用するサーバの仕様
646 Jungleの分散設計:分散版管理システム 521 </h1>
647 </h3> 522 <table style="font-size: 0.7em;">
648 <p>Jungleは分散設計を行うにあたってGitやMercurialといった分散版管理システムを意識している</p> 523 <tr>
649 <p style="margin-top:-10px;">分散版管理システムとは多人数によるソフトウェア開発において変更履歴を管理するシステム</p> 524 <th></th><th>ブレードサーバ</th>
650 <p style="margin-top:-10px;">分散版管理システムは次の特徴とAPIを持つ</p> 525 </tr>
651 <ul> 526 <tr>
652 <li>開発者それぞれがリポジトリのクローンしてローカルに持ち、開発はローカルのリポジトリを通すことで行われる</li> 527 <td>CPU</td>
653 <li>ローカルのリポジトリは独立に存在し、サーバ上にある他人のリポジトリから変更履歴をとることができる。また自身の変更履歴を伝えることもできる</li> 528 <td>Intel(R) Xeon(R) CPU X5650@2.67GHz</td>
654 <li>データ更新時に先に別の更新が入っていた(衝突)場合はMergeによりデータの整合性をとる</li> 529 </tr>
655 </ul> 530 <tr>
656 </article> 531 <td>コア数</td>
657 532 <td>24</td>
658 <article> 533 </tr>
659 <h3> 534 <tr>
660 Jungleの分散設計:分散版管理システム 535 <td>Memory</td>
661 </h3> 536 <td>132GB</td>
662 <p>分散版管理システムAPI</p> 537 </tr>
663 <ul style="margin-top:-20px;"> 538 <tr>
664 <li>commit:データに変更を加えたことをリポジトリに登録</li> 539 <td>OS</td>
665 <li>push:ローカルのリポジトリで行った変更履歴を他のリポジトリへまとめて送る</li> 540 <td>Fedora 16</td>
666 <li>pull:他のリポジトリからの変更履歴をまとめて受け取る</li> 541 </tr>
667 </ul> 542 <tr>
668 <p style="text-align:center;"> 543 <td>HyperVisor</td>
669 <img style="height:200px;" src="./images/distributed_repository.png"> 544 <td>なし(物理マシン)</td>
670 </p> 545 </tr>
671 <small> 546 </table>
672 <p>分版版管理システムはリポジトリが壊れても別のリポジトリよりデータを復旧できることと、push/pullそれとMergeによる整合性 547 <small>
673 の確保で、高いスケーラビリティを持っている</p> 548 <p style="">並列環境</p>
674 </small> 549 </small>
675 </article> 550 <table style="font-size: 0.7em; margin-top:-20px; ">
676 551 <tr>
677 <article> 552 <th></th><th>VMWareクラスタ</th><th>KVMクラスタ</th>
678 <h3> 553 </tr>
679 Jungleの分散設計:分散版管理システム 554 <tr>
680 </h3> 555 <td>台数</td><td>48</td><td>12</td>
681 <p>Jungleと分散版管理システムには似通った点がある</p> 556 </tr>
682 <li>どちらもデータのコピーが自由</li> 557 <tr>
683 <li>データ更新しても過去のデータに影響を与えない</li> 558 <td>CPU</td>
684 <br/> 559 <td>Intel(R) Xeon(R) CPU X5650@2.67GHz</td>
685 <p><font color="red">同じAPIを実装することで、分散版管理システムと同じく高いスケーラビリティが期待できる</font></p> 560 <td>Intel(R) Xeon(R) CPU X5650@2.67GHz</td>
686 <p>具体的には</p> 561 </tr>
687 <ul> 562 <tr>
688 <li>pushやpullによる定期的なデータの更新</li> 563 <td>コア数</td>
689 <li>Mergeによる更新データ衝突の解決</li> 564 <td>4</td>
690 </ul> 565 <td>4</td>
691 </article> 566 </tr>
692 567 <tr>
693 568 <td>Memory</td>
694 569 <td>8GB</td>
695 570 <td>8GB</td>
696 </section> 571 </tr>
697 572 <tr>
698 </body> 573 <td>OS</td>
574 <td>Fedora 16</td>
575 <td>Fedora 16</td>
576 </tr>
577 <tr>
578 <td>HyperVisor</td>
579 <td>VMWare ESXi</td>
580 <td>KVM (Linux Fedora 16)</td>
581 </tr>
582 </table>
583
584 </div>
585
586
587
588
589
590
591 </div> <!-- presentation -->
592 </body>
699 </html> 593 </html>