GoogleのBigTableの特長の1つはエンジンとストレージが疎結合であること

GoogleBigTableの特長の1つはエンジンとストレージが疎結合であることである。
MySQLPostgreSQLではSQLクエリを受け付けるマシン(エンジン)と、実際にデータを格納するマシン(ストレージ)は同じである。つまり、エンジンとストレージが密結合である。
エンジンとストレージが密結合である利点は、ストレージへのアクセスが、ネットワーク越しの場合に比べて高速なことである。
しかし、この利点は薄れつつある。ディスクへのアクセスはメモリへのアクセスに比べれば遥かに低速である。そのため、ストレージをメモリにキャッシュして運用することが多い。そして、常にストレージをメモリにキャッシュするならば、ストレージがローカルディスクにあるが、ネットワーク越しの別マシンにあろうが大差ない。必要に応じてメモリに読み込むだけである。
GoogleBigTableではストレージはGFS上に格納される。従って、ストレージはエンジンと別の複数のサーバにレプリケーションされて保存される。つまり、エンジンとストレージは疎結合である。エンジンとストレージが疎結合であることの利点は多い。例えば次のような利点がある。

  • 柔軟性が高い。エンジンとストレージが独立のソフトウェアとなる。そのため、性能強化・機能追加・バグ改修が容易となる。また、別のアプリケーションに転用しやすい。実際、GFSはBigTable以外でも活用されている。
  • 耐障害性が高い。密結合の場合、マシンが落ちるとストレージとエンジンが必ず同時に落ちる。一方、疎結合ならば両者は独立に落ちるので、障害復旧は比較的容易である。例えば、あるストレージを担当するエンジンが落ちたら、別のエンジンを立ち上げて、そのストレージを新たに担当されれば良い。バックアップデータからの復旧は不要である。
  • スケーラビリティが高い。密結合ではマシンの追加はエンジンとストレージの追加を意味し、無駄が発生しやすりが、疎結合では両者を別々に追加できる。そのため、システムに必要なマシン台数を抑えられる。

まとめ