Mercurial > hg > Papers > 2014 > nobuyasu-master
diff paper/chapter1.tex @ 69:4f31182c8244
fixed
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 01 Feb 2014 22:41:24 +0900 |
parents | 01fadc801c18 |
children | 4e8bfd65768f |
line wrap: on
line diff
--- a/paper/chapter1.tex Sat Feb 01 21:06:49 2014 +0900 +++ b/paper/chapter1.tex Sat Feb 01 22:41:24 2014 +0900 @@ -19,8 +19,6 @@ 垂直分割や水平分割といった方法によりデータを分けることはできるが, 分割を行うほど データの扱いは複雑になっていく. -それらRDBが苦手としていることを得意とするデータベースとしてNoSQLがある. - \section{NoSQLデータベース} NoSQLはNot Only SQLの略で, SQLを使わないデータベースのことを指す. NoSQLデータベースはRDBとは違いスキーマがない. @@ -28,7 +26,6 @@ %また, スケーラビリティも持ちあわせており, 汎用的なマシンを集めることで性能をあげる %ことができるといった特徴を持つ. - 後述するConsistency HashingやShardingといった方法で複数ノードでデータの分散を行うことで スケーラビリティの確保を行う. 単純なノードの追加により負荷分散を行うことができる. @@ -66,7 +63,7 @@ Key-Valueストアとなっている. RDBとも連携して使うことができ, その場合メモリの中にデータを保持させることでディスクへのアクセスを減らし 処理性能を上げることができる. -メモリの容量がなくなると, LRU(Least Recently Used)のため一番古いデータはメモリから削除されてしまう. + LRU(Least Recently Used)のため, メモリの容量がなくなると一番古いデータはメモリから削除されてしまう. memcachedは永続性は考慮していない. また, 分散を行う機能はサーバ側に備わっておらず, クライアント側の実装に任せている. @@ -78,7 +75,7 @@ \begin{center} \includegraphics[scale=0.7]{figures/memcached.pdf} \caption{memchachedのデータ分散} - \label{fig:memchached} + \label{fig:memcached} \end{center} \end{figure} @@ -94,11 +91,11 @@ が行いやすい. MongoDB は保存したデータを複数のサーバに複製をとる. -これはレプリケーション(replication)と呼ばれる. +これはReplicationと呼ばれる. また, 1つのサーバが全てのデータを持つのでなく, ある範囲の値を別々の サーバに分割させて保持する. これをShardingという. -MongoDB はレプリケーションとShardingにより分断耐性と一貫性を持つ. +MongoDB はReplicationとShardingにより分断耐性と一貫性を持つ. % クエリ言語として JavaScript を採用しており, 演算子を自分作れるという利点を持つ. % スペルミスに弱い @@ -117,9 +114,9 @@ \subsection{Neo4j} Neo4j は, グラフデータベースと呼ばれる NoSQL のデータベースである. データをグラフとして保存する. -グラフはノードとリレーションシップにより表され, それぞれがプロパティを持つことができる. -リレーションシップはグラフでいうところのエッジにあたる. -ノードからリレーションシップを辿り, 各プロパティをみることでデータの取得を行うことができる. +グラフはノードとRelationshipにより表され, それぞれがプロパティを持つことができる. +Relationshipはグラフでいうところのエッジにあたる. +ノードからRelationshipを辿り, 各プロパティをみることでデータの取得を行うことができる. 通常データベースでは, データの取り出しに価の結合や条件の判定を行う. だが, グラフデータベースグラフはどれだけデータが大きくなろうがノードからノードへの移動は1ステップですむ. そのため, どれだけデータが大きくなろうと, データが小さい時と同じ計算量でデータの取得が行える. @@ -172,15 +169,23 @@ そうでないときで読み込みと書き込みの速度をあげることができる. 一貫性が重要なデータに関してはQUORUMにより書き込み読み込みを行うことで常に最新のデータを取得することができる. 多少データが古くてもよい場合はONEなどを使用することでレスポンスを早くすることができる. -ConsisutencyLevel QUORUMの時のデータ書き込みについて図\ref{fig:cassandra_quorum}に示す. +ConsisutencyLevel QUORUMの時のデータ書き込みと読み込みについて図\ref{fig:quorum_write}と図\ref{fig:quorum_read}に示す. Consistencyハッシング, Replication factorとConsistencyレベルの設定により Cassandra は 高い可用性と分断耐性を持つ. \begin{figure}[htpb] \begin{center} - \includegraphics[scale=0.6]{figures/consistency_quorum.pdf} + \includegraphics[scale=0.6]{figures/cassandra_quorum_write.pdf} \caption{ConsisteyncyLevel QUORUMによる書き込み} - \label{fig:cassandra_quorum} + \label{fig:quorum_write} + \end{center} +\end{figure} + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.6]{figures/cassandra_quorum_read.pdf} + \caption{ConsisteyncyLevel QUORUMによる読み込み} + \label{fig:quorum_read} \end{center} \end{figure}