Mercurial > hg > Papers > 2014 > nobuyasu-master
diff paper/chapter1.tex @ 50:faa708c2958b
Added log
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 31 Jan 2014 17:13:59 +0900 |
parents | 63eca978482f |
children | 39c2180b5719 |
line wrap: on
line diff
--- a/paper/chapter1.tex Fri Jan 31 11:19:32 2014 +0900 +++ b/paper/chapter1.tex Fri Jan 31 17:13:59 2014 +0900 @@ -7,14 +7,14 @@ 最後に既存の NoSQL データベースとして Cassandra, MongoDB, Neo4j の特徴について述べる. \section{RDB と NoSQL} -データベースは大別すると RDB と NoSQL に分けられる. -RDB とは行と列からなる2次元のテーブルによりデータを保持するデータベースである. -RDB はデータベースアクセス言語として SQL 言語を持ち, 一台のマシンでデータを扱う分には最適である. +データベースは大別するとRDBとNoSQLに分けられる. +RDBとは行と列からなる2次元のテーブルによりデータを保持するデータベースである. +RDBはデータベースアクセス言語としてSQL言語を持ち, 一台のマシンでデータを扱う分には最適である. しかし, RDB はマシン単体以上の処理性能をだすことができない. -そこで, 汎用的な PC をいくつも用意しデータや処理を分散して管理できるデータベースが求められた. -それらのデータベースは NoSQL(Not Only SQL) と呼ばれる. +そこで, 汎用的なPCをいくつも用意しデータや処理を分散して管理できるデータベースが求められた. +それらのデータベースはNoSQL(Not Only SQL) と呼ばれSQLを使用しないデータベースのことを指す. 2次元のテーブルでは無く, Key-Value, ドキュメント, グラフといった表現形式でデータの保持を行う. -NoSQL は, SQL を使用するデータベースには向いていない処理を行うことを目的にしている. +NoSQLは, RDBには向いていない処理を行うことを目的にしている. % 分散データベースは, NoSQL に分けられる. @@ -29,41 +29,41 @@ ネットワーク障害によりノードの接続が切れてもデータベースは機能し続けることができる. \end{itemize} これは CAP 定理\cite{cap}と呼ばれる. -利用するデータベース選ぶ場合, この CAP 定理を意識しなければならない. -一貫性と可用性を重視したデータベースが, RDB である. +利用するデータベース選ぶ場合, このCAP定理を意識しなければならない. +一貫性と可用性を重視したデータベースが, RDBである. 分断耐性を必要とする場合は NoSQL データベースとなる. -そして NoSQL の場合, 分断耐性と後もう一つ, 一貫性か可用性のどちらを保証しているかで用途が変わってくる. +そしてNoSQLの場合, 分断耐性と後もう一つ, 一貫性か可用性のどちらを保証しているかで用途が変わってくる. 分散データシステムを考える場合は, この CAP 定理を意識していなければならない. \section{Cassandra} -Cassandra\cite{cassandra} は2008年7月に Facebook によってオープンソースとして公開された Key-Value なデータベースである. -Amazon の Dynamo\cite{dynamo} という分散キーバリューデータベースの影響を受けて作られている. +Cassandra\cite{cassandra} は2008年7月にFacebookによってオープンソースとして公開された Key-Value なデータベースである. +AmazonのDynamo\cite{dynamo} という分散Key-Valueデータベースの影響を受けて作られている. スキーマレスな NoSQL データベースになる. -Cassandra はサーバノードの配置にコンシステント・ハッシングアルゴリズムを用いる. -コンシステント・ハッシングによりノードは論理的にリング上に配置される. +Cassandraはサーバノードの配置にConsistent hashingアルゴリズムを用いる. +Consistent hashingによりノードは論理的にリング上に配置される. リングには数値で表される位置がある. データを書き込む際には, キーとなるハッシュ値に従いそのリングの位置から時計回りに近いサーバノードへと書き込まれる. -コンシステント・ハッシングを用いることで, ノードの数が増減した場合に, 再配置をしなくてもよいという利点がある. +Consistent hashingを用いることで, ノードの数が増減した場合に, 再配置をしなくてもよいという利点がある. データの偏りにより少数のサーバへの負荷が大きい場合に, 負荷が高いハッシュ値が指すリング上に 新たなノードを追加することで負荷を下げるといった手段もとれる. -データを最大どれだけ配置するかを示すレプリケーションファクタと, データの読み書きをいくつのノードから -行うのかを決めるコンシステンシーレベルを設定できる. -コンシステンシーレベルには主に ONE, QUORAM, ALL がある. -レプリケーションファクタの数値を N とした場合, ONE は1つのノード, QUORUM は N/2 + 1 のノード, ALL は N のノード +データを最大どれだけ配置するかを示すReplication factorと, データの読み書きをいくつのノードから +行うのかを決めるConsistencyレベルを設定できる. +Consistencyレベルには主に ONE, QUORAM, ALL がある. +Replication factorの数値を N とした場合, ONE は1つのノード, QUORUM は N/2 + 1 のノード, ALL は N のノード へと読み書きを行う. -コンシステンシーハッシング, レプリケーションファクタとコンシステンシーレベルの設定により Cassandra は +Consistencyハッシング, Replication factorとConsistencyレベルの設定により Cassandra は 高い可用性と分断耐性を持つ. % keyspace, super column といったデータの表現についても述べるべきか? -% レプリケーションファクタはkeyspace毎に設定できる +% Replication factorはkeyspace毎に設定できる \begin{figure}[htpb] \begin{center} \includegraphics[scale=0.7]{figures/cassandra_ring.pdf} - \caption{コンシステンシー・ハッシング} + \caption{Consistency・ハッシング} \label{fig:cassandra_ring} \end{center} \end{figure} @@ -82,8 +82,8 @@ これはレプリケーション(replication)と呼ばれる. また, 1つのサーバが全てのデータを持つのでなく, ある範囲の値を別々の サーバに分割させて保持する. -これをシャーディング(sharding)という. -MongoDB はレプリケーションとシャーディングにより分断耐性と一貫性を持つ. +これをShardingという. +MongoDB はレプリケーションとShardingにより分断耐性と一貫性を持つ. % クエリ言語として JavaScript を採用しており, 演算子を自分作れるという利点を持つ. % スペルミスに弱い @@ -91,7 +91,7 @@ \begin{figure}[htpb] \begin{center} \includegraphics[scale=0.7]{figures/mongodb_sharding.pdf} - \caption{シャーディング} + \caption{Sharding} \label{fig:mongodb_sharding} \end{center} \end{figure}