Mercurial > hg > Papers > 2014 > nobuyasu-master
diff paper/chapter1.tex @ 58:3c070028199b
Added consistency_quorum
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 01 Feb 2014 02:12:17 +0900 |
parents | 39c2180b5719 |
children | 81508c27228a |
line wrap: on
line diff
--- a/paper/chapter1.tex Fri Jan 31 23:33:49 2014 +0900 +++ b/paper/chapter1.tex Sat Feb 01 02:12:17 2014 +0900 @@ -7,22 +7,26 @@ 最後に既存の NoSQL データベースとして Cassandra, MongoDB, Neo4j の特徴について述べる. \section{Relational Database} -Relational Database(RDB)は最も長く広く使われているデータベースである. -列と行からなる2次元のテーブルによるスキーマは - +RDBは列と行からなる2次元のテーブルにより実装されるデータベースである. +データ型として文字列, 数値, 日付, BOOL型がありシステムによりデータに型が強制される. +RDBはスキーマの決まったデータを扱うことに長けている. +構造化言語問い合わせ言語としてSQLがある. -\section{RDB と NoSQL} -データベースは大別するとRDBとNoSQLに分けられる. -RDBとは行と列からなる2次元のテーブルによりデータを保持するデータベースである. -RDBはデータベースアクセス言語としてSQL言語を持ち, 一台のマシンでデータを扱う分には最適である. -しかし, RDB はマシン単体以上の処理性能をだすことができない. -そこで, 汎用的なPCをいくつも用意しデータや処理を分散して管理できるデータベースが求められた. -それらのデータベースはNoSQL(Not Only SQL) と呼ばれSQLを使用しないデータベースのことを指す. -2次元のテーブルでは無く, Key-Value, ドキュメント, グラフといった表現形式でデータの保持を行う. +RDBはデータベースの中でも長年主要な立ち位置にあるデータベースだが, 苦手としている +ことがある. +それは, スキーマレスなデータの扱いやマシンの台数を増やして処理速度 +をあげることである. +それらRDBが苦手としていることを得意とするNoSQLと呼ばれるデータベースがある. + +\section{NoSQLデータベース} +NoSQLはNot Only SQLの略で, SQLを使わないデータベースのことを指す. +NoSQLデータベースはRDBとは違いスキーマがない. +そのため, 扱おうとしているデータの形が決まっていなくても気軽に使うことができる. +また, スケーラビリティも持ちあわせており, 汎用的なマシンを集めることで性能をあげる +ことができるといった特徴を持つ. + NoSQLは, RDBには向いていない処理を行うことを目的にしている. -% 分散データベースは, NoSQL に分けられる. - \section{CAP 定理} 分散データシステムにおいて次の3つを同時に保証することはできない \begin{itemize} @@ -42,37 +46,6 @@ 分散データシステムを考える場合は, この CAP 定理を意識していなければならない. -\section{Cassandra} -Cassandra\cite{cassandra} は2008年7月にFacebookによってオープンソースとして公開された Key-Value なデータベースである. -AmazonのDynamo\cite{dynamo} という分散Key-Valueデータベースの影響を受けて作られている. -スキーマレスな NoSQL データベースになる. - -Cassandraはサーバノードの配置にConsistent hashingアルゴリズムを用いる. -Consistent hashingによりノードは論理的にリング上に配置される. -リングには数値で表される位置がある. -データを書き込む際には, キーとなるハッシュ値に従いそのリングの位置から時計回りに近いサーバノードへと書き込まれる. -Consistent hashingを用いることで, ノードの数が増減した場合に, 再配置をしなくてもよいという利点がある. -データの偏りにより少数のサーバへの負荷が大きい場合に, 負荷が高いハッシュ値が指すリング上に -新たなノードを追加することで負荷を下げるといった手段もとれる. - -データを最大どれだけ配置するかを示すReplication factorと, データの読み書きをいくつのノードから -行うのかを決めるConsistencyレベルを設定できる. -Consistencyレベルには主に ONE, QUORAM, ALL がある. -Replication factorの数値を N とした場合, ONE は1つのノード, QUORUM は N/2 + 1 のノード, ALL は N のノード -へと読み書きを行う. -Consistencyハッシング, Replication factorとConsistencyレベルの設定により Cassandra は -高い可用性と分断耐性を持つ. - -% keyspace, super column といったデータの表現についても述べるべきか? -% Replication factorはkeyspace毎に設定できる -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.7]{figures/cassandra_ring.pdf} - \caption{Consistency・ハッシング} - \label{fig:cassandra_ring} - \end{center} -\end{figure} - \newpage \section{MongoDB} @@ -127,6 +100,55 @@ \end{center} \end{figure} +\newpage +\section{memcached} + + + + + +\section{Cassandra} +Cassandra\cite{cassandra} は2008年7月にFacebookによってオープンソースとして公開された Key-Value なデータベースである. +AmazonのDynamo\cite{dynamo} という分散Key-Valueデータベースの影響を受けて作られている. +スキーマレスな NoSQL データベースになる. + +Cassandraはサーバノードの配置にConsistent hashingアルゴリズムを用いる. +Consistent hashingによりノードは論理的にリング上に配置される. +リングには数値で表される位置がある. +データを書き込む際には, キーとなるハッシュ値に従いそのリングの位置から時計回りに近いサーバノードへと書き込まれる. +Consistent hashingを用いることで, ノードの数が増減した場合に, 再配置をしなくてもよいという利点がある. +データの偏りにより少数のサーバへの負荷が大きい場合に, 負荷が高いハッシュ値が指すリング上に +新たなノードを追加することで負荷を下げるといった手段もとれる. +Consistency Hashingによるリングの形成を図\ref{fig:cassandra_ring}に示す. + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.7]{figures/cassandra_ring.pdf} + \caption{ConsisteyncyLevel QUORUMによる書き込み} + \label{fig:cassandra_ring} + \end{center} +\end{figure} + +Cassandraはデータを最大どれだけ配置するかを示すReplication factorと, データの読み書きをいくつのノードから +行うのかを決めるConsistency Levelの設定が行える. +Consistency Levelには主に ONE, QUORAM, ALL がある. +Replication factorの数値をNとした場合, ONE は1つのノード, QUORUMは N/2 + 1 のノード, ALLはNのノード +へと読み書きを行う. +Replication factorとConsistentcy Levelの設定により, Cassandraは最新のデータを取得したいときと +そうでないときで読み込みと書き込みの速度をあげることができる. +一貫性が重要なデータに関してはQUORUMにより書き込み読み込みを行うことで常に最新のデータを取得することができる. +多少データが古くてもよい場合はONEなどを使用することでレスポンスを早くすることができる. +ConsisutencyLevel QUORUMの時のデータ書き込みについて図\ref{fig:cassandra_quorum}に示す. +Consistencyハッシング, Replication factorとConsistencyレベルの設定により Cassandra は +高い可用性と分断耐性を持つ. + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.6]{figures/consistency_quorum.pdf} + \caption{ConsisteyncyLevel QUORUMによる書き込み} + \label{fig:cassandra_quorum} + \end{center} +\end{figure} @@ -134,4 +156,3 @@ -