こんにちは。Re:Qの宮崎です。
今回は、RAC(Real Application Clusters)を説明する際に非常に重要な概念であるクラスタ・データベースについてお話しします。
まず普通のデータベース(シングルインスタンス)を見てみましょう。
しかし、そんな彼でも急に熱が出て倒れてしまうことがあります。

この問題を解決するために、「インスタンス君が二人以上いれば、一人が倒れても残った人が頑張ればデータベースは動き続けるよね」という発想が出てきます。これがクラスタ・データベースの概念です。
クラスタ・データベースは、複数の独立したサーバを相互に接続し、ひとつのクラスタを構成することで、あるノードが停止しても別のノードが動いている限り、全体のシステムが停止することなく稼働し続けることを可能にします。
言い換えると、高可用性を実現しているわけです。
代表的なものは、共有ディスク構成・非共有ディスク構成・HA構成の三種類です。
OracleのRACは、共有ディスク構成をとっています。
一般的な共有ディスク構成とは次のようなものです。
すべてのノードから等しく到達できる共有ディスクに、データベースのデータを配置します。データベースの透過性が実現されており、ユーザやアプリケーションサーバがデータベースを利用する際、各ノードによって違うデータが見えたり、操作方法が変わったりのような現象が起こらないようになっています。また、クラスタを構成するノードは、並列構成かつすべてアクティブとなっており、すべてのノードでユーザやアプリケーションサーバなどからの依頼を処理することで、全体で負荷を分散しシステム停止を防止します。
これを図解したものが前回出てきたこの図です。
一方、共有ディスク構成の欠点として、ディスクI/Oが原因で、1から2、2から3へとノードを追加した時に、必ずしも追加数に見合った性能になるとは限らない点があります。また、共有ディスクが、その部分に障害がおこったとき、システム全体が停止してしまう単一障害点になってしまうこともあげられます。
なお、先程OracleのRACは共有ディスク構成と言いましたが、一般的な共有ディスク構成と同じかというと、そういう訳ではありません。OracleのRACは独自の技術をもって、先に挙げた2点の短所を克服しています。(続く...)