comparison paper/conclusion.tex @ 69:4f31182c8244

fixed
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Sat, 01 Feb 2014 22:41:24 +0900
parents d770a2b534b3
children 498679da05cf
comparison
equal deleted inserted replaced
68:01fadc801c18 69:4f31182c8244
3 \section{まとめ} 3 \section{まとめ}
4 本研究では, まず初めにRDBとNoSQLの説明を行い, 既存のNoSQLであるCassandra, MongoDB, Neo4jが 4 本研究では, まず初めにRDBとNoSQLの説明を行い, 既存のNoSQLであるCassandra, MongoDB, Neo4jが
5 スケーラビリティをどのように確保しているかを述べた. 5 スケーラビリティをどのように確保しているかを述べた.
6 次に木構造データベースJungleで使われている非破壊的木構造について述べ, 破壊的 6 次に木構造データベースJungleで使われている非破壊的木構造について述べ, 破壊的
7 木構造に比べロックが少ないというメリットがあることを論じた. 7 木構造に比べロックが少ないというメリットがあることを論じた.
8 Jungleは非破壊的木構造により過去のデータを保持することでMergeを行うことができる. 8 Jungleは非破壊的木構造により過去のデータを保持することでMergeを行うことができる等, 分散管理システム
9 そのため, 分散バージョン管理システムを参考に分散設計を行った. 9 と似た分散設計が行えることを述べた.
10 Jungleの分散設計では当研究室で開発している並列分散フレームワークAliceを用いた. 10 また, Jungleの分散設計では当研究室で開発している並列分散フレームワークAliceを用いた.
11 Aliceにより自由にトポロジーを組め, 他サーバノードへのデータアクセス機構を手に入れることができた. 11 Aliceにより自由にトポロジーを組むことができ, 他サーバノードへのデータアクセス機構を手に入れることができた.
12 Jungleの分散実装ではデータの編集履歴であるTreeOperationLogをAliceが使用できるようにし, 木の名前と 12 Jungleの分散実装ではデータの編集履歴であるTreeOperationLogをAliceが使用できるようにし, 木の名前と
13 いった必要な情報を追加することでデータの分散を行った. 13 いった必要な情報を追加することでデータの分散を行った.
14 また, Jungleに元々設計されていたJournalを使ってログをディスクへ書き出すことで永続性の実装を行った 14 また, Jungleに元々設計されていたJournalを使ってログをディスクへ書き出すことで永続性の実装を行った
15 最後に簡易掲示板を作成, Cassandraとの性能比較を行った. 15 最後に簡易掲示板を作成し, Cassandraとの性能比較を行った.
16 読み込み, 書き込みの負荷をかける実験を2つ行った. 16 読み込み, 書き込みの負荷をかける実験を2つ行った.
17 1つの実験ではサーバノード1台に対し複数のクライアントから負荷をかけた. 17 1つの実験ではサーバノード1台に対し複数のクライアントから負荷をかけた.
18 2つめの実験では複数のクライアントに対し同じ数のサーバノードを用意し数を増やしていき負荷を高めた. 18 2つめの実験では複数のクライアントに対し同じ数のサーバノードを用意し数を増やしていき負荷を高めた.
19 どちらの実験もJungleがCassandraよりも良い結果を示すことを確認した. 19 どちらの実験もJungleがCassandraよりも良い結果を示すことを確認した.
20 20
21 21
22 \section{今後の課題} 22 \section{今後の課題}
23 \subsection{データ分割の実装} 23 \subsection{データ分割の実装}
24 現在Jungleの分散実装は全てのデータを全てのノードで保持している. 24 現在Jungleの分散実装は全てのデータを全てのノードで保持させる実装である.
25 この方法ではメモリの使用量が高いこととネットワーク帯域に対しての 25 だが, この方法ではメモリの使用量が高いこととネットワーク帯域に対しての
26 負荷が懸念される. 26 負荷が懸念される.
27 そのため, ノード単位で保持するデータを分ける実装が必要になる. 27 そのため, ノード単位で保持するデータを分ける実装が必要になる.
28 ノード毎に木構造単位で別々のデータを保持し, 持っていない木のデータ 28 ノード毎に木構造単位で別々のデータを保持し, 持っていない木のデータ
29 に対して要求がくると他からとってきて返すといった機能が必要になる. 29 に対して要求がくると他からとってきて返すといった機能が必要になる.
30 30
35 今回, JungleにおけるMergeの例として掲示板プログラムにおけるMergeについて述べた. 35 今回, JungleにおけるMergeの例として掲示板プログラムにおけるMergeについて述べた.
36 だが掲示板のような単純なMergeですむアプリケーションは少ない. 36 だが掲示板のような単純なMergeですむアプリケーションは少ない.
37 また, アプリケーション毎でデータの保存の仕方といったものも違ってくる. 37 また, アプリケーション毎でデータの保存の仕方といったものも違ってくる.
38 そのため, アプリケーションに合ったMergeアルゴリズムを設計しなければならない. 38 そのため, アプリケーションに合ったMergeアルゴリズムを設計しなければならない.
39 39
40 \subsection{分断耐性の実装} 40 \subsection{pull/push機能の実装}
41 現在の実装のJungleは, プログラムの起動時にノードと接続を行う. 41 現在の実装のJungleは, プログラムの起動時に複数ノードが接続をしトポロジーを形成する.
42 プログラムの途中で接続がきれるとトポロジーがくずれたままになる. 42 プログラムの途中で接続がきれるとトポロジーがくずれたままになる.
43 接続がきれたJungleは単独では稼働し続けるが, 復帰を行えるようにしたい. 43 接続がきれたJungleは単独では稼働し続けるが, トポロジーへの復帰を行えるようにしたい.
44 そのためにはトポロジーに割り当てられた際に他ノードから自分の持っているデータとの 44 そのためにはトポロジーに割り当てられた際に他ノードから自分の持っているデータとの
45 差分のデータを流してもらうといった機能が必要になってくる. 45 差分のデータを流してもらうといった分散管理システムにおけるpull/push APIの機能が必要になってくる.
46 46
47 \subsection{過去のデータの掃除について} 47 \subsection{過去のデータの掃除について}
48 Jungleは非破壊でデータを保持し続けるため, メモリの使用量が大きい. 48 Jungleは非破壊でデータを保持し続けるため, メモリの使用量が大きい.
49 ある程度の単位で過去のデータの掃除を行いたい. 49 ある程度の単位で過去のデータの掃除を行いたい.
50 今回分散実装を行ったことで, 多数のノードでデータが保持され, その内の数台が 50 今回分散実装を行ったことで, 多数のノードでデータが保持され, その内の数台が