# HG changeset patch # User suika6039@shizuku.local # Date 1282794810 -32400 # Node ID b0181f185b510fffaf302778b6557a5b99b71b67 # Parent 35a8ba98fb5d11324fc9512cae23fb1b3c0b8267 edit diff -r 35a8ba98fb5d -r b0181f185b51 shoshi-paper.aux --- a/shoshi-paper.aux Tue Aug 24 15:58:55 2010 +0900 +++ b/shoshi-paper.aux Thu Aug 26 12:53:30 2010 +0900 @@ -1,10 +1,13 @@ \relax \citation{YCSB} +\citation{BIGTABLE} \@writefile{toc}{\contentsline {section}{\numberline {1}はじめに}{1}} \@writefile{toc}{\contentsline {section}{\numberline {2}先行研究}{1}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.\,1}Yahoo! Cloud Serving Benchmark}{1}} \@writefile{toc}{\contentsline {section}{\numberline {3}分散データベース Cassandra}{1}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.\,1}ConsictencyLevel}{1}} +\citation{SEDA1} +\citation{SEDA2} \@writefile{toc}{\contentsline {subsection}{\numberline {3.\,2}コンシステント・ハッシュ}{2}} \newlabel{fig:chash}{{1}{2}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.\,3}SEDA}{2}} diff -r 35a8ba98fb5d -r b0181f185b51 shoshi-paper.pdf Binary file shoshi-paper.pdf has changed diff -r 35a8ba98fb5d -r b0181f185b51 shoshi-paper.tex --- a/shoshi-paper.tex Tue Aug 24 15:58:55 2010 +0900 +++ b/shoshi-paper.tex Thu Aug 26 12:53:30 2010 +0900 @@ -70,13 +70,12 @@ \subsection{Yahoo! Cloud Serving Benchmark} 数のデータベース(Sherpa,BitTable,Azure)などがあるが, 実際にはどのデータベースを使用すればよいか確かではない. この研究では, 異なるデータベースの性能を比較する共通なフレームワークを開発する.\cite{YCSB} \section{分散データベース Cassandra} -Cassandraは, FaceBookが自社のために開発した分散Key-Valueストアデータベースである. 2008年にオープンソースとして公開され, 2009年にApache Incubatorのプロジェクトとなった. +Cassandraは, FaceBookが自社のために開発した分散Key-Valueストアデータベースであり,DynamoとBigTable\cite{BIGTABLE}を合わせた特徴を持っている. 2008年にオープンソースとして公開され, 2009年にApache Incubatorのプロジェクトとなった. 2010年にはApacheのトップレベルプロジェクトとなり, 現在でも頻繁にバージョンアップが行われている. \subsection{ConsictencyLevel} Cassandraには, ConsistencyLevelが用意されている. これは, 整合性と応答速度どちらを取るか選ぶためのパラメータであり, リクエストごとに設定することが出来る. また, ReadとWriteでConsistencyLevelの意味は異なる. このConsistencyLevelを適用するノードの台数をReplicationFactorといい, Cassandraの設定ファイルで設定することが出来る. - {\gt Read} \begin{enumerate} \item{ConsistencyLevel::ZERO}\\ @@ -118,12 +117,9 @@ \label{fig:chash} \end{figure} \subsection{SEDA} -SEDA(Staged Event-Driven Architecture)は, Cassandraで使用されているアーキテクチャである. 処理を複数のステージに分解しタスクキューとスレッドプールを用意し処理を行う. 処理の様子を図\ref{fig:seda}に示す. +SEDA(Staged Event-Driven Architecture)は, Cassandraで使用されているアーキテクチャである\cite{SEDA1}\cite{SEDA2}. 処理を複数のステージに分解しタスクキューとスレッドプールを用意し処理を行う. 処理の様子を図\ref{fig:seda}に示す. タスクが各ステージのタスクキューに入ると, スレッドプールにどれかのスレッドがタスクキューの中からタスクを取り出し処理を行う. 処理が終わるとそのタスクを次のステージのタスクキューに入れる. - このアーキテクチャはマルチスレッドベースなためマルチコアなPCと多数のタスクがある状況で性能を発揮することができる. しかし, あまりにもスレッドプールやタスクが多すぎると, コンテキストに切り替えに時間がかかり性能は低下する. -% ^^^ 何に載っていたか引用する - \begin{figure}[h] \begin{center} \includegraphics{./fig/SEDA.pdf} @@ -132,7 +128,7 @@ \label{fig:seda} \end{figure} \subsection{Cassandra上でのステージの構成} -Cassandraは主に以下のステージにより構成されており, concurrent. StageManagerを参照すると見つけることが出来る. +Cassandraは主に以下のステージにより構成されており, concurrent::StageManagerを参照すると見つけることが出来る. \begin{itemize} \item{READ STAGE} \item{MUTATION STAGE} @@ -146,7 +142,8 @@ 実際にはもっと多数のステージが存在し, この他にもクライアントの接続を待つスレッドプールやMemTableのFlushを行うスレッドプールがあり, 全部で40個程度のスレッドが動作している. \subsection{YukiWiki on Cassandra} 今回の検証のため, CMSのであるWikiクローンのYukiWikiをCassandra上で動作するように改造した.YukiWikiは文書の管理にTIEHASHを使用しており,Cassandra用のTIEHASHを作成することで簡単に実装することが出来る.\\ -Cassandra上で動作するため,このWikiで複数のサーバー上でデータを共有することが出来るようになった. +Cassandra上で動作するため,このWikiで複数のサーバー上でデータを共有することが出来るようになった.\\ +ソースコードは以下のURLで参照することが出来る. \section{実験} 本研究では, Cassandraのスケーラビリティの検証の為にベンチマークテストを行う. 実験環境は以下のとおりである. \subsection{実験環境}