top of page
クラウドコンピューディグ技術のまとめ
クラウドコンピューディグの研究についてクラウドコンピューディグは可用性(Availability)に重点をおき、極めて大希望なデータ集合を保持するためのデータストア手法を用いた分散型の計算機利用形態である。従来関係のデータベース(RDBMS)との違いは、RDBMSでは、一般に、データの強い一貫性(consistency)に重きを置いているが 、クラウドコンピューディグでは、一貫性よりも可用性に重きを置いている点が異なる。そのため、両者のアーキテクチャは当然に異なるだろう。クラウドコンピューディグの各技術要素は、分散システムや分散データベースでの過去の研究成果を実成果に即して大規模に応用したものです。新しい技術が発明されたわけではない。学術的には分散システムの研究では、30年前からネットワークの障害を前提とした場合、強い一貫性と高い可用性は同時に得られないことが指摘されている。以下の論文からBernstein, Philip A., and Nathan Goodman. "An algorithm for concurrency control and recovery in replicated distributed databases." ACM Transactions on Database Systems (TODS) 9.4 (1984): 596-615.
クラウドコンピューティングの基盤は分散システムであり,強い一貫性よりも可用性や分散性に焦点をあてることで,極めて規模の大きいデータ集合を極めて高い可用性で運用することを実現している 。強い一貫性を保持しないからと言って,すぐにデータの一貫性を保証しないわけではなく,そこには実用上十分に高い可用性を高めるための様々な工夫が施されている.また,クラウドコンピュー
ティングでは,その技術的特徴として,キーと値を対にして扱う(キーバリューストア)ことが多い.また,多くは,MapReduce というプログラミングモデルを用いている.
クラウドコンピューティング技術で最も注目されるのはシステムのスケーラビリティ(salability)である.特にクラウドコンピューティングでは,システムのスケーラビリティを高めるためにスケールアウト(scale out)の方式が取られる. 注 スケールアウトとは
サーバの数を増やすことで、サーバ群全体のパフォーマンスを向上させること。1台のサーバが仮に10人のユーザしか処理できないとしても、サーバを2台に増やして負荷を分散すれば20人のユーザに対応できる、という理屈である。
スケールアウトした場合、複数のサーバを連携して動作させることになるため、メンテナンスや障害発生時にもサービスを完全に停止させる必要がない点が利点となる。反面、サーバの台数が増えるために管理の手間が増大し、ソフトウェアのライセンス料金も高額になりがちなことが欠点とされている。
複製や同期が容易であり、また複製しても問題の起きないデータを扱う場合には、1台のサーバで機能や性能を強化する「スケールアップ」よりもスケールアウトの方が適していると言われる。 スケールアウトの反対語 スケールアップとは
既存のサーバを機能強化してパフォーマンスを向上させること。CPUやメモリなどの強化によってサーバの能力を上げ、より高い負荷に耐えられるように拡張する。より強力な新しいサーバに交換することもある。
1台のサーバでサービスを提供するため、複数台で運用するよりソフトウェアライセンスの料金が安く済む点や、構成が単純で管理しやすい点、拡張方法によっては台数を増やすよりも投資効果が高い点などが利点とされる。
その反面、複数台運用でないためスケールアップ時にはいったんサーバを停止しないといけない点や、障害発生時に回復までの時間がかかるなどの欠点がある。
複製や分割が困難なデータを扱う場合には、サーバの台数を増やす「スケールアウト」より、スケールアップの方が望ましいとされている。 クラウドコンピューティングで実現されるものは,巨大なデータストアアプリケーションと言える.しかし,既存のデータベースアプリケーションとクラウドコンピューティングの違いを明確にするために,ここでは,データベースアプリケーションのトランザクションについて述べる.トランザクションとは,データに対する一つの論理的操作のことを言う.データベースの分野(特に RDBMS を扱う分野)では,トランザクションは ACID 基準を満たすべきだという見方と,そうでなくても良いという見方がある.まず,ACID 基準について概説する.ACID基準 の論文
The transaction concept: virtues and limitations (invited paper)http://infolab.usc.edu/csci599/Fall2008/papers/b-2.pdf
A: Atomicity(アトミック性),C: Consistency(一貫性),I: Isolation(孤立性),D:Durality (耐久性).データベースの分野では,以上の4つの性質が満たされない限りデータベースは完全でないとされ,データベースは4つの性質を満たすべきであると主張される.
《A: Atomicity(アトミック性)》
各トランザクションは,完全な形で発生するか,全く発生しないかのどちらか
であり,もし発生するなら,単一の分割不可の瞬間的な行為として発生する.
トランザクションが起こっている間は,すべてのプロセスはその中間的な状態
を見ることはできない.
《C: Consistency(一貫性)》
トランザクション開始と終了時において,あらかじめ与えられた整合性(不
変性)を満たすことを保証しなければならない.トランザクション前にある整
合性を維持していたなら,トランザクション後にも整合性を満たさなければな
らない.銀行のシステムにおいて,全体の預金のトータル量は,ある一つの送
金のトランザクションの前と後で同じでなければならない.一方,トランザク
ションの途中は,整合性は維持されていないかもしれないが,トランザクショ
ンの外からは見えない.ここでいう一貫性は,強い一貫性ともいわれる.
《I: Isolation(孤立性)》
逐次処理可能性(serializable)とも言われる.すなわち,2つ以上のトラン
ザクションが同時に動作したとき,最終的な結果はすべてのトランザクション
がある順序で逐次的に実行されたように見えなければならない.すなわち,同
じデータにアクセスする二つのトランザクションはどちらかがもう片方のトラ
ンザクションが終了するのを待っている必要がある.
例として,銀行システムにおいて,2つの口座 A と B があり,次の2つのト
ランザクションがあるとする.
トランザクション1:口座 A から口座 B に$10 送金する.
トランザクション2:口座 B から口座 A に$20 送金する.
トランザクション1は次の二つのアクションからなる.
アクション1-1:口座 A から$10 引く.
アクション1-2:口座 B に$10 足す.
トランザクション2は次の二つのアクションからなる.
アクション2-1:口座 B から$10 引く.
アクション2-2:口座 A に$10 足す.
【良い例】内部処理がどのような順でアクション1-1,1-2,2-1,及
び2-2を実行したかに関係なく,見た目として,トランザクション1が行わ
れ,次にトランザクション2が行われた時,孤立性が保たれたと言う.
【失敗】内部処理として,アクション1-1,アクション2-1,アクション
2-2,アクション1-2の順で行われ,最後のアクション1-2で失敗が起
こった時,結果は,口座 A は$10 を引かれたままになってしまったとする.こ
の場合,孤立性が保たれていないという.
《D: Durality (耐久性)》
一度行われたトランザクションの結果が永久に失われてはならない.多くの
システムでは,トランザクションのログが管理されており,故障が起きて復帰
した時は,このログによって,システムをもとの状態に復帰させることが行わ
れる.
ACID 基準は極めて厳しい要求事項である.オンライントランザクションなどでは,大変重要な概念である.しかし,データベースを分散するシステムでは,すべてを満たすのは大変困難であることが知られている.次の CAP 定理は,分散システムにおいて,一貫性,可用性,および分割耐性が同時に満たされないことを示した経験則の一つである.
CAP定理は,分散システムにおいて,一貫性,可用性,及び分割耐性を同時に満たすことはできないということを示した定理である
2000年 UC Berkeley のEric A.EriBrewer教授 によって提唱された。その後この人はYahoo!の創業者の一人となった。 http://www.cs.berkeley.edu/~brewer/
一貫性(Consistency)は上で説明した通りで,ここでは,強い一貫性を意味している.
可用性(Availability)は,システムがすぐに使えることであり,システムが正常に稼働しているある瞬間に,ユーザがその機能を実行できる確率で表されることが多い.
分割耐性(Partition Tolerance)は,ネットワーク分断への耐性を意味する.例えば,二つの分割されたネットワークの各パーティンションの間で,通信されるメッセージが失われる場合があっても,正しい処理が妨げられないという意味である.
ACID基準を満たすには,可用性を犠牲にしなければならない.逆に可用性に注目したときの基準として,BASE が提唱されている .以下の論文でFox, A., Gribble, S. D., Chawathe, Y., Brewer, E. A., & Gauthier, P. (1997, October). Cluster-based scalable network services. In ACM SIGOPS operating systems review (Vol. 31, No. 5, pp. 78-91). ACM.引用から見てみれば、やはり、 Eric A.EriBrewer教授の研究を中心として進んできたことがわかる
BASE の意味は,BasicallyAvailable, Soft-state, Eventually consistent(基本的に可用性があり,ソフト状態保持をしており,結果的に一貫性がある)という意味である.
「基本的に可用性がある(Basically Available)」という意味は上で示した通り、
基本的にシステムが正常に動作している瞬間にユーザがすぐにその機能を実行でき
るということである.
「ソフト状態を保持する(Soft-state)」という意味は,サーバがクライアントなど
からの要求を受けたときに,クライアントの状態をある限られた時間のみ保持する
という意味である.詳述すれば,状態保持に関しては次の3段階がある:状態不保
持サーバ(stateless server),ソフト状態保持(soft-state),及び状態保持(stateful
server).状態不保持サーバとは,サーバはクライアントの状態をいっさい保持しな
い.ソフト状態保持とは,状態不保持の特別な形で,サーバはクライアントの状態を
保持するが,ある限られた時間のみ保持するという意味である.状態保持とは,サー
バがクライアントの状態に関する情報を持続的に保持することを意味する.
サーバがクライアントの状態を保持している(状態保持)と,ファイルの更新な
どの効率を高めることができる.しかし,サーバが故障した場合の復旧は,故障し
た時点までのすべてのクライアントとの関連情報が必要である.状態不保持の場合は,サーバが故障して復旧する場合でも,クライアントの情報は何も必要ない.ソフト状態保持では,その中間的な特徴を持ち,ある限られた時間のみクライアント
情報を持つので,サーバが故障しても復旧は,その限られた時間のみのクライアン
ト情報が必要になるのみである.
「結果的に一貫性がある(Eventually consistent)」については,強い一貫性では
なく,結果として一貫性が保証されるという意味である. 一貫性について、少し詳しく述べる。
【強い一貫性(Strong Consistency)】 データベースの更新があった場合,その
後のプロセスはすべてその更新を確実に確認できる.ACID 基準における一貫性と
同義であり,RDBMS の存在意義そのものである.強い一貫性は理論的には可能だ
が,現実的にはネットワークの遅延がある限り,ロック制御を行って対応する必要
がある.分散システムになると,ロック制御が複雑になり,かえって遅延が多くな
る.その結果,システム全体としての可用性を保持するのは困難となる.
【弱い一貫性(Weak Consistency)】 データベースの更新があった場合,その後
のプロセスが,その更新を確認できるとは限らない(強い一貫性以外の場合である).
【結果一貫性(Eventual Consistency)】論文は以下になるVogels, Werner. "Eventually consistent." Queue 6.6 (2008): 14-19.データベースの更新があった場合,その後のプロセスが,その更新を確認できない時期があるものの,一定の時間を経れば,必ずその更新を確認できるようになる.ここから雑談。1なぜMapReduce が作れたのか
計算機を分散配置し,データを分割することで,可用性を保持するが,分散して
読込んだデータをどのように結合するかは,古典的に難しい問題とされる.Google
や Amazon などの実世界でのシステムでは,様々な工夫がなされている.
Google はデータの結合に対する問題を解決するため、上記の問題を抽象化したプログラミングモデル MapReduce を提供している.
2クラウドコンピューティングと伝統的な RDBMS(リレーショナルデータベース)の違い
3ハードディスクのシークタイム とSSDの相違点近年、ハードディスクの容量は爆発的に増え続けてきたが,ハードディスクのシークタイムは伝統的に 9ms~12ms であり,ほとんど改善されていない.ハードディスクの構造は,回転する円盤の上のデータをアームで読込むという構造なので,シークタイムの改善は根本的に難しい.近年急激に需要を延ばしている SSD になるとシークタイムは改善されるが,読込む対象のデータが大きければ,それだけ時間がかかるという根本的な問題は変わらない. SSDを詳しく説明するとどうなるのか
Intel製 X25-M Mainstream SATA SSD SSDSA2MH080G2K5です。サイズはSSDでは一般的な2.5インチサイズです。HDDは3.5インチですので、SSDの方が小さいですね!
インターフェイス(接続方式)は最も普及しているSATA(シリアルエーティーエー)です。SATAなので差込口がL字型をしています。
普通は中身を見れませんが、カバーを開くと下の写真のような中身になっています。
左が表、右が裏になりますが、各部についてご説明していきたいと思います(^^)※メーカーや製品によって若干配列は異なりますが、ついているものはほぼ同じです。
コントローラ
SSDの性能を決める重要なパーツです。コントローラはいくつもあるフラッシュメモリに効率的にデータを振り分け、データの読み込みや書き込みを制御しています。
つまりコントローラの性能によって、データの処理速度が変わってくるのです!
キャッシュメモリ
キャッシュメモリはフラッシュメモリより高速にデータをやりとりできます。そのため、利用頻度の高いデータはフラッシュメモリではなく、このキャッシュメモリに一時的に保存しておくことで、より高速にデータのやりとりができるようになります。
HDDにもキャッシュメモリがついている場合が多いですが、HDDのキャッシュもSSDのキャッシュと同じ役割を担っています。
出始めの頃のSSDには元々処理が高速なため、このキャッシュメモリがない製品もありましたが、それだと一時的にフリーズしてしまう「プチフリーズ」が発生してしまうため、現在ではキャッシュメモリが搭載されているのが一般的です。
ちなみにキャッシュメモリのメモリはDRAM型といって、電源を切るとデータが消えてしまうという性質を持っています。
フラッシュメモリ
SSDの中に所狭しと並べられている大きいメモリチップがフラッシュメモリです。このフラッシュメモリの容量がSSD全体の記憶容量になります。
フラッシュメモリはNAND型といわれるチップが採用されており、電源を切ってもデータが消えないという性質を持っています。
SSDは電源を切るとデータは消えてしまうが高速なキャッシュメモリを、データの一時保存場所として使い高速化を図り、電源を切ってもデータが消えないフラッシュメモリを、データの記憶場所として使っているということです!
インターフェイス
SSDのインターフェイスもHDDと同じでSATAが主流です。
ケーブル類もHDDと同じSATAケーブルでOKです! 4 なぜクラウドコンピューディグの研究では必ず、ハードウェアが壊れやすい前提で研究を行うのか
理論的に 10 年に1度しか故障しない計算機だとしても,
100,000 台分散配置すれば,1日に1台は故障が発生することになる.実際には,そ
れ以上に故障が発生している.クラウドコンピューティングでは,可用性を保持す
8るため分散処理をすることによって,ハードウェアは頻繁に故障することを前提に
する必要がある.まだ、Google の最近の報告Pinheiro, Eduardo, Wolf-Dietrich Weber, and Luiz André Barroso. "Failure Trends in a Large Disk Drive Population." FAST. Vol. 7. 2007. によれば,ハードディスクの故障は,使用される環境
での温度や,使用された年月には,あまり固定的な影響がみられなかったとしてい
る.さらに,初期のスキャンにおいて,スキャンエラーがあったドライブは,そう
でないドライブに比べて,60 日以内に故障する可能性が 39 倍だったとのことであるハードウェアを壊れないとした研究って世の中に沢山ありまして、本当にその考え方が大丈夫だと思うんですか。5 なぜか中国の鉄道チケット販売システムはクラウドコンピューディグで解決するのが不向きなのか
古典的な議論では,鉄道チケット販売システム、株市場の証券システムなどに代表される既存の OLTP
(On-Line Transaction Processing)では,スケールアウトでは対応しにくいといわ
れている.可用性より一貫性のほうがさらに大事ためである。なぜなら,OLTP では,データベースの更新が頻繁に起こり,一貫性を保
持するために頻繁に排他制御が必要になるためである.古典的な定義によれば,ト
ランザクション処理は,ACID 基準を満たす必要がある.一貫性を保持するための
排他制御による遅延をなるべく少なくするためには,同一サーバ機体の中でのメモ
リ上での処理が前提となる.スケールアウトを考えることも可能だが,スケールア
ウトによるデータベースの分割(Partitioning)によって,ネットワークごしの更新
処理と排他処理が発生し,さらに大きな遅延が発生する可能性がある.またデータ
ベースの分割そのものが難しい場合が多い.そのため,データの更新がリアルタイ
ムに必要な OLTP にはスケールアウトは不向きと言われる. この問題を逆に考えてみれば、ならばなぜかスケールアップを用いて、鉄道チケット販売システムの問題を解決するためなら、良いのか。読者の人たちに試しとして答えて見てくださいませ。6結果一貫性、強い一貫性、弱い一貫性三者のメリットとデメリットはなんでしょうか。なぜか、結果一貫性の研究が流行っているんでしょうか。結果一貫性はどんなケースを向いているのでしょうか。結果一貫性の致命的なデメリットはなんでしょうか。
bottom of page