SharePoint 2010: 外部ストレージを使用して SharePoint を最適化する

何百万個もある SharePoint ドキュメントを外部ストレージに格納すると、SharePoint と SQL Server のパフォーマンスが向上します。

Iqbal Khan

SharePoint は、最も優れたコラボレーション プラットフォームの 1 つだとはっきり主張してきました。共同作業に関する機能は多数ありますが、共同作業ではドキュメントを共有する必要があるため、SharePoint にはドキュメント管理の機能が用意されています。そのため、SharePoint はドキュメントを格納する場所として使用し、他のユーザーと簡単にドキュメントを共有できるようにしているのではないかと思います。

SharePoint に新しいドキュメントを 1 つ格納すると、データベースのサイズは大きくなります。SharePoint に格納する各ドキュメントのサイズは 500 KB から 2 MB ですが、場合によってはさらに大きいこともあります。SharePoint に格納されている何十万個または何百万個ものドキュメントについて話し始めると、あっという間に壮大な話になるでしょう。SharePoint では、すべてのドキュメントを SQL Server データベースに格納しています。データベースのサイズが一定のしきい値を超えると、管理が困難になり、SharePoint と SQL Server 双方のパフォーマンスが低下します。

他のリレーショナル データベースと同様に、SQL Server はドキュメントを格納するように設計されているわけではありませんでした (SharePoint では、ドキュメントのことをバイナリ ラージ オブジェクト (BLOB) と呼んでいます)。代わりに、構造化されたリレーショナル データを格納するように設計されていました。SharePoint は、すべてのドキュメントを BLOB としてデータベースに格納しますが、ドキュメントを BLOB として格納すると、SQL Server データベースのサイズはあっという間に大きくなります (図 1 参照)。

図 1 肥大化したコンテンツ データベースがパフォーマンス ボトルネックの原因になる

使用している SQL Server データベースのサイズが 20 GB 以下の場合は管理可能です。多くの場合、SQL Server データベースのサイズは、数百ギガバイトまたはテラバイトまで拡大します。このように大きなサイズでは、データベース管理の操作は難しく時間がかかるものになり、問題が発生した場合には解決が困難になります。単純なバックアップや復元の操作でさえ、いつも通りというわけには行きません。

また、すべてのドキュメントを SQL Server に格納すると、SharePoint のパフォーマンスに影響することがあります。ですが、SharePoint では、SQL Server の単純なドキュメント ストレージ メカニズムを使用して、コンプライアンスなどの理由から、古いドキュメントを低コストのストレージにアーカイブして、ドキュメントを一定期間保管しておくことができます。

BLOB をデータベース外に移動してストレージを最適化する

ストレージに関するパフォーマンス上の問題を解決するには、すべてのドキュメント (BLOB) を SQL Server データベースから外部ストレージに移行する以外に方法はありません。他にもメリットはありますが、ドキュメントを移行することで、SQL Server データベースのサイズを瞬時に約 95% 縮小できます。その結果、SharePoint に格納されているドキュメントの大きさや数に関係なく、SQL Server データベースは非常に小さいサイズで維持されます。また、すべてのドキュメントは、データベース外の外部ストレージに格納されるようになります。

SharePoint では、BLOB をデータベース外に移動する 2 つのメカニズムを使用できます。1 つは外部 BLOB ストレージ (EBS) で、これは Microsoft Office SharePoint Server 2007 と SharePoint 2010 で機能します。ただし、SharePoint には、EBS プロバイダーが組み込まれているわけではなく、サードパーティの EBS プロバイダーを使用する必要があります。

SQL Server 2008 R2 を使用している場合に限られますが、SharePoint 2010 には、EBS の他に、リモート BLOB ストレージ (RBS) が用意されています。EBS とは異なり、SharePoint 2010 には、ファイル ストリーミング用の RBS プロバイダーが組み込まれています。実際のところ、RBS は、SQL Server 2008 R2 に追加された機能で、それを SharePoint 2010 で利用しています。RBS を SQL Server 2008 R2 に導入することで、マイクロソフトは、BLOB をデータベースに格納することは理想的な手法ではなく、多くの場合、データベース外に保持する方が優れた方針であるということを基本的に認めたことになります。

サードパーティの EBS プロバイダーまたは RBS プロバイダーを使用すると、SQL Server から BLOB を簡単に移行できます。これらのプロバイダーのほとんどは、Web フロント エンド (WFE) サーバーにインストールされ、GUI ベースの管理機能も用意されています (通常、SharePoint 管理の GUI の一部として提供されます)。

EBS モジュールと RBS モジュールの両方を WFE サーバーに接続します。接続すると、SharePoint では、実行時のすべてのドキュメント要求を (読み取りまたは書き込みのどちらでも)、EBS モジュールまたは RBS モジュールにリダイレクトします。その後、このモジュールでは、BLOB の読み取りや、外部ストレージへの書き込みが実行されます。そのため、実行時に作成または更新されたドキュメントは、自動的に外部ストレージに格納されます。

外部ストレージ オプション

サードパーティの EBS プロバイダーまたは RBS プロバイダーを使用すると、複数のストレージ オプションを使用できる可能性があります (図 2 参照)。BLOB をデータベースから移行する前に、オプションを選択する必要があります。一般的なオプションには、次のようなものがあります。

  • ファイル システム: 通常のファイル システム (場合によっては、ファイル サーバー上の大きなディスク パーティション) を使用して、BLOB を格納できます。
  • SAN/NAS 記憶域: 通常、ストレージ エリア ネットワーク (SAN) とネットワーク接続ストレージ (NAS) は、ストレージの高性能なオプションです。コストはかかりますが、ドキュメントのビジネス価値とサイズが支払うコストに見合う場合は適しています。SAN と NAS には、データのレプリケーションとミラーリングの機能が備わっており、データのサイズはシームレスにテラバイト単位まで増加します。
  • クラウド ストレージ: このオプションは少なくとも 2 つの状況で役に立ちます。1 つは、SharePoint をクラウドで実行しているものの、BLOB をデータベース外に移動する必要があるため、自然な流れとして、ベンダーが提供している近くのクラウド ストレージに BLOB を格納する場合です。もう 1 つは、SharePoint を専用のデータセンターで実行しているものの、データセンターのサイズの制限や信頼性に関する問題により、すべての BLOB をクラウドに格納またはアーカイブする必要がある場合です。このオプションを使用する最も一般的な理由は、アーカイブです。ユーザーがクラウド ストレージでドキュメントを作成したり変更を加えたりする場合、パフォーマンスが低下する可能性があるため、この処理は EBS プロバイダーや RBS プロバイダーによってバックグラウンドで実行されるようにしてください。また、サードパーティの EBS プロバイダーや RBS プロバイダーで、クラウド ストレージに BLOB を格納することがサポートされていることも確認する必要があります。

図 2 SharePoint における RBS または EBS ベースの外部 BLOB ストレージ

SharePoint に組み込まれている RBS プロバイダーを使用する場合、ストレージ オプションはファイル システムのみになります。一方、サードパーティのプロバイダーでは、上記のオプションをすべて使用することが可能で、作業を簡略化できます。

ダウンタイムなしで BLOB を移行する

非常に大きな SharePoint コンテンツ データベースの場合、すべての BLOB をデータベースから外部ストレージに移行するには、ある程度時間がかかる可能性があります。ですが、SharePoint を停止することなく、BLOB を移行できるようにする必要があります。

サードパーティ製のソリューションを使用すると、SharePoint が稼動していて、すべてのユーザーが使用できる状態のときに、移行プロセスを開始できます。ユーザーが SharePoint でドキュメントを読み取ったり書き込んだりしている間でも、移行プロセスを追跡することが可能で、移行中に追加または更新されたドキュメントも移行されます。

データベースから BLOB を移行する作業は時間がかかるので、サードパーティのプロバイダーでは、次のような追加機能がいくつか提供されます。

  • スケジュールされた BLOB の移行: BLOB の移行を開始する時間をスケジュールできます。この機能を使用すると、SQL Server データベースのユーザー トラフィックに余裕があるトラフィックの少ない時間帯に BLOB の移行を開始できます。移行は、SharePoint でスケジュールできる処理としてスケジュールして、開始時間を指定することができます。
  • 制限された移行の速度: もう 1 つの重要な機能は、移行を実行する速度を制限または制御する機能です。データベースから BLOB を移行する速度を指定することもできます。トラフィックのピーク時には、移行を低速で実行できます。また、トラフィックの少ない時間帯には、アクセラレータを実行して、お好みの速度で BLOB を移行できます。

古いドキュメントを簡単にインポートする

最近スキャンした古いドキュメントや SharePoint に取り込んでいない古いドキュメントがたくさんある場合は、これらをインポートする方法を検討する必要があります。SharePoint の通常のインポート機能を使用すると、すべてのドキュメントが SQL Server データベースにコピーされますが、これは次の 2 つの理由から望ましくないことがあります。まず、たくさんの BLOB を SQL Server に格納することはお勧めしません。また、たくさんのデータを 1 つの場所から SQL Server データベースにコピーするのは厄介です。古いドキュメントはファイル システムに存在している可能性があります。サードパーティのプロバイダーを使用してドキュメントをデータベース外に移動している場合は、自分でドキュメントを外部ストレージに移動して、サードパーティのソリューションで提供されているインポート処理を開始できます。このインポート処理では、外部ストレージで、古いドキュメントがコピーされているフォルダーを単純に繰り返し処理します。その後、これらのドキュメントのメタデータのみを使用して、SQL Server データベースを更新します。これで、古いドキュメントのインポートを迅速に行うことができます。

多層ストレージとアーカイブ

ドキュメントを SQL Server データベースから外部ストレージに移行したら、複数層のストレージを指定します (図 3 参照)。各層には重要度レベルが設定されており、最もアクティブで新しいドキュメントは優先順位の高い層に格納できます。最もアクティブでない古いドキュメントは、優先順位の低い層に格納します。

多層ストレージを使用すると、さまざまなメリットがあります。まず、各層では個別のストレージの場所が使用されるので、ストレージの容量を増やすことができます。また、アクティブな各層には少数のドキュメントしか格納されないので、SharePoint のパフォーマンスが向上します。そのため、SharePoint ではフォルダー内のドキュメントを高速でフェッチできます。

図 3 多層ストレージとアーカイブはコンプライアンス準拠に役に立つ

多層ストレージのもう 1 つの重要な点は、アーカイブの規則を指定できることです。作成されてから時間が経過したドキュメントは、優先順位の低い層に移動できます。また、古いドキュメントは頻繁に変更されないため、ドキュメント管理作業全般 (バックアップ、復元など) を簡略化できます。

組織でコンプライアンスに準拠する必要がある場合、自動アーカイブも役に立ちます。一定期間ドキュメントを保持する必要があっても、主要な層に大量のデータを格納するのは望ましくありません。古いドキュメントを別の層にアーカイブすることで、主要な層の記憶域を確保できます。

一定期間後に特定のデータを削除する必要があることを規則で指定している場合、ドキュメントをアーカイブすることで最終的に削除できます。すべてのアーカイブ作業を自動的に実行するようにシステムを設定できます。

外部ストレージを使用するメリットは他にもありますが、サードパーティ製のソリューションを使用すると、BLOB やリスト データをメモリ内にキャッシュできます。WFE サーバーで BLOB をキャッシュすると、キャッシュすることで、データベースや外部ストレージへの高コストなアクセスが削減されるため、SharePoint の応答時間を大幅に短縮し、拡張性を高めることができます (図 4 参照)。

図 4 BLOB とリスト データをキャッシュして SharePoint のパフォーマンスを向上する

WFE サーバーで使用するメモリ キャッシュの量は指定できます。そのため、他のアプリケーションと全体的なメモリ容量のバランスを取ることができます。また、BLOB とリスト データが必要な間だけキャッシュされるように、有効期限の規則を指定することもできます。

ドキュメントを SharePoint コンテンツ データベースから移動するのは複雑な処理ですが、ドキュメントを外部ストレージに保持することで大きなメリットが得られます。また、キャッシュを使用することで、SharePoint のパフォーマンスが向上します。サードパーティの EBS プロバイダーや RBS プロバイダーを使用して、BLOB をデータベース外に移動することで得られるすべてのメリットを検討すると、BLOB をデータベース外に移動するのは理にかなった作業だと言えます。

Iqbal Kahn

Iqbal Khan は、Alachisoft (http://www.alachisoft.com、英語) の社長およびテクノロジ エバンジェリストです。Alachisoft は、NCachePoint と NCache を提供しています。NCachePoint は、SharePoint のパフォーマンスとスケーラビリティを向上する業界の主力製品で、NCache は人気のある .NET ベースの分散キャッシュ製品です。連絡先は iqbal@alachisoft.com (英語のみ) です。

 

関連コンテンツ