Conceito Multi Tenant
09/05/2015 16:04
0
Gostaria de saber o que é o Conceito Multi Tenant.

Vejo isso em muitos tutoriais porém nunca consegui compreender.  Pelo que entendi até hoje é como se uma instancia de um domínio pudesse ser usada por outros usuários  (inquilinos). Não encontrei vantagens em seu uso, mas usuários avançados sempre usam este conceito.  Tem vários plugins que também o usam.

Alguém poderia me explicar se estou certo e como poderia usar esse conceito na prática em Grails?
Tags: @MultiTenant, inquilino


1
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.
09/05/2015 16:59


0
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?
09/05/2015 20:29


1
Rodrigo,
  MultiTenancy não é uma do Hibernate ou do Grails, é um conceito que pode ser aplicado no BD, é uma técnica de isolar grupo de dados no banco.
  Se tiver interessado no assunto de forma geral, achei apenas esses links: mais objetivo, mais complexo
  O Grails tem um plugin para realizar esta tarefa para você: multi-tenant-single-db
  Se for usar o plugin do grails, esta documentação é fundamental
Com o plugin do single-db, para isolar uma domain, basta fazer assim(após ter configurado o plugin corretamente, é claro):
import grails.plugin.multitenant.core.annotation.MultiTenant

@MultiTenant
class MyDomain  implements Serializable {
?String umAtributo

?static mapping = {
?tenantIdIndex indexColumn: [name: "tenantId", type:Integer]
}

}


 
10/05/2015 13:12


0
Desconcidere as "?", é lixo do CTRL+C, CTRL+V
10/05/2015 13:14


0
Dyego,

muito obrigado pela sua colaboração.

Com certeza vou estudar estes textos.

Abraço
11/05/2015 10:55



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto