エクスポート (0) 印刷
すべて展開

Windows Azure テーブル ストレージへのデータの移行

更新日: 2014年5月

Azure テーブル ストレージでは、大規模に拡張可能で非リレーショナルな構造化ストレージをクラウドで提供します。Azure テーブルは、エンティティ (行) のコレクションです。エンティティは、最大で 255 個のプロパティ (列) を持つことができます。各プロパティには、名前、型、および値の各属性があります。テーブルの各エンティティには、PartitionKey、RowKey、Timestamp の 3 つの予約済みプロパティがあります。テーブル ストレージでは、パーティション キーを使用して、Azure ストレージ ノードにエンティティを分割または分散します。テーブル ストレージの 1 つのパーティションには、同じパーティション キーを持つエンティティが含まれます。行キーは、パーティション内のエンティティを一意に識別します。タイムスタンプは、変更を追跡するための、システムによって維持される読み取り専用プロパティです。テーブル ストレージでは、テーブル内のエンティティのスキーマを定義する必要はありません。テーブルは、異なるプロパティ セットを含むエンティティを保持できます。テーブル ストレージの詳細な概要については、Windows Azure ポータルを参照してください。

執筆者: Sreedhar Pelluru
寄稿者: James Podgorski
校閲者: Valery Mizonov、Kun Cheng、Steve Howard

アプリケーションを移行して Azure テーブル ストレージを使用するように構成するときは、次のようなさまざまな要因を検討する必要があります。

  • テーブル ストレージに格納できるデータの種類

  • テーブル ストレージに格納されたデータへの移行したアプリケーションからのアクセス方法

  • 移行したアプリケーションの高可用性、スケーラビリティ、災害復旧、およびセキュリティの要件にストレージが対応できるかどうか

  • 既存のデータをどのようにしてテーブル ストレージにアップロードするか

移行プロセスで最初に実行する手順は、テーブル ストレージがオンプレミス アプリケーションで使用するデータを格納するのに適しているかどうかを判断することです。テーブル ストレージは、次の要件を満たすデータを格納するように最適化されています。

  • データは構造化されていて、通常は表形式で格納されます。

  • データは非リレーショナルです。あるテーブルに格納するデータが、他のテーブルのデータと関連付けられていません。Azure テーブル ストレージは、データベースにおける参照整合性などのメカニズムを使用したリレーショナル データの格納をサポートしていません。テーブル ストレージは、非リレーショナルの構造化データを格納するように最適化されています。

  • データはサーバー側の処理を必要としません。データが、結合、ストアド プロシージャ、トリガーなど、リレーショナル データベースがサポートするサーバー側の処理を必要としないことを確認します。テーブル ストレージは、サーバー側の処理をサポートしません。挿入、更新、削除、選択などの基本的な操作については、PartitionKey と RowKey による簡単なサーバー側フィルター処理によりサポートします。

  • データは、主に参照値またはキーを使用してインデックス化および検索されます。パーティション キーはパーティションを識別し、行キーはパーティション内の一意の行を識別します。パーティション キーと行キーの組み合わせにより、テーブル内のエンティティを一意に識別します。テーブル ストレージがデータを格納するのに適していると判断したら、データのどの部分をテーブルのパーティション キーとして使用できるか評価します。「Windows Azure テーブル ストレージのスケーラブルなパーティション分割方法の設計」を参照してください。

  • データは、テーブル ストレージがサポートするデータ型を使用して格納できます。テーブル ストレージでサポートされるデータ型は、文字列、バイト配列、GUID、DateTime、Int32、Int64、Double、およびブール値です。

  • データはクロスパーティション トランザクションを必要としません。テーブル ストレージは、分散トランザクションまたはクロスパーティション トランザクションをサポートせず、エンティティグループ トランザクションのみをサポートします。したがって、適切なパーティション キーを選択し、関連するデータを同じパーティションに格納することが重要です。たとえば、顧客に関する情報と、その顧客が行った注文を、同じパーティションに格納することができます。これにより、顧客情報と注文情報を単一のトランザクション内で更新して、データの整合性を実現することができます。

  • (省略可能) データ サイズは数 GB または数 TB に増える可能性があります。Azure Azure テーブルの最大サイズは 100 TB で、これが Windows Azure ストレージ (テーブル、BLOB、およびキューを含む) のサイズの実質的な上限となります。

  • (省略可能) ある行に格納されるデータは、テーブルの別の行に格納されるデータと構造および型が異なっている可能性があります。Windows Azure テーブル ストレージでは、行またはエンティティの固定スキーマを定義する必要はありません。したがって、同じテーブルに異なる種類のデータを格納できます。たとえば、ある行に注文情報を格納し、同じテーブルの別の行に顧客情報を格納できます。

テーブル ストレージは、Windows SQL Azure データベースと同じように、構造化されたデータを格納します。したがって、アプリケーションをオンプレミスから Windows Azure Platform に移行する場合、テーブル ストレージと SQL データベースのどちらを使用するかが問題となります。SQL データベースとテーブル ストレージの主な違いは次のとおりです。SQL データベースはリレーショナル データベース管理システムであり、結合、ビュー、およびストアド プロシージャを使用してデータ処理機能を提供します。一方、Windows Azure テーブル ストレージはリレーショナル データ ストアではなく、SQL データベースでサポートされるデータ処理機能を提供しません。

アプリケーションで大きなデータ セットを格納および取得してもサーバー側のデータ処理を必要としない場合は、Windows Azure テーブルの方が適しています。一方、アプリケーションが大規模なデータ セットのデータ処理を必要とし、本質的にリレーショナルである場合は、SQL データベースの方が適しています。しかし、SQL データベースと Azure テーブル ストレージのどちらを使用するか判断するには、他の要因もいくつか考慮する必要があります。詳細な比較については、「Windows Azure のデータ管理サービスの概要」の比較表を参照してください。

Azure テーブル ストレージには、使用されているプログラミング言語や実行されているオペレーティング システムに関係なく、任意のクライアント アプリケーションから HTTP(S) REST API を使用してアクセスできます。また、特定のオペレーティング システムやプログラミング言語を対象とするクライアント ライブラリを使用してアクセスすることもできます。ライブラリは .NET、Node.js、Java、および PHP 用のものがあり、Windows Azure デベロッパー センターでダウンロードできます。たとえば、REST API で .NET ストレージ クライアント ライブラリの厳密に型指定された .NET ラッパーを使用すると、.NET 開発者は簡単に開発を行えるようになります。

既存のオンプレミス アプリケーションで構造化された非リレーショナル データを使用していて、そのデータをテーブル ストレージを使用して Windows Azure プラットフォーム上に格納することを検討している場合、ストレージ クライアント ライブラリを使用してデータにアクセスするコードは、一部書き換えが必要になる可能性があります。

Azure テーブル ストレージにデータを格納すると、次のような大きな利点が得られます。

  • スケーラビリティ: Windows Azure ストレージ システムは、パーティションの使用パターンに基づいて、すべてのストレージ ノードにパーティションを自動的に分散します。たとえば、一部のパーティションへのトラフィックが多い場合、システムはそれらのトラフィックを別のストレージ ノードに自動的に分散し、トラフィックの負荷を多数のサーバーに分散します。

  • 高可用性/フォールト トレランス: Windows Azure に格納されたテーブルは、ハードウェア障害に対する回復力を高めるために、同じデータ センター内の 3 つのレプリケート コピーに格納されます。使用するストレージ サービスに関係なく、データは可用性を高めるために別の障害ドメインにレプリケートされます。

  • 災害復旧: Windows Azure テーブルは、同じ大陸の地理的に離れた 2 つのデータ センター間でもレプリケートされるため、大きな災害時のデータの持続性がさらに向上します。

  • セキュリティ: Windows Azure ストレージ サービスに対する要求は、パブリック コンテナーのリソースに対する匿名の要求を除き、すべて認証する必要があります。詳細については、「ストレージ アカウントへのアクセスの認証」を参照してください。

  • 場所を問わない、任意のクライアントからのデータ アクセス: テーブル ストレージには、HTTP(S) 経由で REST API を使用してアクセスできます。したがって、任意のオペレーティング システムで実行されている任意のクライアント アプリケーションから、REST を使用してテーブル ストレージにアクセスできます。

きわめてスケーラブルで非リレーショナルなテーブル ストレージを利用するようにアプリケーションを再設計したら、ファイル システムまたは SQL Server データベースからテーブル ストレージに既存のデータを転送する必要があります。これを行うには、HTTP(S) REST API またはテーブル ストレージ用の .NET クライアント ライブラリを使用してコードを自分で記述するか、次のようなツールを使用します。

  • Azure File Upload Utility。このユーティリティを使用すると、区切りフラット ファイルから Azure テーブル ストレージにデータをアップロードできます。

  • Azure Database Upload Utility。このユーティリティを使用すると、SQL Server データベースから Azure テーブル ストレージにデータをアップロードできます。

  • Red Gate Software の Cloud Storage Studio。このツールなどのサードパーティ ツールを使用すると、テーブル ストレージを含む Azure クラウド ストレージを管理できます。

表示:
© 2014 Microsoft