# HG changeset patch # User Nobuyasu Oshiro # Date 1391256409 -32400 # Node ID 01fadc801c18b6695bdb975ee10b7511e8861df3 # Parent 2fa14ca42ca66e3118f568a95337e8bdf09ef9b5 fixed diff -r 2fa14ca42ca6 -r 01fadc801c18 paper/chapter1.tex --- a/paper/chapter1.tex Sat Feb 01 20:34:46 2014 +0900 +++ b/paper/chapter1.tex Sat Feb 01 21:06:49 2014 +0900 @@ -7,7 +7,7 @@ 最後に既存の NoSQL データベースとしてmemcached, MongoDB, Neo4j, Cassandraの特徴について述べる. \section{Relational Database} -RDBは列と行からなる2次元のテーブルにより実装されるデータベースである. +Relational Database(RDB)は列と行からなる2次元のテーブルにより実装されるデータベースである. データ型として文字列, 数値, 日付, BOOL型がありシステムによりデータに型が強制される. RDBはスキーマの決まったデータを扱うことに長けている. 構造化言語問い合わせ言語としてSQLがある. @@ -16,17 +16,26 @@ ことがある. それは, スキーマレスなデータの扱いやマシンの台数を増やして処理速度 をあげることである. -それらRDBが苦手としていることを得意とするNoSQLと呼ばれるデータベースがある. +垂直分割や水平分割といった方法によりデータを分けることはできるが, 分割を行うほど +データの扱いは複雑になっていく. + +それらRDBが苦手としていることを得意とするデータベースとしてNoSQLがある. \section{NoSQLデータベース} NoSQLはNot Only SQLの略で, SQLを使わないデータベースのことを指す. NoSQLデータベースはRDBとは違いスキーマがない. そのため, 扱おうとしているデータの形が決まっていなくても気軽に使うことができる. -また, スケーラビリティも持ちあわせており, 汎用的なマシンを集めることで性能をあげる -ことができるといった特徴を持つ. + +%また, スケーラビリティも持ちあわせており, 汎用的なマシンを集めることで性能をあげる +%ことができるといった特徴を持つ. -NoSQLは, RDBには向いていない処理を行うことを目的にしている. +後述するConsistency HashingやShardingといった方法で複数ノードでデータの分散を行うことで +スケーラビリティの確保を行う. +単純なノードの追加により負荷分散を行うことができる. + + +\newpage \section{CAP 定理} 分散データシステムにおいて次の3つを同時に保証することはできない \begin{itemize} @@ -41,12 +50,18 @@ 利用するデータベース選ぶ場合, このCAP定理を意識しなければならない. 一貫性と可用性を重視したデータベースが, RDBである. 分断耐性を必要とする場合は NoSQL データベースとなる. -そしてNoSQLの場合, 分断耐性と後もう一つ, 一貫性か可用性のどちらを保証しているかで用途が変わってくる. +そしてNoSQLの場合, 分断耐性と後もう一つ, 一貫性か可用性のどちらを重視しているかで用途が変わってくる. 分散データシステムを考える場合は, この CAP 定理を意識していなければならない. -\section{memcached} +\newpage + +\section{既存のNoSQLデータベース} +ここでは既存のNoSQLデータベースに説明する. +それぞれの特徴を述べながら, どのような方法でスケーラビリティを確保しているのかについて述べる. + +\subsection{memcached} memcachedは揮発性の分散型キャッシュである. Key-Valueストアとなっている. RDBとも連携して使うことができ, その場合メモリの中にデータを保持させることでディスクへのアクセスを減らし @@ -69,8 +84,8 @@ - -\section{MongoDB} +\newpage +\subsection{MongoDB} MongoDB は2009年に公開された NoSQL のデータベースである. JSON フォーマットのドキュメントデータベースであり, これはスキーマが無い リレーショナルテーブルに例えられる. @@ -99,7 +114,7 @@ \newpage -\section{Neo4j} +\subsection{Neo4j} Neo4j は, グラフデータベースと呼ばれる NoSQL のデータベースである. データをグラフとして保存する. グラフはノードとリレーションシップにより表され, それぞれがプロパティを持つことができる. @@ -126,7 +141,7 @@ \newpage -\section{Cassandra} +\subsection{Cassandra} Cassandra\cite{cassandra} は2008年7月にFacebookによってオープンソースとして公開された Key-Value なデータベースである. AmazonのDynamo\cite{dynamo} という分散Key-Valueデータベースの影響を受けて作られている. スキーマレスな NoSQL データベースになる. diff -r 2fa14ca42ca6 -r 01fadc801c18 paper/introduciton.tex --- a/paper/introduciton.tex Sat Feb 01 20:34:46 2014 +0900 +++ b/paper/introduciton.tex Sat Feb 01 21:06:49 2014 +0900 @@ -3,7 +3,7 @@ 巨大なウェブサービス程データベースは必須であり, ウェブサービスの規模 に比例してデータベースへの負荷も大きなものとなっている. -そのため, データベースの処理能力の高さはそのままウェブサービスの質にも繋がってくるため重要な +そのため, データベースの処理能力の高さはそのままウェブサービスの質にも繋がってくる重要な 項目となっている. データベースの処理能力をスケールさせる方法としてスケールアップ(垂直スケール)と スケールアウト(水平スケール)の考えがある. @@ -45,4 +45,4 @@ この掲示板プログラムはJungleとCassanraそれぞれのデータベースを使うものを用意した. 学科の並列環境上で開発した掲示板プログラムを複数のノードで実行させ, 負荷をかけることで Jungle と Cassandra の 性能比較を行う. -第6章は, 本研究におけるまとめと今後の課題について述べる. +第6章では, 本研究におけるまとめと今後の課題について述べる. diff -r 2fa14ca42ca6 -r 01fadc801c18 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed