タグ付けされた質問 「multi-tenant」

4
共有テーブル構造を持つマルチテナントデータベースを作成するにはどうすればよいですか?
私たちのソフトウェアは現在MySQLで実行されています。すべてのテナントのデータは同じスキーマに格納されます。Ruby on Railsを使用しているため、どのデータがどのテナントに属しているかを簡単に判別できます。ただし、データが危険にさらされるのではないかと恐れている企業もあるので、他のソリューションを評価しています。 これまでのところ、3つのオプションを見てきました。 マルチデータベース(各テナントは独自に取得します-顧客ごとに1つのサーバーとほぼ同じです) マルチスキーマ(MySQLでは使用不可、各テナントは共有データベースで独自のスキーマを取得します) 共有スキーマ(現在のアプローチ。各列に追加の識別レコードがある場合があります) Multi-Schemaは私のお気に入りです(コストを考えると)。ただし、新しいアカウントを作成して移行を行うのは、すべてのスキーマを繰り返し処理し、それらのテーブル/列/定義を変更する必要があるため、非常に困難なようです。 Q:マルチスキーマは、テナントごとにわずかに異なるテーブルを持つように設計されているようです-これは必要ありません。テーブル構造がすべてのテナント間で共有されているマルチスキーマ、マルチテナントソリューションを使用できるRDBMSはありますか? PSマルチとは、ウルトラマルチ(10000以上のテナント)のようなものを意味します。

6
MongoDBのマルチテナントデータベースに対して推奨されるアプローチは何ですか?
MongoDBを使用してマルチテナントアプリを作成することを考えています。テナントの数はまだわかりませんが、数千に拡張できるようにしたいと考えています。 私は3つの戦略を考えることができます: セキュリティのためにテナント固有のフィールドを使用する、同じコレクション内のすべてのテナント 単一の共有DB内のテナントごとに1つのコレクション テナントごとに1つのデータベース 私の頭の中の声は私がオプション2で行くことを示唆しています。 考えと含意、誰か?

3
切り替えるために複数のデータベース接続プールをレールに置くことは可能でしょうか?
少し背景 私は何年もマルチテナントアプリを実行するためにApartment gemを使用しています。最近、データベースを別のホストにスケールアウトする必要が出てきました。dbサーバーはこれ以上追いつくことができません(読み取りと書き込みの両方が多すぎる)-そしてはい、ハードウェアを最大にスケールしました(専用)ハードウェア、64コア、RAID 10の12個のNvm-eドライブ、384Gb RAMなど)。 これはnumber-of-tenants、アプリケーションコードを変更することなく、最大で倍の容量を実現するための「シンプル」で効率的な方法であるため、このテナントごと(1テナント= 1データベース接続構成/プール)を使用することを検討していました。 現在、私はレール4.2気圧を実行していますが、すぐに5.2にアップグレードします。rails 6はモデルごとの接続定義のサポートを追加していることがわかりますが、20のテナントごとに完全にミラーリングされたデータベーススキーマがあるため、実際には必要ありません。通常、リクエストごと(ミドルウェア内)またはバックグラウンドジョブごと(sidekiqミドルウェア)に「データベース」を切り替えますがsearch_path、Postgresqlでを設定するだけで実際の接続は実際には変更しないので、これは現在のところ簡単で、Apartment gemで処理されます。テナントごとのホスティング戦略に切り替える場合、リクエストごとに接続全体を切り替える必要があります。 質問: 私ActiveRecord::Base.establish_connection(config)はリクエストごと/バックグラウンドジョブを実行できることを理解しています-しかし、私も理解しているように、まったく新しいデータベース接続のハンドシェイクが作成され、新しいDBプールがRailsで生成されます-正しいですか?これは、アプリケーションへのすべてのリクエストでこの種のオーバーヘッドを発生させるパフォーマンス自殺になると思います。 したがって、たとえば複数(合計20)のデータベース接続/プールを最初から(たとえば、アプリケーションの起動時に)事前に確立するレールのオプションが表示され、リクエストごとにそれらのプールを切り替えることができるかどうか疑問に思いますか?そのため、彼はdb接続がすでに作成され、使用できるようになっています。 これらはすべて単に貧しい貧しいアイデアですか?代わりに別のアプローチを探す必要がありますか?たとえば、1つのアプリインスタンス= 1つの特定のテナントへの1つの特定の接続。または、他の何か。

3
asp.netコア3.1のテナントに基づく認証スキームを登録する
現在、デフォルトのクライアントIDとシークレットを備えた外部ログインプロバイダーを備えたIdentity Server 4 Webアプリケーションを作成しています。しかし、私の目標は、テナントに基づいてAzure、Google、Facebookなどの認証プロバイダーを登録することです。 私はSaasKitマルチテナンシーアセンブリを使用しましたが、ここではapp.usepertenant()ミドルウェアを試しました。ただし、UseGoogleAuthentication()メソッドは廃止されたため、このusepertenantミドルウェアを使用してマルチテナント認証を実現できませんでした。 現在のコード、 services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddMicrosoftAccount(option => { option.ClientId = "clientid"; option.ClientSecret = "clientsecret"; option.SaveTokens = true; }); 期待されるコードは以下のようです、 var authentication = services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme); if (tenant.hasMicrosoft) { authentication.AddMicrosoftAccount(option => { option.ClientId = "clientid"; option.ClientSecret = "clientsecret"; option.SaveTokens = true; }); } if (tenant.hasGoogle) { authentication.AddGoogle(option => { option.ClientId = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.