データのパーティション化 - SaaS アーキテクチャの基礎

データのパーティション化

データのパーティション化は、マルチテナント環境でデータを表現するために使用されるさまざまな戦略について説明するのに使用されます。この用語は、さまざまなデータ構造を個々のテナントに関連付けるために使用できる幅広いアプローチやモデルを表すために広く使用されています。

注意すべきなのは、データのパーティション化とテナント分離は交換可能な用語とみなしがちなことです。しかし、これら 2 つの概念は同等ではありません。データのパーティション化とは、個々のテナントに対してテナントデータがどのように保存されるかということです。データをパーティション化しても、データが確実に分離されるわけではありません。ただし、あるテナントが別のテナントのリソースにアクセスできないようにするには、分離を個別に適用する必要があります。

各 AWS ストレージ技術には、データのパーティション化戦略に関する独自の考慮事項があります。例えば、Amazon DynamoDB でデータを分離することは、Amazon Relational Database Service (Amazon RDS) でデータを分離することとは大きく異なります。

一般的に、データのパーティション化について考えるときは、まずデータをサイロ化するのか、プールするのかについて考えることから始めます。サイロ化されたモデルでは、データが混在することなく、テナントごとに異なるストレージコンストラクトがあります。プール化されたパーティショニングでは、どのデータを各テナントに関連付けるかを決定するテナント識別子に基づいて、データは混在してパーティション化されます。

一例として、Amazon DynamoDB では、サイロ化されたモデルではテナントごとに個別のテーブルを使用します。Amazon DynamoDB にデータをプールするには、すべてのテナントのデータを管理する各 Amazon DynamoDB テーブルのパーティションキーにテナント識別子を格納します。

これが各種 AWS サービスによってどのように異なるかは想像できるでしょう。各サービスが独自のコンストラクトを導入しているため、サービスごとにサイロやプール化ストレージモデルを実現するためのアプローチが異なる場合があります。

データのパーティション化とテナント分離は異なるトピックですが、選択するデータのパーティション化戦略は、多くの場合データの分離モデルによる影響を受けます。例えば、そのアプローチがドメインやカスタマーの要件に最も適合するため、一部のストレージをサイロ化することがあります。また、プールモデルでは、ソリューションに必要な詳細度レベルで分離を実施できない場合があるため、サイロを選択することがあります。

また、分離へのアプローチは、ノイジーネイバーによる影響を受ける可能性があります。他のテナントからの影響を抑えるため、またはサービスレベルアグリーメント (SLA) を満たすために、アプリケーションで一部のワークロードやユースケースの分離が必要な場合があります。