Mercurial > hg > Papers > 2014 > nobuyasu-master
annotate paper/chapter3.tex @ 56:1d07365c60ff
Writed conclstion
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 31 Jan 2014 21:37:40 +0900 |
parents | faa708c2958b |
children | c5c761588168 |
rev | line source |
---|---|
50 | 1 \chapter{分散データベースJungleの設計} |
10
02c7fc1cda10
Writed description of TreeOperationLog
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
2 |
56
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
3 \section{分散バージョン管理システムによるデータの分散} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
4 Jungle は Git や Mercurial といった分散バージョン管理システムの機能を参考に作られている. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
5 分散バージョン管理システムとは, 多人数によるソフトウェア開発において変更履歴を管理するシステムである. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
6 % 反対の意味の言葉として集中型バージョン管理システムがある. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
7 分散管理システムでは開発者それぞれがローカルにリポジトリのクローンを持ち, 開発はこのリポジトリを通すことで進められる(図\ref{fig:distributed_repo}). |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
8 ローカルのリポジトリは独立に損刺し, サーバ上にあるリポジトリや他人のリポジトリで行われた変更履歴を取り込みアップデートにかけることができる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
9 また逆に, ローカルのリポジトリに開発者自身がかけたアップデートを他のリポジトリへと反映させることもできる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
10 分散管理システムでは, どれかリポジトリが壊れたとしても, 別のリポジトリからクローンを行うことができる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
11 ネットワークに障害が発生しても, ローカルにある編集履歴をネットワーク復旧後に伝えることができる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
12 そのため, 可用性と分断耐性が高いと言える. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
13 % 分散管理システムは結果整合性をとることを述べる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
14 % 結果整合性の話を先にどっかでしたほうがいいかも |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
15 \begin{figure}[htpb] |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
16 \begin{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
17 \includegraphics[scale=0.7]{figures/distributed_repository.pdf} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
18 \caption{分散バージョン管理システム} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
19 \label{fig:distributed_repo} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
20 \end{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
21 \end{figure} |
11 | 22 |
56
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
23 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
24 \subsection{マージによるデータ変更衝突の解決} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
25 分散管理システムでは, データの更新時において衝突が発生する時がある. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
26 それは, 分散管理システムを参考にしている Jungle においても起こる問題である. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
27 データの変更を行うときには, 元のデータに編集が加えられている状態かもしれない. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
28 Jungle はリクエストがきた場合, 現在もっているデータを返す. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
29 そのためデータは最新のものであるかは保証されない. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
30 この場合, 古いデータに編集が加えられ, それを更に最新のデータへ伝搬させなければならない. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
31 このように他のリポジトリにより先にデータ編集が行われており, データの伝搬が素直にできない状態を |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
32 衝突という. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
33 この衝突を解決する手段が必要である. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
34 分散管理システムでは衝突に対してマージと呼ばれる作業で解決をはかる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
35 マージは, 相手のリポジトリのデータ編集履歴を受け取り, ローカルにあるリポジトリの編集と合わせる作業である. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
36 データ衝突に対して Jungle はアプリケーションレベルでのマージを実装して貰うことで解決をはかる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
37 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
38 以下にマージが必要な場合とそうでない場合のデータ編集についての図を示す(図\ref{fig:tree_conflict1},\ref{fig:tree_conflict2},\ref{fig:tree_conflict3}). |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
39 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
40 \begin{figure}[htpb] |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
41 \begin{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
42 \includegraphics[scale=0.48]{figures/tree_conflict.pdf} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
43 \caption{衝突の発生しないデータ編集} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
44 \label{fig:tree_conflict1} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
45 \end{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
46 \end{figure} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
47 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
48 \begin{figure}[htpb] |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
49 \begin{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
50 \includegraphics[scale=0.48]{figures/tree_conflict3.pdf} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
51 \caption{自然に衝突を解決できるデータ編集} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
52 \label{fig:tree_conflict2} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
53 \end{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
54 \end{figure} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
55 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
56 \begin{figure}[htpb] |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
57 \begin{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
58 \includegraphics[scale=0.48]{figures/tree_conflict2.pdf} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
59 \caption{衝突が発生するデータ編集} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
60 \label{fig:tree_conflict3} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
61 \end{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
62 \end{figure} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
63 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
64 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
65 \section{ネットワークトポロジーの形成} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
66 分散管理システムを参考に Jungle でもそれぞれのデータベースが独立に |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
67 動くようにしたい. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
68 そのために必要なことはトポロジーの形成と, サーバノード間でのデータアクセス機構である. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
69 また, データ分散のために形成したトポロジー上で扱うデータを決めなければならない. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
70 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
71 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
72 \subsection{ツリートポロジーの形成} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
73 分散データーベス Jungle で形成されるネットワークトポロジーはツリー構造を想定している. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
74 ツリー構造ならば, データの整合性をとる場合, 一度トップまでデータを伝搬させることで行える. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
75 トップもしくはトップまでの間にあるサーバノードでデータ伝搬中に衝突が発生したらマージを行い, マージの結果を改めて伝搬すれば |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
76 よいからである. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
77 また, リング型, スター型, メッシュ側ではデータ編集の結果を他サーバノードに流すとき |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
78 流したデータが自分自身にくることにより発生するループに気をつける必要がある. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
79 ツリー構造の場合は, サーバノード同士の繋がりで閉路が無い. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
80 そのため, 自分自身が行ったデータ編集の履歴を繋がっているノードに送信するだけですむ. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
81 このルーティングの方式はスプリットホライズンと呼ばれるものである. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
82 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
83 \begin{figure}[htpb] |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
84 \begin{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
85 \includegraphics[scale=0.70]{figures/network_topology_tree.pdf} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
86 \caption{ツリー型のNetwork Topology} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
87 \label{fig:topology_tree} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
88 \end{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
89 \end{figure} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
90 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
91 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
92 \subsection{トポロジーの形成手段} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
93 Jungle で使用するネットワークトポロジーはツリー型を考えているが, リング型やメッシュ型といった |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
94 他のネットワークトポロジーによる実装に関しても試す余地はある. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
95 そのため, ツリーだけでなく, 自由にネットワークトポロジーの形成を行えるようにしたい. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
96 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
97 \begin{figure}[htpb] |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
98 \begin{minipage}{0.5\hsize} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
99 \begin{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
100 \includegraphics[scale=0.7]{figures/network_topology_ring.pdf} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
101 \caption{リング型のトポロジー} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
102 \label{fig:topology_ring} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
103 \end{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
104 \end{minipage} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
105 \begin{minipage}{0.5\hsize} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
106 \begin{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
107 \includegraphics[scale=0.7]{figures/topology_mesh.pdf} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
108 \caption{メッシュ型のトポロジー} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
109 \label{fig:topology_mesh} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
110 \end{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
111 \end{minipage} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
112 \end{figure} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
113 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
114 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
115 そこで当研究室で開発を行っている並列分散フレームワークである Alice を使用する. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
116 Alice はユーザが望んだマシンへの接続や必要なデータへのアクセスを行う機構と, 接続トポロジー |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
117 形成機能を提供している. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
118 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
119 % トポロジー形成の説明をする. 重要さなども。 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
120 % トポロジーの形成は容易ではない. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
121 % Alice が必要な機能を提供してくれることを述べる |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
122 % Alice はトポロジー形成の機能を提供している |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
123 % トポロジー間でのデータの受け渡す機能も提供している |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
124 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
125 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
126 \section{並列分散フレームワークAlice} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
127 Alice は当研究室で開発している並列分散フレームワークである. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
128 Alice はデータを DataSegment, タスクを CodeSegment という単位で扱うプログラミングを提供している. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
129 コードの部分となる CodeSegment は, 計算に必要なデータである DataSegment が揃い次第実行が行われる(図\ref{fig:cs_ds}). |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
130 CodeSegment の結果により出力される新たなデータでは, 別の CodeSegment が実行されるための DataSegment となる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
131 DataSegment と CodeSegment の組み合わせにより並列・分散プログラミングの依存関係が表される. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
132 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
133 \begin{figure}[htpb] |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
134 \begin{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
135 \includegraphics[scale=0.70]{figures/cs_ds.pdf} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
136 \caption{DataSegment と CodeSegment によるプログラムの流れ} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
137 \label{fig:cs_ds} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
138 \end{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
139 \end{figure} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
140 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
141 \subsection{MessagePack によるシリアライズ} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
142 Alice では DataSegment のデータ表現に MessagePack(http://msgpack.org) を利用している. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
143 MessagePack はオブジェクトをバイナリへと変換させるシリアライズライブラリである. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
144 Alice によりネットワークを介してデータにアクセスするときは, そのデータが MessagePack でシリアライズが |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
145 行えることが条件である. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
146 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
147 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
148 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
149 \section{Jungle のデータ分散} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
150 Alice によりトポロジーの形成とデータアクセスの機構が提供された. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
151 後はデータ分散の為にどのデータをネットワークに流すのか決めなければならない. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
152 そこで選ばれたのが TreeOperationLog である. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
153 TreeOperationLog はデータ編集の履歴になる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
154 どの Node にどのような操作をしたのかという情報が入っている. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
155 この TreeOperationLog を Alice を使って他サーバノードに送り, データの編集をしてもらうことで |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
156 同じデータを持つことが可能となる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
157 Alice を用いるため, この TreeOperationLog は MessagePack によりシリアライズ可能な形にすることが |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
158 必要である. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
159 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
160 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
161 \subsection{CAP 定理と Jungle} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
162 ここまでの Jungle の設計を踏まえて, CAP 定理における Jungle の立ち位置を考える. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
163 分散管理バージョンのように独立したリポジトリもち, それぞれが独自の変更を加えることが |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
164 行えることで一貫性はゆるい. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
165 だが, ネットワークから切断されてもローカルで行ったデータの変更をネットワーク復旧後で伝搬できる |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
166 ことと, リクエストに対し持っているデータをすぐに返すことができる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
167 つまり Jungle は可用性と分断耐性に優れたデータベースを目指している. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
168 第2章で紹介した既存のデータベースと Jungle との CAP 定理の関係を図\ref{fig:cap_theorem}に示す. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
169 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
170 \begin{figure}[htpb] |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
171 \begin{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
172 \includegraphics[scale=0.7]{figures/cap_theorem.pdf} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
173 \caption{CAP 定理における各データベースの立ち位置} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
174 \label{fig:cap_theorem} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
175 \end{center} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
176 \end{figure} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
177 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
178 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
179 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
180 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
181 \section{ログによるデータの永続性} |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
182 % TreeOperationLog(ログ)をシリアライズ可能な形にしてデータをおくること |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
183 % シリアライズできる形にしたものをそのままHDに書き出すだけでログの永続性は行える |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
184 Jungle は非破壊でさらにオンメモリにデータを保持するため, 使用するメモリの容量が大きくなる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
185 そのため, ハードディスクに書き出し, 一定の区切りで保持している過去のデータをメモリ上から掃除しなければならない. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
186 そこで, ログによるデータの永続性の実装を行う. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
187 ここでログをどのようなデータ表現でハードディスクへと書きだすかという問題が発生するが, これは Alice を使うことで |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
188 解決している. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
189 Alice を用いるため MessagePack によりシリアライズ可能な TreeOperationLog ができる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
190 このシリアライズ可能な TreeOperationLog をそのままハードディスクへ書き込むこととでログの永続性ができる. |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
191 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
192 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
193 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
194 |
1d07365c60ff
Writed conclstion
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
50
diff
changeset
|
195 |