BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース SQL Azure アーキテクチャ - 競争力のある差別化

SQL Azure アーキテクチャ - 競争力のある差別化

原文(投稿日:2010/11/26)へのリンク

2週間前、SQL Azure がどのようにしてスケーラビリティと高可用性を実現しているかに焦点を当てた、SQL Azure 内部に関するホワイトペーパーを Kalen Delaney氏が出した。大抵の競合しているクラウド ソリューションは、仮想マシン内でホストされているデータベースの単一インスタンスに基づいている。SQL Azureを競合するクラウド データベースに差をつけている基盤フィーチャは、その土台のマルチテナント アーキテクチャである。ホワイトペーパーは、SQL Azureアーキテクチャの詳細なビューを提供している。

データベースの作成

SQL Azureを使うには、SQL Azureプラットフォームのアカウントが必要で、次にSQL Azureポータルでデータベースを作成し、管理できる。SQL Azureサーバーとマスター データベースがインスタンス化されたなら、開発者は、開発にはVisual Studio 2010 あるいはSQL Server Management Studioを使うことができる。データベース上の現在のサイズ制限は、ビジネス エディションでは、50GBで、10GB毎増加できる。SQL Azureサーバーにつき、 149データベースの制限がある。

セキュリティとマスター データベース

セキュリティは、主に Microsoftによって管理されているが、今だにユーザーIDとパスワードによってアクセスされる。マスター データベースへのゲスト アクセスは、できない。マスター データベースの新しい役割は、データベース マネージャとログイン マネージャの2つである。マスター データベースは、以下のビューで他のものと違う。 sys.firewall_rules(ファイアウォール ルール), sys.bandwidth_usage (バンド幅の使用量)そして sys.database_usage(データベースの使用量)。

SQL Azureとクライアント間の全IPトラフィックは、SSLで暗号化されており、ユーザーは、受信を許すIPアドレスのリストを基に、アクセス コントロール リストを作ることができる。USEコマンドは、サポートされておらず、全てのクライアント接続は、ユーザーのデータベースに直接接続される。

アーキテクチャ

論理データベースは、開発者に1つの論理ユニットとして見えるが、実際には、開発者のデータは、3つのSQLサーバー データベースに複製される。1つのプライマリ データベースと、2つのセカンダリ レプリカである。Microsoftは、物理的アーキテクチャを抽象化し、データにアクセスする際のフェイルオーバーとスケーラビリティを提供するために、ロード バランスと接続ルーティングを使っている。

SQL Azureは、SQLサーバーと同様なTDSインターフェースを実装しているので、SQLサーバーのようなクライアント ライブラリとアプリケーションへのアクセスを提供している。更に、ネットワーク トポロジーは、SQL Azure の論理インスタンスを提供するために、異なった4つの階層を提供している。

  • クライアント層 - SQL Azureと通信するためにアプリケーションが使う
  • サービス層 - 接続ルーティング、プロビジョニングや課金のようなゲイトウェイ サービスを走らせる
  • プラットフォーム層 - 実際のSQLサーバー データベースをホスティングしているノード
  • インフラ層 - 物理的なハードウェア、ネットワーク、オペレーティングシステム

高可用性

SQL Azure は、ストレージ アカウントに対して、99.9%のアップタイムを保証し、受け取ったフォーマット済のリクエストを正しく処理して、データを追加、アップデート、読み込み、そして消去する。プライマリとセカンダリの両方が成功を報告し、トランザクションログがディスクに書かれるまでは、データは、コミットされたとは、見なされない。

全てのノードは、物理的に異なるラックに存在する6つのピアによって監視され、これらのピアは、ネイバーとして参照される。あるノードで障害が起きたら、この障害に対処するために、パーティション マネージャが再構成を実行する。パーティション マネージャは、ランダムに障害を処理する。対処すべき障害がなくなるまで、ランダムに障害を処理する。さらに詳しくは、直接Kalen氏のホワイトペーパーを読んで欲しい。

スケーラビリティ

2つのフィーチャにより、 SQL Azureは、スケーラビリティを実現している。主としてエンジン スロットリングとロード バランサーである。各ノードは、エンジン スロットリング コンポーネントを持っているので、ノードの健康状態、ログのサイズ、ログの書き込み時間、cpu使用量、データベースのサイズ制限を監視している。限界値を超えたら、データベースは、リードやライトを拒否し始めるので、開発者は、Microsoftが推奨しているように、例外処理によって、これをプログラムによって処理しなければならない。

ロードバランサーは、ジャスト・イン・タイム方法論を使って、クラスタ内のノードへの現在の負荷に基づいて、新しいデータベースのプライマリとセカンダリ レプリカの場所を選択する。同様に、もしノードが負荷オーバーになったら、ロード バランサーは、プライマリ レプリカをもっと負荷の少ない他のノードに移す。重要な注意として、全てのリードとライトは、プライマリ レプリカで実行されるので、こうすることによって、 SQL Azureデータベースのパフォーマンスが、飛躍的に改善できることである。

結論

Microsoftは、クラウド コンピューティングの競合に対して、データベースで差別化しようとしている。またマルチテナント性を使ったSQLサーバーで、Microsoftは多くの他と同じ機能も提供している。Microsoftは、SQL Azureのパフォーマンス保証を提供していないのは、面白いことである。更に、マルチテナント性の使用は、2つの違った見方をすることができる。 SQL Azureは、ソフトウェア クリエータから実装と管理の詳細を取り除き、使いやすさを求めている。しかし、Oracle, IBM、Sybaseのような競合ベンダーは、開発者は、このレベルでのパワーと構成を望んでいる、と主張し、仮想マシンを使うことでそれらを提供している。

この記事に星をつける

おすすめ度
スタイル

BT