view paper/chapter1.tex @ 14:df59b2af84e6

chapter1.tex
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jan 2014 09:24:58 +0900
parents 22c48f2b344a
children 7df3a9a13b22
line wrap: on
line source

\chapter{既存の分散データベース}

% NoSQL の説明はどこかで必要。

\section{Cassandra}



\section{MongoDB}
MongoDB は2009年に公開された NoSQL のデータベースである.
JSON フォーマットのドキュメントデータベースであり, こはスキーマが無い
リレーショナルテーブルに例えられる.
スキーマが無いため, 事前にデータの定義を行う必要がない.
そのためリレーショナルデータベースに比べてデータの追加・削除
が行いやすい.

MongoDB は保存したデータを複数のサーバに複製をとる(replicate).
これはレプリケーション(replication)と呼ばれる.
また, 1つのサーバが全てのデータを持つのでなく, ある範囲の値を別々の
サーバに分割(シャード)させて保持する.
これをシャーディング(sharding)という.
MongoDB はレプリケーションとシャーディングにより分散データベースとして機能する.

% クエリ言語として JavaScript を採用しており, 演算子を自分作れるという利点を持つ.
% スペルミスに弱い

\section{Neo4j}
No4j は, グラフデータベースと呼ばれる NoSQL のデータベースである.
データをグラフとして保存する.
グラフはノードとリレーションシップにより表され, それぞれがプロパティを持つことができる.
リレーションシップはグラフでいうところのエッジにあたる.
ノードからリレーションシップを辿り, 各プロパティをみることでデータの取得を行うことができる.
通常データベースでは, データの取り出しに価の結合や条件の判定を行う.
だが, グラフデータベースグラフはどれだけデータが大きくなろうがノードからノードへの移動は1ステップですむ.
そのため, どれだけデータが大きくなろうと, データが小さい時と同じ計算量でデータの取得が行える.

Neo4j はマスターとスレーブの関係になるクラスタを構成することで分散データベースとして機能する.
マスターに書かれたデータはスレーブに書き込まれるが, すぐに全てのスレーブに書き込まれるわけではない.
したがってデータの整合性が失われる危険がある.
スレーブサーバは現在保持しているデータを返すことができる.
それにより高い読み取り性能の要求に答えることができる高可用性を実現している.