Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Rel arsitektur multitenant, akses pelingkupan ke banyak tenant

Meskipun menemukan banyak contoh multitenancy dalam aplikasi Rails ketika saya pertama kali melakukannya, saya juga tidak dapat menemukan satu pun yang membuat saya merasa benar-benar nyaman. Tapi akhirnya saya punya solusi yang saya senangi.

Saya mulai dengan 'multitenancy with scopes' railscast

http://railscasts.com/episodes/388-multitenancy-with-scopes

kemudian melihat membuat pekerjaan multi-penyewaan dengan merancang subdomain menggunakan panduan ini:

https ://github.com/plataformatec/devise/wiki/How-To:--Isolate-users-to-log-into-a-single-subdomain

Tapi saya tidak menganggapnya begitu saja; Saya terjun untuk benar-benar memahami bagaimana rancangan bekerja seperti itu.

Setelah saya memiliki semua itu, saya siap untuk permata multitenant:

https://github.com/wireframe/multitenant

Tapi saya tidak berhenti di situ. permata multitenant mengharuskan Anda mengatakan Multitenant.with_tenant kapan pun Anda ingin segala sesuatunya tercakup dengan tepat, jadi saya membuat TenantController yang terlihat seperti ini:

  around_filter :scope_current_tenant

  def scope_current_tenant
    begin
      Firm.current = Firm.find_by_subdomain!(request.subdomain)
    rescue
      raise ActionController::RoutingError.new('Not Found')
    end

    Multitenant.with_tenant Firm.current do
      yield
    end

    ensure
      Firm.current = nil
    end
  end

dan kemudian pengontrol apa pun yang saya ingin dicakup oleh penyewa mewarisi dari TenantController daripada ApplicationController. Dengan begitu saya tidak perlu mengingat apa pun dalam detail pengontrol, itu 'berhasil'. satu-satunya hal yang harus dipikirkan pengembang adalah 'apakah ini pengontrol yang menangani data penyewa?'

Meskipun ini masih bergantung pada pengembang yang melakukan beberapa hal dengan benar (mewarisi dari pengontrol yang tepat, mengatakan 'acts_as_multitenant' dalam model, praktiknya bekerja dengan sangat baik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah basis data Laravel 5

  2. Kunci asing di MySQL?

  3. Permintaan tidak mengembalikan hasil seperti yang diharapkan

  4. pilih nilai acak berdasarkan peluang probabilitas

  5. Resque Mysql2::Error:Pengguna telah melampaui sumber daya 'max_user_connections' (nilai saat ini:10)