2012-04-23 5 views
0

まあ私たちは、別々の データベースを持つマルチテナントアプリケーションを開発しています。すべてのスキーマはN個の個別の データベースに対して同じ構造を持っています。私たちはaspxでMySqlを使ってWebアプリケーションを構築しています。 個の別々のデータベースにある同じユーザーが存在する場合があります。ユーザーが自分のデータを持ち、ドロップダウンリストに表示するデータベース をリンクする方法が必要です。 ユーザログイン時にデータベースをリンクした後、 ドロップダウンリストに利用可能なすべてのデータベースが表示されます( のデータが存在します)。ユーザーがドロップダウンリストの値を変更すると、彼/彼女 は即座にデータベースを変更し、リンクされたデータベースから彼/彼女の データを見ることができるはずです。我々はマルチテナント アプリケーションを構築しました。すべてのことがうまくいっています。問題は、どのように が、特定のデータベース のすべてのデータベースをマスターデータベースからマッピングするかということです。すべてのユーザーは、別々のデータベースに個別の一意のIDを持っています。 したがって、データ構造以外のマルチテナントデータベース には共通のものはありません。すべてのユーザーを一意のID をmasterデータベースに格納し、他の一意のIDとリンクすると、 ユーザーが常駐していますが、解決策は効果的な結果をもたらしませんでした。任意の 他の選択肢が大歓迎です。マルチテナントデータベースのマッピング

+0

テキストを読み取り可能な形式にしてください。 –

+0

おそらく、さまざまなデータベースにわたってユーザーIDをリンクするテーブルを持つデータベースですか? – Prescott

+0

これを試しましたが、最初のデータベースのuserIDを取得できません – Aaraadhana

答えて

0

IマルチテナントMySQL用で行った方法である:すべてのデータ全てテナントと

  • メインデータベースが、各テーブルには、テナント
  • によってデータを分離 tenantID列を有します
  • テナントごとに複数のデータベースを作成しますが、そのデータベースはメインデータベースを参照するmysqlビューで埋められます。例:

私の状況で

# ie. main database has tables: users, and invoices 
# if you have a new tenant named "acme", then: 
create database acme; 
create view acme.users as select * from maindb.users where entityID=2; 
create view acme.invoices as select * from maindb.invoices where entityID=2; 

、これは私が(私はマルチテナントを使用するつもりだった知っていた前に建てられた)私の以前のいずれかのクエリを変更する必要が許可されていません。私がしなければならなかったのは、適切なデータベースを選択するだけで、すべてのデータが自動的に分離されました。

しかし、実際のデータをすべて同じデータベースに保存することで、メンテナンスが簡単になりました。

関連する問題