グーグルが出てきたとき、並列処理という言葉を聞いた。1台の計算機で出来ないことも、計算機同士を複数つなぐことで可能になる。スーパーコンピュータ(スケールアップ)が無くてもよい、そんな認識だった。
「Googleが、自社のサービスの為に大量の安価なPCを使って巨大なデータセンターを作った事が注目され、そこから「ネットの向こうにあるコンピュータ・リソース」という意味で「クラウド」という言葉が使われ始めたと理解」
クラウドを「分散/並列/スケールアウト」の観点から見るとよく分かる、という話
http://
検索エンジンが乱立していた時代、グーグルのページをみて、色使いがマイクロソフトのパクリだと思った記憶もある、それは業界を制圧する意思の現れだったのか。
泉谷しげる 行きずりのブルース(1972年オリジナル)
グーグル・インク
http://
「約30万台のコンピュータが稼動中といわれる。」まじか。
「リンクの集まる重要なページを上位に表示したり、表示に備えて検索対象のウェブページを保存しておいたりと、それまでの検索エンジンにはない機能によって2002年には世界で最も人気」
そうさなー。
2004年がブレイクの年かな?
グーグルの巨大システムにみる大規模な並列処理機構の可能性
http://
Googleには、2003年に論文があるらしい。
ポイントは、
分散型ファイルシステムを実現するGFS(Google File System)
分散型データベース機能を提供するBigTable
並列プログラムの実行を可能にするMapReduce
「MapReduceとは、膨大なデータを短時間で処理することを目的としたプログラミングモデルだ。一般に、1つのプログラムを複数システムで並列実行させるには、プログラマが並列処理を認識してプログラミングする必要がある。だが、MapReduceは並列処理に必要な機能をライブラリとして提供することで、並列処理の経験がないプログラマでもプログラムを開発できるようにしている。」
「障害に強いソフトウェアが安いハードウェアを役立つものに変える─。グーグルはこうした“基本姿勢”を採っている。」なるほど。
「Google App Engine(GAE)は、そこへPythonで書いたウェブ・アプリケーションをアップロードすると、そのアプリケーションが自動的にスケーラブルになる、という、とんでもなく楽チンなクラウド・プラットフォームだ。」
「Pythonは英語で爬虫類のニシキヘビの意味で、Python言語のマスコットやアイコンとして使われる。」
http://
----------
C言語とPythonで再帰呼び出しを用いて階乗を計算する例を示す。
Pythonのコード:
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)
わかりやすく整形されたC言語のコード:
int factorial(int x)
{
if(x == 0) {
return 1;
} else {
return x * factorial(x - 1);
}
}
この例では、Pythonと整形されたC言語とでは、プログラムコードの間に違いがほとんど見られない。しかし、C言語のコードに施されたインデントは(言語仕様においては)単なるコーディングスタイルのひとつにすぎないため、C言語では(言語仕様においては)全く同じプログラムを以下のように書くこともできる。
わかりにくいC:
int factorial(int x) {
if(x == 0) {return 1;} else
{return x * factorial(x - 1); } }
Pythonではインデントは単なるスタイルではなく、必須の文法であるため、こうした書き方は不可能である。Pythonではこのような強制を課すことによって、プログラムのスタイルがその書き手にかかわらずほぼ統一したものになり、その結果読みやすくなるという考え方が取り入れられている。
----------
確かに見やすい。それが処理の早さにつながるのかどうはわからぬが。
クラウドはエンタープライズ仕様に、2012年現在、医療にはなかなか。カルテはRSSフィードを引っ張る形がいいと思うが。
「グーグルはMapReduceを利用した数百のプログラムを開発し、毎日数千ものMapReduceのジョブを走らせている。そして所定の時間に処理を完了するため、膨大な入力データセットを数百台から千台近くのサーバーに分散させて並列処理を実行している。」
ちょえー。
並列処理の根幹のアーキテクチャをグーグルなりが抑えていて、その上で商売ができるようになっているということ。