# HG changeset patch # User Nobuyasu Oshiro # Date 1392299612 -32400 # Node ID be9d52d3c424f79ff035acfa7797d8a2815fe7ee # Parent f099e7314921f5e5d745ce43a3720345dac709f8 Fixed chapter1.tex diff -r f099e7314921 -r be9d52d3c424 paper/abstract.tex --- a/paper/abstract.tex Thu Feb 13 20:54:52 2014 +0900 +++ b/paper/abstract.tex Thu Feb 13 22:53:32 2014 +0900 @@ -1,11 +1,11 @@ \begin{abstract} -スマートフォンやタブレット端末の普及により, ウェブサービスの利用者が増加している. + スマートフォンやタブレット端末の普及により, ウェブサービスの利用者が増加している. それに伴い, サーバサイド側への負荷も増大しウェブサービスがダウンする事態が出てきている. -そのため, スケーラビリティはウェブサービスにおいて重要な性質の1つとなっている. +そのため, スケーラビリティはウェブサービスにおいて重要な要件の1つとなっている. スケーラビリティとは, ある複数のノードから構成される分散ソフトウェアがあるとき, その分散ソフトウェアに対して単純にノード を追加するだけで性能を線形に上昇させることができる性質である. -ウェブサービスにスケーラビリティを持たせるにはまずデータベースがスケーラビリティを持たなければならない. +ウェブサービスにスケーラビリティを持たせるには, まずデータベースがスケーラビリティを持たなければならない. -そこで, 当研究室ではスケーラビリティのあるデータベースとして, 非破壊的木構造を用いたデータベースJungleを設計・開発している. +そこで, 当研究室ではスケーラビリティのあるデータベースとして, 非破壊的木構造を用いたデータベース``Jungle''を設計・開発している. 非破壊的木構造とは, データの編集の際に一度木構造として保存したデータを変更せず, 新しく木構造を作成してデータの編集を行うことを言う. 本研究では, Jungle に分散データベースと永続性の実装を行った. @@ -15,6 +15,6 @@ Jungle と Cassandra により作成した掲示板プログラムに対して読み込みと書き込みの負荷をかけ 比較を行った. 結果, Cassandra以上の性能を確認することができた. -課題としてデータ分割の実装, Mergeアルゴリズムの設計, 分断耐性の実装, 過去のデータの掃除についての課題が確認された. +残された課題としてデータ分割の実装, Mergeアルゴリズムの設計, 分断耐性の実装, 過去のデータの掃除についての課題が確認された. \end{abstract} diff -r f099e7314921 -r be9d52d3c424 paper/chapter1.tex --- a/paper/chapter1.tex Thu Feb 13 20:54:52 2014 +0900 +++ b/paper/chapter1.tex Thu Feb 13 22:53:32 2014 +0900 @@ -2,12 +2,12 @@ % 分散データベースとはなんなのか。 % データベースはなんなのかをいれないと。 % NoSQL の説明も必要。 -本章ではまずデータベースの種類であるRelational DatabaseとNoSQL について述べる. + 本章では, まずデータベースの種類であるRelational DatabaseとNoSQL について述べる. 次に, 分散データシステムにおいて重要な CAP 定理について触れる. -最後に既存の NoSQL データベースとしてmemcached, MongoDB, Neo4j, Cassandraの特徴について述べる. +最後に, 既存の NoSQL データベースとしてmemcached, MongoDB, Neo4j, Cassandraの特徴について述べる. \section{Relational Database} -Relational Database(RDB)は列と行からなる2次元のテーブルにより実装されるデータベースである. +Relational Database(RDB)は, 列と行からなる2次元のテーブルにより実装されるデータベースである. データ型として文字列, 数値, 日付, BOOL型がありシステムによりデータに型が強制される. RDBはスキーマの決まったデータを扱うことに長けている. 構造化言語問い合わせ言語としてSQLがある. @@ -34,20 +34,20 @@ \newpage \section{CAP 定理} -分散データシステムにおいて次の3つを同時に保証することはできない. +分散データシステムにおいては, 次の3つを同時に保証することはできない. \begin{itemize} \item 一貫性(Consistency) 全てのノードはクエリが同じならば同じデータを返す. \item 可用性(Availability) -あるノードに障害が発生しても機能しているノードにより常にデータの読み書きが行える. +あるノードに障害が発生しても, 機能しているノードにより常にデータの読み書きが行える. \item 分断耐性(Partition-tolerance) ネットワーク障害によりノードの接続が切れてもデータベースは機能し続けることができる. \end{itemize} -これは CAP 定理\cite{cap}と呼ばれる. + これは CAP 定理\cite{cap}と呼ばれる. 利用するデータベース選ぶ場合, このCAP定理を意識しなければならない. -一貫性と可用性を重視したデータベースが, RDBである. +一貫性と可用性を重視したデータベースがRDBである. 分断耐性を必要とする場合は NoSQL データベースとなる. -そしてNoSQLの場合, 分断耐性と後もう一つ, 一貫性か可用性のどちらを重視しているかで用途が変わってくる. +そしてNoSQLの場合, 分断耐性に加えて, 一貫性か可用性のどちらを重視しているかで用途が変わってくる. 分散データシステムを考える場合は, この CAP 定理を意識していなければならない. @@ -95,7 +95,7 @@ また, 1つのサーバが全てのデータを持つのでなく, ある範囲の値を別々の サーバに分割させて保持する. これをShardingという. -MongoDB はReplicationとShardingにより分断耐性と一貫性を持つ. +MongoDB はReplicationとShardingにより分断耐性と一貫性を持つ(図\ref{fig:mongodb_sharding}). % クエリ言語として JavaScript を採用しており, 演算子を自分作れるという利点を持つ. % スペルミスに弱い @@ -118,14 +118,14 @@ Relationshipはグラフでいうところのエッジにあたる. ノードからRelationshipを辿り, 各プロパティをみることでデータの取得を行うことができる. 通常データベースでは, データの取り出しに価の結合や条件の判定を行う. -だが, グラフデータベースグラフはどれだけデータが大きくなろうがノードからノードへの移動は1ステップですむ. +しかし, グラフデータベースグラフはどれだけデータが大きくなろうがノードからノードへの移動は1ステップですむ. そのため, どれだけデータが大きくなろうと, データが小さい時と同じ計算量でデータの取得が行える. Neo4j はマスターとスレーブの関係になるクラスタを構成することで分散データベースとして機能する. マスターに書かれたデータはスレーブに書き込まれるが, すぐに全てのスレーブに書き込まれるわけではない. -したがってデータの整合性が失われる危険がある. +したがって, データの整合性が失われる危険がある. スレーブサーバは現在保持しているデータを返すことができる. -そのため Neo4j は高い読み取り性能の要求に答えることができる可用性と分断耐性を持つ. +そのため Neo4j は高い読み取り性能の要求に答えることができる可用性と分断耐性を持つ(図\ref{fig:neo4j_replica}). \begin{figure}[htpb] \begin{center} diff -r f099e7314921 -r be9d52d3c424 paper/introduciton.tex --- a/paper/introduciton.tex Thu Feb 13 20:54:52 2014 +0900 +++ b/paper/introduciton.tex Thu Feb 13 22:53:32 2014 +0900 @@ -52,21 +52,21 @@ せずにすみ, 柔軟な対応をとることができる. ウェブサービスに使用されるデータベースの性能をあげる方法としては, このスケールアウトが求められている. -本研究で扱うスケーラビリティはこのスケールアウトのことをさす. +本研究で扱うスケーラビリティとはこのスケールアウトのことをさす. そういう意味では最も使われているデータベースであるRelational Databaseはスケーラビリティを持つのは困難である. Relational Databaseにはないスケーラビリティを持つデータベースとしてNoSQLと呼ばれるデータベースがある. NoSQLデータベースはConsistency hashingやShardingといった方法を使いデータを分散させスケーラビリティを得ている. データベースにおいてデータを分散させスケーラビリティを上げることはもはや必須となっている. -本論文では, スケーラビリティのあるデータベースを目指して木構造データベースJungleの研究を行った. -Jungleに分散と永続性の実装を行った. +本論文では, スケーラビリティのあるデータベースを目指して木構造データベースJungleの提案する. +すなわち, Jungleに分散と永続性の実装をう. 既存の分散データベースであるCassandraとの比較を行うため, 簡易掲示板を作成し並列環境から負荷をかけることで 性能比較を行った. \newpage \section{本論文の構成} -本論文では, 始めに分散データベースについて既存の製品を例に上げながら述べる. +本論文では, 初めに分散データベースについて既存の製品を例に挙げながら述べる. RDBとNoSQLについて説明し, 既存のNoSQLデータベースの特徴について説明する. 第3章では, Jungleの持つデータ構造, 非破壊的木構造について説明し, Jungleにおけるデータ編集について述べる. 第4章では, 非破壊的木構造による Jungle の基本設計と, 分散バージョン管理システムを参考にした分散設計 diff -r f099e7314921 -r be9d52d3c424 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed