問題タブ [multi-tenant]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - MongoDB のマルチテナント データベースに対する推奨されるアプローチは何ですか?
MongoDBを使ってマルチテナントアプリを作ろうと思っています。テナントの数についてはまだ推測できませんが、数千にスケールできるようにしたいと考えています。
次の 3 つの戦略を考えることができます。
- セキュリティのためにテナント固有のフィールドを使用する、同じコレクション内のすべてのテナント
- 1 つの共有 DB 内のテナントごとに 1 つのコレクション
- テナントごとに 1 つのデータベース
私の頭の中の声は、オプション 2 を採用することを提案しています。
考えと意味、誰か?
asp.net-mvc - ASP.NET MVC で StructureMap を使用してマルチテナント リポジトリを挿入する
インターフェイスに基づいてデータを取得するテナントリポジトリのインスタンスを挿入するために、マルチテナント ASP.NET MVC アプリケーションに StructureMap を実装していITenantContext
ます。問題のは、ベース コントローラのTenant
から決定されます。RouteData
OnActionExecuting
テナント ID が自分または一部のベース コントローラー プロパティTenantContext(tenantID);
から派生する場所を構築するように StructureMap に指示するにはどうすればよいですか?RouteData
ベースコントローラー
次のルートを考えます。
Tenant
私の基本コントローラーは、{tenant} URL パラメーターに基づいて正しいものを取得して保存します。を使用するTenant
と、 を含むリポジトリをITenantContext
構築して、そのテナントに関連するデータのみを取得できます。
他のDIの質問に基づいてAbstractFactory
、解決策になるでしょうか?
java - マルチテナント Web アプリケーションのパフォーマンス監視ツール
Java Web アプリケーションのパフォーマンスを監視する必要があります。この仕事を手伝ってくれる通行料を探しています。主な問題は、私たちがマルチテナント サーバー アーキテクチャを備えた SaaS プロバイダーであり、何百もの顧客が同じハードウェアで実行されていることです。これまでのところ、DynaTrace や Coradinat などの商用製品を試してみましたが、残念ながら今のところうまくいきません。必要なのは、特定の期間に各顧客サイトでパフォーマンスの問題が発生したかどうかを示す簡単なレポートです。ほとんどの場合、顧客ごとの応答時間になりますが、URL に基づいてさらに詳細が必要になることもあります。
誰かがそのような監視を設定した経験があれば教えてください。
ありがとう!
ruby-on-rails - PostgreSQLのスキーマとRailsを使用したマルチテナントアプリケーションの作成
私がすでに理解したもの
アプリケーションの表示に使用されるドメインまたはサブドメインに基づいて、さまざまなスキーマからのデータを提供するマルチテナントアプリケーションをRailsで作成する方法を学習しています。
私はすでにいくつかの懸念に答えています:
- subdomain-fuをドメインでも機能させるにはどうすればよいですか?これは、このブログにつながる同じ質問をした人です。
- どのデータベース、そしてそれはどのように構成されますか?これはGuyNaorによる素晴らしい講演であり、PostgreSQLとスキーマについての良い質問です。
- スキーマがすべて同じ構造になることはすでに知っています。保持するデータが異なります。では、どのようにしてすべてのスキーマの移行を実行できますか?これが答えです。
これらの3つのポイントは、私が知る必要のある一般的なことの多くをカバーしています。しかし、次のステップでは、物事を実装する方法がたくさんあるようです。より良い、より簡単な方法があることを願っています。
最後に、私の質問に
新しいユーザーがサインアップすると、スキーマを簡単に作成できます。ただし、残りのスキーマにすでにある構造をロードするための最良かつ最も簡単な方法は何でしょうか。ここにあなたにもっと良い考えを与えるかもしれないいくつかの質問/シナリオがあります。
- パブリックスキーマを一時的なスキーマにダンプし、それをメインデータベースにインポートするシェルスクリプトに渡す必要がありますか(Guy Naorが彼のビデオで言っていることとほとんど同じです)?これは、freenodeの役立つ#postgresから得た簡単な要約/スクリプトです。これはおそらくうまくいくでしょうが、私はRailsの外で多くのことをしなければならないでしょう、それは私を少し不快にします..それはまた私を次の質問に連れて行きます。
- これをRubyonRailsから直接行う方法はありますか?PostgreSQLスキーマを作成するのと同じように、Railsデータベーススキーマ(schema.rb-わかりにくいです)をそのPostgreSQLスキーマにロードするだけです。
- これらのものをすでに持っている宝石/プラグインはありますか?「create_pg_schema_and_load_rails_schema(the_new_schema_name)」のようなメソッド。ない場合は、おそらく作成に取り組みますが、すべての可動部分でどれだけうまくテストできるかについては疑問です(特に、シェルスクリプトを使用して新しいPostgreSQLスキーマを作成および管理する場合)。
ありがとう、そして私はそれがそれほど長くなかったことを望みます!
sql-server - SQLサーバー接続を介してテナントIDを渡す
Microsoft SQL Serverを使用して、共有テーブル構造のマルチテナントアプリケーションを構築しています。
SQLServer接続を介してtenantIDパラメーターを渡すことは可能かどうか疑問に思います。テナントごとに個別のユーザーアカウントを作成したくありません。
現在、ApplicationNameまたはWorkstationIDの2つの方法があります。
よろしく、アレクセイ・ザハロフ
asp.net - マルチテナントメンバーシッププロバイダーASP.NETMVC
ASP.NET MVCを使用してマルチテナントアプリを構築していますが、ユーザーの検証に問題があります。
状況
私は持っています:
-User(ID、Name、FirstName、Email)のテーブルこのテーブルは、2つのテナントに登録されているユーザーが再度ログインする必要がないように作成されています。
-Tentantuser(ID、TenantID、UserID(FKからテーブルUser)、UserName、Loginname、Password、Active)を含むテーブルこのテーブルには、1つのテナントのdeloginenパスワードが含まれています。
例:
- UserXはTenantAとTenantBに登録されています
- UserXは、TenantAのログインとパスワードを使用してTenantAにログインします。
- システムが検証するか、ログインとパスワードがテーブルTenantUserで正しいことを確認します
- システムは、UserXを検証します。このuserIDは、テーブルUserのIDに対応します。
- UserXはTenantBに移動し、自動的にログインします
私の問題:
テナントのログインとパスワードを確認できるように、カスタムプロバイダーを作成するにはどうすればよいですか?例えば:
ユーザーがどのテナントにいるのか、プロバイダーにどのように伝えることができますか?
これを次のように変更するにはどうすればよいですか。
または、この問題を解決する別の方法は何ですか?
unit-testing - シングルトンを使用してマルチテナントアプリケーションでクレデンシャルを渡すと、コードの臭いがしますか?
私は現在、共有DB/共有スキーマアプローチを採用するマルチテナントアプリケーションに取り組んでいます。IOW、すべてのテーブルにTenantID列を定義することにより、テナントデータの分離を実施します。慣例により、すべてのSQL読み取り/書き込みには、Where TenantID ='?'を含める必要があります。句。理想的な解決策ではありませんが、後知恵は20/20です。
とにかく、私たちのアプリのほぼすべてのページ/ワークフローはテナント固有のデータを表示する必要があるため、プロジェクトの最初に、現在のユーザー資格情報(つまり、TenantIDとUserID)をカプセル化するためにシングルトンを採用するという(悪い)決定をしました。当時の私の考えは、データレイヤーのすべてのメソッドシグネチャにTenantIDパラメーターを追加したくないというものでした。
基本的な擬似コードは次のようになります。
ご覧のとおり、ここにはいくつかのコードの臭いがあります。これはシングルトンであるため、ユニットテストには対応していません。その上、CurrentUserとHttpContextオブジェクトの間には非常に緊密な結合があります。ひいては、これは、データレイヤー(shudder)にSystem.Webへの参照があることも意味します。
上記の理由でこのシングルトンを取り除くことによって、このスプリントの技術的負債を返済したいと思います。私は、より良い実装が何であるかについていくつか考えていますが、誰かが共有できるガイダンスや教訓を持っている場合、私は非常に義務付けられます。
entity-framework - Entity Framework とマルチテナンシー データベースの設計
SaaS コンセプトのマルチテナンシー データベース スキーマ設計を検討しています。ASP.NET MVC -> EF になりますが、それはそれほど重要ではありません。
以下に、データベース スキーマの例を示します (テナントは会社です)。CompanyId はスキーマ全体で複製され、主キーは自然キーとテナント ID の両方に配置されています。
このスキーマを Entity Framework にプラグインすると、テーブルを Entity Model ファイル (Model1.edmx) に追加すると、次のエラーが発生します。
- リレーションシップ 'FK_Order_Customer' は、テーブル 'Order' の主キー '{OrderId, CompanyId}' のセットに部分的に含まれている外部キー '{CustomerId, CompanyId}' のセットを使用します。外部キーのセットは、主キーのセットに完全に含まれているか、モデルにマップされる主キーのセットに完全に含まれていない必要があります。
- 関係 'FK_OrderLine_Customer' は、テーブル 'OrderLine' の主キー '{OrderLineId, CompanyId}' のセットに部分的に含まれている外部キー '{CustomerId, CompanyId}' のセットを使用します。外部キーのセットは、主キーのセットに完全に含まれているか、モデルにマップされる主キーのセットに完全に含まれていない必要があります。
- 関係 'FK_OrderLine_Order' は、テーブル 'OrderLine' の主キー '{OrderLineId, CompanyId}' のセットに部分的に含まれている外部キー '{OrderId, CompanyId}' のセットを使用します。外部キーのセットは、主キーのセットに完全に含まれているか、モデルにマップされる主キーのセットに完全に含まれていない必要があります。
- リレーションシップ 'FK_Order_Customer' は、テーブル 'Order' の主キー '{OrderId, CompanyId}' のセットに部分的に含まれている外部キー '{CustomerId, CompanyId}' のセットを使用します。外部キーのセットは、主キーのセットに完全に含まれているか、モデルにマップされる主キーのセットに完全に含まれていない必要があります。
- 関係 'FK_OrderLine_Customer' は、テーブル 'OrderLine' の主キー '{OrderLineId, CompanyId}' のセットに部分的に含まれている外部キー '{CustomerId, CompanyId}' のセットを使用します。外部キーのセットは、主キーのセットに完全に含まれているか、モデルにマップされる主キーのセットに完全に含まれていない必要があります。
- 関係 'FK_OrderLine_Order' は、テーブル 'OrderLine' の主キー '{OrderLineId, CompanyId}' のセットに部分的に含まれている外部キー '{OrderId, CompanyId}' のセットを使用します。外部キーのセットは、主キーのセットに完全に含まれているか、モデルにマップされる主キーのセットに完全に含まれていない必要があります。
- リレーションシップ 'FK_OrderLine_Product' は、テーブル 'OrderLine' の主キー '{OrderLineId, CompanyId}' のセットに部分的に含まれている外部キー '{ProductId, CompanyId}' のセットを使用します。外部キーのセットは、主キーのセットに完全に含まれているか、モデルにマップされる主キーのセットに完全に含まれていない必要があります。
質問は 2 つの部分に分かれています。
- 私のデータベース設計は間違っていますか? これらの複合主キーは控えるべきですか? 私は、基本的なスキーマ設計 (frazzled Brain Syndrome) に関する私の正気を疑っています。「理想化された」スキーマを提案してください。
- あるいは、データベースの設計が正しい場合、EF はこれらの外部キーを 1 対 1 の関係が誤って構成されている可能性があると認識しているため、キーを照合できませんか? どの場合、これは EF のバグですか?どうすれば回避できますか?
sql-server - マルチテナントアプリですべてのテナントのすべてのスキーマをどのように更新しますか?
マルチテナントアプリを開発しています。「共有データベース/個別スキーマ」アプローチを選択しました。
私の考えは、デフォルトのスキーマ(dbo
)を使用し、このスキーマをデプロイするときに、テナントのスキーマ(、、)を更新するtenantA
ことtenantB
ですtenantC
。つまり、同期されたスキーマを作成します。
テナントのスキーマをデフォルトのスキーマと同期するにはどうすればよいですか?
SQLServer2008を使用しています。
java - Java でのマルチテナント e コマース アプリケーションの CMS の選択
いくつかの複雑で独自の機能を備えた e コマース アプリケーションに適した CMS 製品の選択についてサポートが必要です。独自のバージョンを構築する予算がないため、既存の CMS の使用を検討しています。
- コピーエディター
- ページ レイアウト ツール
- サイト マップ エディター (オプション)
私は、Spring.MVC と JBoss Seam をフレームワークの代替手段として、JSP/JSTL と Facelets/JSF をビュー テクノロジとして検討した後、CMS がこの選択を促進する可能性があることに気づきました。
最初は 6 人の顧客がいたため、各テナント ページにブランディングを適用したマルチテナント アーキテクチャに非常に熱心でした。
私は 2 つのアーキテクチャの代替案を見ます:
- Web フレームワークに直接基づいて特注のマルチテナント サイトを構築し、JCR を介してコンテンツを「プルイン」します。
- マルチテナント型のCMSを導入し、何とか独自機能を追加。
「独自の機能」は、あなたが望む製品を正確に構築するためのインタラクティブなデザイナーです。ビルドが完了すると、製品がカートに追加され、通常の支払いとアカウント設定機能が考慮されます。すべてまだマルチテナントの状況にあります。
コンテンツ編集機能が別の Web アプリにあることを非常に嬉しく思います。6 人の顧客に代わってこれを操作するだけで十分ですが、理想的には、6 人の顧客もアクセスできるようにすることです。これをブランド化する必要はまったくありません。
助言がありますか?