本稿はデータベースソフトウェア「SQL Anywhere」およびデータベース全般に関する英語ドキュメントを翻訳する形で提供しています。図など、部分的に英語のままになっていますが、製品のSQL Anywhere自体は完全に日本語化されていますのでご安心ください。
「Infinity always gives me vertigo」(無限を考えるといつもめまいがする)というフレーズは、有名なカナダ人のシンガーソングライター、Bruce Cockburnの2006年リリースのアルバム「Life Short Call Now」に収められている「Mystery」という曲に出てくるものです。これは頭に残るフレーズで、「スケーラビリティ」、特に「無限のスケーラビリティ」という用語について語るにはぴったりの"つかみ"です。
最近、特にクラウドコンピューティングの文脈において、この「無限のスケーラビリティ」という言葉をやたらに見かけるようになりました。試しにGoogleで「無限のスケーラビリティ("infinite scalability")」を検索してみてください。私の言わんとすることがおわかりになるでしょう。最近見かけたのはここ、ここ、そして遺憾なことに、ここでも使われています。
私が「無限のスケーラビリティ」という言葉を問題にするのは、それが中身のない技術用語だからです。無限にスケールするものなどありません。「無限のスケーラビリティ」というのは、単なる宣伝用のうたい文句にすぎないのです。
データベースシステムのパフォーマンス分析においては、多くの場合、システムのスループットと1つのパフォーマンス要因との比率を指してスケーラビリティという用語が使われます(パフォーマンス要因が複数の場合もあり得ますが、分析がますます難しくなります)。グラフにプロットする際の慣例としては、システムスループットをy軸に置き、変動するパフォーマンス要因をx軸に置きます。2つの値の比率が、y=Ax+Bを満たす直線(傾きがAで、切片がBの直線)で表せるとき、そのシステムは「線形的にスケールする」と言います。また、このグラフが漸近的に下から直線に接近する場合、つまりスループットの比率がパフォーマンス要因の増加に伴い減少する場合、そのシステムは「準線形的にスケールする」と言います。反対に、スループットがパフォーマンス要因の増加に対し、比例を上回る割合で増加するとき、そのシステムは「超線形的にスケールする」と言います。この最後の関係はめったにありません。なぜなら、物事はそう単純には運ばないからです。このことは、特にコンピュータシステムでは真実を突いています。かつて私の師であるGord Steindel氏がよく言っていましたが、「すべてのCPUは同じ速さで待機する」のです。
以下のグラフは2つのスケーラビリティ曲線を表しています。青の線は線形スケーラビリティを示しています。パフォーマンス要因を表すX軸の値の増加に対して、線の傾きが一定に保たれています。それに対し、赤の線は対数的です。X軸の値が増加するにつれ、線の傾きが減少しています。
グレーの楕円内の点に限定してパフォーマンス分析を行うと、2つの線分はどちらも(だいたい)線形を呈しています(つまり導関数がほぼ等しくなっています)。パフォーマンス分析の目的は、システムが青の線のような特徴を持つのか、それとも赤の線のような特徴を持つのかを判定することです。私が主張したいのは、このスループットの比率が、事実上すべてのコンピュータシステムで最終的には減少するということです。参考までに、グスタフソンの法則についてのこの記事をご覧ください。重要なのは、この減少がどの時点で起き始めるかを見極めることです。
しかし現状はどうでしょう。残念ながら、マーケティング担当者は「無限のスケーラビリティ」というフレーズがお気に入りのようで、私がその使い方について異議を申し立てたところで、おそらく何も変わらないでしょう。概してマーケティング担当者が「無限のスケーラビリティ」を主張するとき、その言わんとすることは、「1つまたは複数のパフォーマンス要因が一定範囲内にある場合においての線形スケーラビリティ」ということです。
宣伝文句を鵜のみにしないよう、くれぐれもご注意ください!