Mercurial > hg > Papers > 2014 > nobuyasu-master
annotate paper/chapter1.tex @ 24:5316b4791570
Added master_paper.pdf
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 24 Jan 2014 11:14:24 +0900 |
parents | 7df3a9a13b22 |
children | 67880a2ca650 |
rev | line source |
---|---|
4
d42d2acf5d1d
Added some tex files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
1 \chapter{既存の分散データベース} |
d42d2acf5d1d
Added some tex files
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
2 |
13 | 3 % NoSQL の説明はどこかで必要。 |
4 | |
5 \section{Cassandra} | |
15
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
6 Cassandra は2008年7月に Facebook によってオープンソースとして公開された Key-Value なデータベースである. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
7 Amazon の Dynamo という分散キーバリューデータベースの影響を受けて作られている. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
8 スキーマレスな NoSQL データベースになる. |
13 | 9 |
15
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
10 Cassandra はサーバノードの配置にコンシステント・ハッシングアルゴリズムを用いる. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
11 コンシステント・ハッシングによりノードは論理的にリング上に配置される. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
12 リングには数値で表される位置がある. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
13 データを書き込む際には, キーとなるハッシュ値に従いそのリングの位置から時計回りに近いサーバノードへと書き込まれる. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
14 コンシステント・ハッシングを用いることで, ノードの数が増減した場合に, 再配置をしなくてもよいという利点がある. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
15 データの偏りにより少数のサーバへの負荷が大きい場合に, 負荷が高いハッシュ値が指すリング上に |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
16 新たなノードを追加することで負荷を下げるといった手段もとれる. |
13 | 17 |
24
5316b4791570
Added master_paper.pdf
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
18 1つのデータを最大どれだけ複製にとるかという |
5316b4791570
Added master_paper.pdf
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
19 またデータの読み込み, 書き込みの際に Consistency Level を指定することができるのも Cassandra の特徴である. |
15
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
20 データ取得の際に, いくつのノードに問い合わせを行うのか設定するのが Consistentcy Level である. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
21 Consistency Level には ONE, QUORAM, ALL があり, それぞれ1つのノード, 全体のノードの過半数+1, 全体のノード |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
22 への処理を設定することができる. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
23 Cassandra は高い可用性と分断耐性をもつ. |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
24 |
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
25 % Consistency Level を変更できるところ |
13 | 26 \section{MongoDB} |
27 MongoDB は2009年に公開された NoSQL のデータベースである. | |
15
7df3a9a13b22
Writed research
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
14
diff
changeset
|
28 JSON フォーマットのドキュメントデータベースであり, これはスキーマが無い |
13 | 29 リレーショナルテーブルに例えられる. |
30 スキーマが無いため, 事前にデータの定義を行う必要がない. | |
31 そのためリレーショナルデータベースに比べてデータの追加・削除 | |
32 が行いやすい. | |
33 | |
34 MongoDB は保存したデータを複数のサーバに複製をとる(replicate). | |
35 これはレプリケーション(replication)と呼ばれる. | |
36 また, 1つのサーバが全てのデータを持つのでなく, ある範囲の値を別々の | |
37 サーバに分割(シャード)させて保持する. | |
38 これをシャーディング(sharding)という. | |
39 MongoDB はレプリケーションとシャーディングにより分散データベースとして機能する. | |
40 | |
41 % クエリ言語として JavaScript を採用しており, 演算子を自分作れるという利点を持つ. | |
42 % スペルミスに弱い | |
14 | 43 |
44 \section{Neo4j} | |
45 No4j は, グラフデータベースと呼ばれる NoSQL のデータベースである. | |
46 データをグラフとして保存する. | |
47 グラフはノードとリレーションシップにより表され, それぞれがプロパティを持つことができる. | |
48 リレーションシップはグラフでいうところのエッジにあたる. | |
49 ノードからリレーションシップを辿り, 各プロパティをみることでデータの取得を行うことができる. | |
50 通常データベースでは, データの取り出しに価の結合や条件の判定を行う. | |
51 だが, グラフデータベースグラフはどれだけデータが大きくなろうがノードからノードへの移動は1ステップですむ. | |
52 そのため, どれだけデータが大きくなろうと, データが小さい時と同じ計算量でデータの取得が行える. | |
53 | |
54 Neo4j はマスターとスレーブの関係になるクラスタを構成することで分散データベースとして機能する. | |
55 マスターに書かれたデータはスレーブに書き込まれるが, すぐに全てのスレーブに書き込まれるわけではない. | |
56 したがってデータの整合性が失われる危険がある. | |
57 スレーブサーバは現在保持しているデータを返すことができる. | |
58 それにより高い読み取り性能の要求に答えることができる高可用性を実現している. |