view paper/final_main/chapter1.tex @ 4:0f938112b48e

add paper
author suruga
date Thu, 15 Feb 2018 14:48:08 +0900
parents
children 91879dd23dd0
line wrap: on
line source

 \chapter{はじめに}
\label{chap:introduction}
\pagenumbering{arabic}

% 序論の目安としては1枚半ぐらい.
\section{研究背景}
天気予報やニュース、エンタメや生活に必要なありとあらゆる情報は、インターネット上で手軽に閲覧できるようになり、また、SNSにより情報の発信も気軽にできるようになった。
その利便性から、パソコンやスマートフォン、タブレット端末等のメディアがますます普及し、Webサービスの利用者は増大する一方で、サーバ側への負荷は増加している。
Webサービスの負荷を減らすために、データベースには処理能力の高さ、すなわちスケーラビリティがますます求められてきている。
データベースの処理能力を向上させるために、スケールアウトとスケールアップの方法が考えられる。
スケールアップとは、ハードウェア的に高性能なマシンを用意することでシステムの処理能力を上げることを指す。スケールアウトとは、汎用的なマシンを複数用意し、処理を分散させることでシステムの処理能力を上げることを指す。
単純に処理能力を上げる方法として、スケールアップは有効であるが、高性能のマシンには限界がある。コストはもちろん、そのマシン単体では処理できない程負荷がかかる可能性がある。
それに対して、スケールアウトは、処理が重くなるたびに汎用的なマシンを順次追加していくことで性能を上げるため、ハードウェア的に高性能なマシンを用意せずにすみ、また柔軟な対応を取ることができる。よって、データベースの性能を向上させる方法として、このスケールアウトが求められている。
本研究で扱うスケーラビリティとはスケールアウトのことを指す。

分散データシステムは、データの整合性 (一貫性)、常にアクセスが可能であること (可用性)、データを分散させやすいかどうか (分割耐性)、この 3 つを同時に保証するこ とは出来ない。これは CAP 定理と呼ばれる。
一貫性と可用性を重視しているのが、現在最も使われているデータベースであるRelational Database(RDB)である。そのため、データを分割し、複数のノードにデータを分散させることが難しく、結果スケールアウトが困難になってしまうという問題がある。分断耐性を必要とする場合は、NoSQLデータベースを選択する。

 当研究室では、これらの問題を解決した、煩雑なデータ設計が必要ないスケーラビリ ティのあるデータベースを目指して、非破壊的木構造データベース Jungle を開発している。JungleはNoSQLを元に開発されているため、分断耐性を持っている。また、Jungle は、全体の整合性ではなく、木ごとに閉じた局所的な整合性を保証している。 整合性のある木同士をマージすることで新しい整合性のある木をす繰り出すことも 可能であるため、データの伝搬も容易である。Jungle は、これまでの開発によって木構造を格納する機能をもっている。

\section{研究目的}
Jungleは現在、JavaとHaskellによりそれぞれの言語で開発されている。
本研究で扱うのはJava版である。


これまでに行われた分散環境上でのJungleの性能を検証する実験では、huskellで書かれたjungleの方が、javaで書かれたjungleよりも、読み込みで 3.25 倍, 書き込みで 3.78 倍の性能が確認できた。

huskellは、モダンな型システムを持ち, 型推論と 型安全により、信頼性に重きを置いてプログラミングを行う関数型言語である。
対して、Javaはコンパイラ型言語であり、構文に関してはCやC\#の影響を受けており、プログラムの処理に関してはHuskellよりもパフォーマンスが高い言語であるといえる。
よって、javaで書かれたjungleが、huskellで書かれたjungleより性能が遅くなってしまった原因として、性能測定時に使用するテストプログラムのフロントエンドにWebサーバーJettyが使用されていたことが考えられる。

本研究では、新たにWebサーバーを取り除いた測定用プログラムを用いて、純粋なjava版Jungleの性能を測定する方法を提案する。

%\section{論文の構成}

%\section{Introduction}