問題タブ [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.
sql - 共有テーブル構造を持つマルチテナント データベースを作成する方法は?
現在、当社のソフトウェアは MySQL で実行されています。すべてのテナントのデータは同じスキーマに格納されます。Ruby on Rails を使用しているため、どのデータがどのテナントに属しているかを簡単に判断できます。ただし、データが危険にさらされることを恐れる企業も当然あるため、他のソリューションを検討しています。
これまでのところ、次の 3 つのオプションを見てきました。
- マルチデータベース (各テナントが独自のものを取得 - 顧客ごとに 1 つのサーバーとほぼ同じ)
- マルチスキーマ (MySQL では使用できません。各テナントは共有データベースで独自のスキーマを取得します)
- 共有スキーマ (現在のアプローチで、各列に識別レコードを追加する可能性があります)
Multi-Schema が私のお気に入りです (コストを考慮すると)。ただし、新しいアカウントを作成して移行を行うのは、すべてのスキーマを繰り返し処理し、それらのテーブル/列/定義を変更する必要があるため、非常に面倒なようです。
Q:マルチスキーマは、テナントごとにわずかに異なるテーブルを持つように設計されているようです。これは望ましくありません。テーブル構造がすべてのテナント間で共有される、マルチスキーマ マルチテナント ソリューションを使用できる RDBMS はありますか?
PS マルチとは、超マルチ (10.000 以上のテナント) のようなものを意味します。
architecture - マルチテナント システムで不足しているパーソナライゼーション手法は何ですか?
皆さん、私は現在、マルチテナンシー Web 情報システムにおけるパーソナライゼーションに関する科学論文に取り組んでいます。
私が持っている質問は、次のリストにあるパーソナライゼーション手法が欠けているかどうかです。
最初のパーソナライゼーションは、テナントのニーズに合わせて基になる (データ) モデルが調整されるモデル変更のパーソナライゼーションです。通常の変更は、オブジェクトへの属性の追加から、既存のモデルへのエンティティと関係の完全な追加までさまざまです。産業用アプリケーションの例は SalesForce で、ドメイン固有のエンティティなどのエンティティを任意のモデルに追加できます。SalesForce の可変性は、アーキテクチャの設計時に導入され、実行時にバインドできます。
パーソナライゼーションの 2 番目のタイプはビューの変更で、テナントごとにビューが変更されます。典型的な変更は、テナント固有のロゴから、さまざまなインターフェイスやテンプレートの完成までさまざまです。産業用アプリケーションの例として、コンテンツ管理システムの Wordpress があります。Wordpress では、さまざまなテンプレートを実行時に作成して、コンテンツのテナント固有のビューを表示できます。
コントローラーの変更は、3 番目のタイプのパーソナライゼーションです。コントローラーは、異なるテナントに対して異なる応答をし、同じ動作に基づいて、異なる方法で情報システムを介してそれらを導きます。産業用アプリケーションの例は、Microsoft CRM のオンライン マルチテナント バージョンです。これにより、テナントはエンド ユーザー向けの特定のワークフローを作成できます。
パーソナライゼーションの 4 番目のタイプは、システム コネクタの変更です。これは、別のシステムに接続する拡張機能を可変にし、同様の機能を提供するさまざまな情報システムに接続できるようにするものです。たとえば、2 つの異なるユーザー管理システムに基づいて、資格情報を 2 回入力せずにユーザーを認証したい 2 つのテナントが考えられます。
最後に、パーソナライゼーションの 5 番目のタイプはシステム コンポーネントの変更です。これは、テナントの要件に基づいて選択されたさまざまなコンポーネントによって同様の機能セットが提供されます。システム コンポーネントの変更の実用的な用途は、ソーシャル ネットワーキング サイトである Facebook での使用です。これにより、エンド ユーザーは Facebook とサード パーティの両方からコンポーネントをインストールして、より多くの機能を得ることができます。
お気軽にコメントください。この質問が、stackoverflow.com の範囲から大きく外れていないことを願っています。あなたの回答に応じて、記事の Stackoverflow サイトに感謝します :-)。
oracle - マルチテナント アプリの Oracle 行レベル セキュリティ / 新しいレコードのデフォルト値
仕事
マルチテナント アプローチを使用するように既存のアプリケーションを改良します。テナントを作成することは可能であり、各ユーザーのセッションはアクティブなテナントを 1 つだけ参照する必要があります。各テナントは、データベース スキーマの自分のパーティションのみを表示および更新できる必要があります。
アプローチ
- テナント ID を含む Oracle アプリケーション コンテキストを作成する
- 範囲を指定する必要があるテーブルにテナント ID 列を追加します
- SELECT、INSERT、UPDATE、および削除に対して「tenant_id = sys_context('tenant_context', 'tenant_id')」を返す述語関数を作成する
- dbms_rls を介して適切なポリシーを追加し、述語関数を登録します。
これは、SELECT、UPDATE、および DELETE の既存のアプリケーションに触れることなく、魅力的に機能します。
質問
挿入すると、tenant_id 列が設定されず、セキュリティ例外が発生します。セキュリティ関連のフィールドを常に設定する述語関数と同じくらい洗練された方法はありますか? 300 以上のテーブルにトリガーを追加したくありません。
asp.net-mvc - マルチテナントMVCアプリケーションの使用を開始する方法
私は例を探していくつか見つけましたが、それらは全体的に大きなプロジェクトです。MVCマルチテナントアプリケーションの構築を開始する方法のサンプルを探しています。最初の部分はURLを解読することだと思います。
ASP.Netでは、これが私が行った方法です。DNNコードを見てこれを取得しました。MVCで同じことをどのように行いますか?
Global.asax
次に、ベースページでコンテキストから値を取得します。
saas - マルチテナント アーキテクチャ - SQL ビューとアプリケーション ロジック、またはその両方?
まず、SQL ビューを直接使用したことがないということから始めましょう。それらが時代遅れのものなのか、それともこの分野で物事を行う正しい方法なのかはわかりません. セキュリティを考慮する際に 2 つの方法のどちらを好みますか (ファイルにある Acme のクレジット カード番号を WidgetCorp ユーザーに表示しないなど)、セキュリティ以外に考慮すべき重要な点はありますか?
asp.net-mvc - Unity によるマルチテナンシー
Unity を使用してこのシナリオを実装しようとしていますが、これを行う方法がわかりません。
同じ Web アプリケーション (ASP.NET MVC) を複数のクライアント (マルチテナント) からアクセスできるようにする必要があります。Web サイトの URL によってクライアントが区別されます (これは取得方法を知っています)。
そのため、URL を取得すると、IConnectionStringProvider パラメータ (後で IRepository などに挿入されます) を設定できます (これを呼び出しましょう)。どのメカニズム (Unity を使用) を使用して、実行時に IConnectionStringProvider パラメーターを設定しますか?
過去に Windsor と IHandlerSelector を使用してこれを行ったことがありますが (これを参照)、Unity を使用するのは初めての試みです。
どんな助けでも大歓迎です!前もって感謝します
ruby-on-rails - 複数のデータベースを使用する必要がありますか?
Ruby on Railsでアプリケーションを作成しようとしていますが、複数のデータベースを使用したいのですが、基本的にはユーザーごとに複数の会社を持つ会計アプリです。企業ごとにデータベースを作りたい
この投稿を見つけましたhttp://programmerassist.com/article/302 しかし、この問題についてもっと考えたいと思います。MySQL と PosgreSQL のどちらが問題に適しているかを判断する必要があります。
asp.net - マルチテナントサイトでのレイアウトの実装
UIの観点からASP.NETでマルチテナントサイトを処理する方法について少しアドバイスがあります。
私が提供できるようにしたいのは、クライアントにレイアウトを選択することです。
レイアウト1:上部のナビゲーションは水平。検索結果は中央のテーブルに表示されます。下部にいくつかのテキスト。
レイアウト2:左側の垂直方向のナビゲーション。真ん中にいくつかのテキスト。下部の検索結果
レイアウト3、レイアウト4、レイアウトxなど...
さまざまなレイアウト内の各要素も異なる場合があります。たとえば、検索結果はレイアウト1では単純なリストのように見えますが、レイアウト2ではまったく異なる外観になります。
クライアントがレイアウトxを決定したら、色やロゴなどを変更して、レイアウトにコーポレートアイデンティティを適用する必要があります...
したがって、どのアプローチを使用するかについての提案をいただければ幸いです。
どうもありがとう、
ETFairfax
asp.net - asp.netでの帯域幅の監視
こんにちは。Asp.Netで、テナントごとに個別のデータベースを使用するマルチテナントアプリケーションを開発しています。このアプリケーションでは、テナントごとに帯域幅の使用状況を監視する必要があります。
検索しようとしましたが、このトピックに関するヘルプはあまり見つかりませんでした。各テナントが独自のトップレベルドメインまたはサブドメイン、あるいはその両方の組み合わせを持つことができる一方で、各テナントに使用されている帯域幅を正確に監視したいと思います。
だから、利用可能なオプションは何ですか、私が考えることができるものは
- IISログ監視とは、各テナントの帯域幅を計算する個別のアプリケーションを意味します。
- アプリケーション内からテナントの各要求と応答をログに記録し、それに基づいて合計帯域幅使用量を計算します。
- 可能な場合は、いくつかのサードパーティコンポーネントを使用します
それで、これを行う他の方法がある場合にも、あなたは何が最善のアプローチになると思いますか。
asp.net - 複数のドメインをサポートするマルチテナントアプリをテストする方法
こんにちは。各テナントが一意のトップレベルドメインを持つことができることをサポートするマルチテナントアプリケーションを構築しています。アプリケーションはasp.net3.5とSQLservr2005を使用して構築され、各テナントは異なるデータベースを持ちます。
StackOverFlowで同様のアプリケーションについて多くの質問を見てきましたが、どれもテストに関連していません。特に、開発環境でアプリケーションをテストする方法を知りたいです。
- 各顧客がURLに基づいて自分のDBに接続することをどのようにテストできますか。
- ローカルシステムでさまざまなドメインをエミュレートするにはどうすればよいですか。abc.comやxyz.comのように、すべて開発マシンのIISにアクセスします。
そのようなアプリケーションの開発プロセスで役立つ可能性のある推奨事項。