2012-04-23 184 views
0

那麼我們正在開發一個多租戶應用程序,並帶有獨立的 數據庫。所有模式對於N個獨立的 數據庫具有相同的結構。我們使用MySql和aspx來構建一個Web應用程序。 現在會出現這樣的情況,即可能有相同的用戶在不同的數據庫中。我們需要一種方法來鏈接那些用戶擁有他/她的數據並將其顯示在下拉列表中的數據庫 。 當用戶登錄時鏈接數據庫後,他/她能夠在他/她的數據所在的下拉列表中查看所有可用數據庫。 當用戶更改下拉列表值時,他/她 應該能夠立即更改數據庫並查看他/她的 數據形成鏈接的數據庫。我們已經建立了多租戶 應用程序和每一件事情都很好。問題是 如何映射特定 用戶的主數據庫中的所有數據庫。每個用戶在單獨的數據庫中都有獨立的唯一ID。 因此,除了數據結構以外,用戶在多租戶數據庫 中沒有任何共同之處。我們嘗試將所有用戶唯一ID 存儲在主數據庫中,並將其與其他唯一ID進行關聯,其中 用戶所在的位置,但解決方案沒有給出有效的結果。任何 其他替代是最受歡迎的。映射多租戶數據庫

+0

請格式化,以便文本可讀。 – 2012-04-23 04:51:22

+0

也許一個數據庫有一個鏈接用戶數據庫各個數據庫的表? – Prescott 2012-04-23 05:14:47

+0

我們試過那個,但是我們不能檢索第一個數據庫的用戶ID – Aaraadhana 2012-04-23 05:30:54

回答

0

我拍得多租戶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; 

在我的情況,這讓我沒有改變我的任何先前查詢(之前,我知道我要使用多租戶被修造)的。我所要做的只是選擇合適的數據庫,並且所有數據都是自動分開的。

但保持實際數據都在同一個數據庫中,這簡化了維護。