Olá Rodrigo,
Pense na seguinte situação: Você tem uma aplicação que controle estoques, e você tem 2 clientes diferentes, o cliente A não pode interferir no estoque do cliente B e vice-versa.
O MultiTenant é uma maneira de resolver este problema sem ter que separar sua aplicação ou BD em 2 instâncias independentes, todo dado que só pode ser visto por 1 cliente(tenant/inquilino) específico é marcado com o identificador(tenant_id) do client. Assim você tem 1 aplicação e 1 BD que são acessados por N usuários diferentes e cada usuário só tem acesso aos dados que pertencem a ele (dados de 1 tenant específico) e aos que são comuns a todos(dados sem tenant).
Esta abordagem é muito comum em SaaS, onde o sistema roda na nuvem e diversos clientes acessam este serviço.
Existem, basicamente, 3 estratégias de MultiTenancy, como descrito em http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch16.html#d5e4739
dica: Use com moderação, avalie se sua aplicação possui um nível alto de isolamento entre os tenants (inquilinos/clientes), pq se tiver muitos dados comuns, compartilhados ou acessos a tenants diferentes gera muita dor de cabeça.
Olá Dyego,
obrigado pela dica.
Nossa eu preciso muito disso! Fico criando regras de isolamento para cada usuário. Você saberia de algum exemplo ou tutorial que poderia me aprofundar no assunto? O MultiTenant é do Hibernate do Groovy ou do Grails?
Digamos que eu queira isolar um determinado domínio para que somente usuários de um grupo possam acessá-los, como eu faria este tipo de implementação?
Desconcidere as "?", é lixo do CTRL+C, CTRL+V
Dyego,
muito obrigado pela sua colaboração.
Com certeza vou estudar estes textos.
Abraço