Mercurial > hg > Papers > 2014 > nobuyasu-master
diff paper/chapter1.tex @ 68:01fadc801c18
fixed
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 01 Feb 2014 21:06:49 +0900 |
parents | c06ec0269eba |
children | 4f31182c8244 |
line wrap: on
line diff
--- 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 データベースになる.