Denali新機能の目玉、「AlwaysOn」
二か月ぶりの登場になる日本マイクロソフト プレミアフィールドエンジニアリング部の平山です。さて、今回から 2 回にわたって Denali の新機能の中でも、とても重要な意味を持つ「AlwaysOn」について紹介していきます。(世代的にはペットショップボーイズ(あるいはウィリー・ネルソン?)の「Always On My Mind」がとてもしっくりきますけれど)
Denaliの場合は「Always On Being Available」とでも続けると、より本来の機能の意味をあらわしているように思います。それはつまり、もう皆さんご察しのとおり、高可用性のための新しい機能です。
ここで「おや?」と疑問が湧いた方は、きっとなんらかの形でSQL Serverと向き合ったことがあるに違いありません。その疑問は「これまでも高可用性のための機能はあったのでは」ということではないでしょうか。そのご指摘の通り、これまでも多くの機能が SQL Server の可用性を高めるために実装されてきました。SQL Serverにはインスタンスやデータベースに重大なトラブルが発生したとしても、その影響を最小限におさえることによりクライアントからの処理を継続させるための数々の機能が実装されています。そのようなさまざまな実装によって、これまでもSQL Serverは高可用性(High Availability)を実現していました。
古くはSQL Server 6.5から実装が開始されたレプリケーションが挙げられます。その後、新たなバージョンリリースされるごとにレプリケーションの種類が追加されました。当初からのスナップショットレプリケーション(注1)、トランザクションレプリケーション(注2)。SQL Server 2000から追加されたマージレプリケーション(注3)。また、Windowsオペレーティングシステムのフェールオーバークラスタと共に動作する、フェールオーバークラスタインスタンス(注4)。ユーザの要望に応える形で、本来の予定よりも前倒しされて SQL Server 7.0から使用可能になったログ配布(注5)。さらに、SQL Server 2005では最短5秒以内という短い時間で待機側インスタンスへの切り替えが完了するデータベースミラーリングが実装されました。
注1) スナップショットレプリケーション
ある時点のデータベースのスナップショットを作成して、他のインスタンス (同一インスタンスでも可) にデータベースのレプリケーションを作成します
注2) トランザクションレプリケーション
データベースへ行った変更操作を、他の SQL Serverインスタンス (同一インスタンスでも可) にデータベースにレプリケートします
注3) マージレプリケーション
さまざまな SQL Serverインスタンスでデータベースを更新し、その変更内容をインスタンス間でマージします
注4) フェールオーバークラスタ インスタンス
2台以上のコンピュータでディスクを共有し、一方で障害が発生しても残りのコンピュータでSQL Serverを稼働させます
注5) ログ配布
トランザクションログバックアップを、スタンバイ用データベースへ定期的に適用してデータの同期を行います
注6) データベースミラーリング
トランザクションログレコードを直接、スタンバイ用データベースに転送してデータの同期を行います
それぞれの機能は、各バージョンがリリースされた時点での市場やユーザの要求を満たすべきものとして計画され、実際に数多くの使用実績を誇るものばかりです。ただ、各機能が広く使われるようになるにしたがって、市場からの要求はさらに高まりました。
ここで、敢えてそのいくつかの例をとりあげてみます。