annotate paper/abstract.tex @ 15:a551888363cb

describe type
author Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
date Sat, 01 Feb 2014 04:15:53 +0900
parents a349b2c01cfe
children a1b621c6ca86
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
d8b94e828d79 add tex files
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \begin{abstract}
15
a551888363cb describe type
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
2
10
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
3 Haskellは純粋関数型プログラミング言語である。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
4 純粋であるため、引数が同じならば関数は必ず同じ値が返すことが保証されている。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
5 純粋性は、関数の正しさを簡単に推測できる、関数同士を容易に組み合わせることができるといったメリットをもたらす。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
6
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
7 本研究では、Haskell を用いて並列に実行できるデータベースの設計と実装を行う。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
8 並列にデータへアクセスする手法として、非破壊的木構造を用いる。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
9 非破壊的木構造は、破壊的代入の存在しない Haskell と相性がよい。
5
658281be77ec describe the abstract
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
10
10
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
11 Haskellの純粋性は並列実行と相性が良いが、実際に並列プログラムを書く際には遅延評価が問題となる。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
12 結果が必要となるまで評価しないため、いつ実行されるかが不明確で並列度を思うように高めることが難しい。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
13 また同じ呼び出しがあった場合、Haskellには結果をキャッシュし同じ式が再計算されない仕組みがあるが、並列実行時には各スレッド間での同期コストが大きくなってしまう。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
14
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
15 Haskell での並列実行について考察し、並列データベースの設計及び実装を行った。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
16 データベースの書き込み及び読み込みについて性能を計測し、並列データベースを評価する。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
17 また、簡易掲示板システムを開発し、既存の Java の並列データベースの実装との性能比較を行う。
2
d8b94e828d79 add tex files
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
10
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
19 % ブロードバンド環境やモバイル端末の普及により、ウェブサービスの利用者数は急激に伸びている。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
20 % リクエスト数の増加を予想することは困難であり、負荷が増大した場合に容易に拡張できるスケーラビリティが求められる。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
21 % ここでいうスケーラビリティとは、利用者や負荷の増大に対し、単なるリソースの追加のみでサービスの質を維持することのできる性質のことである。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
22 %
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
23 % ウェブサービスにおけるスケーラビリティを実現するためには、並列にデータにアクセスできる設計が必要となる。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
24 % 本研究では、並列にデータへアクセスする手法として、非破壊的木構造を利用する。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
25 % 非破壊的木構造では、排他制御をせずにデータを読むことが可能でありスケーラビリティを確保できる。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
26 %
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
27 % 非破壊的木構造を用いたデータベースとして、オブジェクト指向プログラミング言語 Java を用いた Jungle\texttrademark が存在する。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
28 % しかしながら、非破壊的木構造は破壊的代入がないためオブジェクト指向プログラミング言語よりも純粋関数型言語との相性が良いと考えられる。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
29 % 実際に、Java による実装でも Functional Java 用いて関数型プログラミングスタイルで記述されている。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
30 % 本研究では、純粋関数型言語 Haskell による Jungle の再実装を行った。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
31 %
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
32 % Haskell を用いることで、表現力や純粋性のメリットを享受することができる。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
33 % Haskell では、高度な型を一からつくり上げることができ、型情報を利用してコンパイル時に多くのエラーを捕捉できる。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
34 % また、並列処理において副作用に依存する問題から解放され処理が簡潔になった。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
35 % そのうえ、Haskell による実装では、Java による実装と比較して開発期間およびコード行数が非常に短くなるといったメリットもあった。
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
36 %
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
37 % 性能比較のために Haskell で書かれた HTTP サーバ Warp を用いて簡易掲示板システムを開発し、既存の Java の実装と同程度の性能を達成できた。
5
658281be77ec describe the abstract
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
38
10
a349b2c01cfe add graffle
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
39 \end{abstract}
5
658281be77ec describe the abstract
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
40