view paper/abstract.tex @ 11:31df2d4d0e9c

add ch04
author Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
date Tue, 28 Jan 2014 18:16:32 +0900
parents a349b2c01cfe
children a551888363cb
line wrap: on
line source

\begin{abstract}
Haskellは純粋関数型プログラミング言語である。
純粋であるため、引数が同じならば関数は必ず同じ値が返すことが保証されている。
純粋性は、関数の正しさを簡単に推測できる、関数同士を容易に組み合わせることができるといったメリットをもたらす。

本研究では、Haskell を用いて並列に実行できるデータベースの設計と実装を行う。
並列にデータへアクセスする手法として、非破壊的木構造を用いる。
非破壊的木構造は、破壊的代入の存在しない Haskell と相性がよい。

Haskellの純粋性は並列実行と相性が良いが、実際に並列プログラムを書く際には遅延評価が問題となる。
結果が必要となるまで評価しないため、いつ実行されるかが不明確で並列度を思うように高めることが難しい。
また同じ呼び出しがあった場合、Haskellには結果をキャッシュし同じ式が再計算されない仕組みがあるが、並列実行時には各スレッド間での同期コストが大きくなってしまう。

Haskell での並列実行について考察し、並列データベースの設計及び実装を行った。
データベースの書き込み及び読み込みについて性能を計測し、並列データベースを評価する。
また、簡易掲示板システムを開発し、既存の Java の並列データベースの実装との性能比較を行う。

% ブロードバンド環境やモバイル端末の普及により、ウェブサービスの利用者数は急激に伸びている。
% リクエスト数の増加を予想することは困難であり、負荷が増大した場合に容易に拡張できるスケーラビリティが求められる。
% ここでいうスケーラビリティとは、利用者や負荷の増大に対し、単なるリソースの追加のみでサービスの質を維持することのできる性質のことである。
% 
% ウェブサービスにおけるスケーラビリティを実現するためには、並列にデータにアクセスできる設計が必要となる。
% 本研究では、並列にデータへアクセスする手法として、非破壊的木構造を利用する。
% 非破壊的木構造では、排他制御をせずにデータを読むことが可能でありスケーラビリティを確保できる。
% 
% 非破壊的木構造を用いたデータベースとして、オブジェクト指向プログラミング言語 Java を用いた Jungle\texttrademark が存在する。
% しかしながら、非破壊的木構造は破壊的代入がないためオブジェクト指向プログラミング言語よりも純粋関数型言語との相性が良いと考えられる。
% 実際に、Java による実装でも Functional Java 用いて関数型プログラミングスタイルで記述されている。
% 本研究では、純粋関数型言語 Haskell による Jungle の再実装を行った。
% 
% Haskell を用いることで、表現力や純粋性のメリットを享受することができる。
% Haskell では、高度な型を一からつくり上げることができ、型情報を利用してコンパイル時に多くのエラーを捕捉できる。
% また、並列処理において副作用に依存する問題から解放され処理が簡潔になった。 
% そのうえ、Haskell による実装では、Java による実装と比較して開発期間およびコード行数が非常に短くなるといったメリットもあった。
% 
% 性能比較のために Haskell で書かれた HTTP サーバ Warp を用いて簡易掲示板システムを開発し、既存の Java の実装と同程度の性能を達成できた。

\end{abstract}