1

Multitenancy API に関する GAE ドキュメントによると:

マルチテナンシーは、リモート サーバー上で実行されているアプリケーションの 1 つのインスタンスが多くのクライアント組織 (テナントとも呼ばれます) にサービスを提供するソフトウェア アーキテクチャに付けられた名前です。

しかし、これはすべてのWeb アプリケーションではないでしょうか。数十、数百、場合によっては数千のユーザーがすべてシステムにログインし、同じソフトウェアにアクセスしていますが、自分の「ユーザーアカウント」のコンテキスト内からですか? それとも、Google の Multitenancy API は、複数のアプリのバックエンドとして使用できる汎用データ抽象化レイヤーを開発するための API のようなものですか?

「Google マルチテナント」アプリの意味がわからないので、Multitenancy API の目的や有用性を理解していないと思います。ここで明確にしていただきありがとうございます!

4

3 に答える 3

2

マルチテナンシーを実装する標準的な方法を考えてみましょう。「テナント ID」フィールドを 1 つ以上のテーブルに追加し、その ID を WHERE 句に含めます。そして、そのフィールドにインデックスを付けます。

App Engine で同じアプローチを取ることができます。エンティティの一部にインデックス付きプロパティを追加してテナント ID を保持し、その ID を GQL WHERE 句 (またはフィルター) に慎重に含めます。これにより、書き込み (そのプロパティの 2 つのインデックスの場合) にもう少しコストがかかり、ID が他のフィルターを含むクエリに参加する場合は、ID を含む追加の複合インデックスが必要になるため、さらにコストがかかります。

または、マルチテナンシー API を使用すると、インデックス書き込みの追加コストなしで同じ効果が得られます。コードがわずかに単純になり、コストが削減されます。

于 2012-10-24T02:52:28.227 に答える
1

ここでのマルチテナンシーは、アプリのユーザー自体を指すのではなく、「個別の」データストアを持つアプリの「インスタンス」を指します。

これらのリクエストは共有インスタンスによって処理される可能性があり、それらは間違いなく同じデータストアと通信しているため、これらは実際には個別のインスタンスまたは個別のデータストアではありません。ただし、API を使用することで、データが互いに汚染されないように個別の名前空間に分割されるようにアプリを設定できます。

アプリにユーザーが 1 人しかいない場合、マルチユーザーとマルチテナントはほとんど同じです。複数のユーザーがいる場合、通常はユーザー間でデータを共有します。その場合、マルチテナンシーを使用して、特定のユーザー グループ内でのみデータを共有し、残りを独自のテナンシーに分割できます。

jtahlborn が正しく述べているように、各 GAE アプリは既に GAE インフラストラクチャのテナントになっています。アプリ同士は完全に分割されているため、異なるアプリ間でデータを共有することはできません。

Dave が言うように、ある種のドメイン名またはパーティション ID をすべてのデータに追加することで、マルチテナンシーを自分で実装できます。API は、それを行うためのより簡単な方法を提供するだけです。

于 2012-10-24T03:04:22.063 に答える
0

違いは、あなたが話しているテナントです。GAE は、各プログラム (テナント) が共通の GAE インフラストラクチャで実行されるという点で、初日からマルチテナントでした。ただし、当初、プログラム自体は 1 つのデータ本体だけを管理していました (GAE が最初にリリースされたとき)。GAE の「マルチテナント API」を使用すると、単一のプログラムで独自のテナントを管理できます (つまり、GAEのテナントではなく、自分テナントです)。

簡潔かつ紛らわしい言い方をすると、「マルチテナンシー API」を使用すると、単一の GAE プログラム内で独自のテナント (ユーザー) を管理できます。これは、GAE インフラストラクチャ内でテナント (プログラム) としてホストされます。

もちろん理論上は、GAE で最初からこれを行うこともできますが、テナント間でデータを管理するためのすべての作業はコードで処理されます。「マルチテナンシー API」は、プログラマーの負担を取り除き、プログラム内のデータのセグメント化をより簡単にしようとします。

于 2012-10-24T01:24:48.647 に答える