Para aumentar nossos conhecimentos, fizemos alguns testes utilizando Multi Tenant com Pentaho 5.1.

A idéia é fazer com que o Pentaho identifique qual Banco de Dados deve ser utilizado de acordo com o usuário logado.

Encontramos alguns artigos utilizando Pentaho 4.8, mas sem muita documentação sobre o 5.

Ainda não conseguimos fazer o Saiku remover o cache em caso de mudança de Banco de Dados, porém, ao limpar o cache, funciona normalmente. Se alguém tiver alguma sugestão, sobre esse assunto, por favor, coloque nos comentários.

Segue os passos:

Configuração de arquivo

Edite o arquivo pentaho-solutions/system/pentahoObjects.spring.xml

substitua o trecho:

1
2
3
4
<bean id="IDBDatasourceService" class="org.pentaho.platform.engine.services.connection.datasource.dbcp.DynamicallyPooledOrJndiDatasourceService" scope="singleton">
    <property name="pooledDatasourceService" ref="pooledOrJndiDatasourceService" />
    <property name="nonPooledDatasourceService" ref="nonPooledOrJndiDatasourceService" />
  </bean>

por:

1
2
<!--Inicio Tenant --><br>
  <bean id="IDBDatasourceService" class="org.pentaho.platform.engine.services.connection.datasource.dbcp.tenantaware.TenantAwareLoginParsingDatasourceService" scope="singleton"><br><br>      <property name="requireTenantId" value="false" /> <br><br>      <property name="datasourceNameFormat" value="{0}-{1}" /><br><br>      <property name="tenantSeparator" value="@" /><br><br>      <property name="tenantOnLeft" value="false" /> <br><br>  </bean><br><br><!-- Fim Tenant -->

Configuração de ambiente

No Pentaho, crie um Datasource para cada Banco de Dados, utilizando o formato [CODIGO]-[NOME]. Por exemplo: 1-Conexao, 2-Conexao, etc..

É importante que todos tenham o mesmo NOME, modificando apenas o código.

Após a criação dos DataSources, crie usuários no formato [USUARIO]@[CODIGO]. Por exemplo: knowsolution@1, knowsolution@2, etc…

O código no nome do usuário deve corresponder ao código do Datasource. No exemplo anterior, o usuário knowsolution@1 irá acessar o DataSource 1-Conexao, equanto o usuário knowsolution@2, o DataSource 2-Conexao

Testando

Para testar, logue com um dos usuário no Pentaho, crie uma nova visualização no saiku, limpe o cache e veja os dados. Faça logout e conecte com o outro usuário (ou utilize outro navegador), e faça o mesmo processos no Saiku. Você verá que os dados são os referentes ao outro banco de dados.

Outra forma de testar é utilizando um Dashboard no CDE, marque a opção cache do Datasource no CDE como false e faça o login com os diferentes usuários.

Caso não consiga ou identifique algum problema neste pequeno tutorial, deixe nos comentários!

 

Leandro Guimarães
Leandro Guimarães
Leandro Guimarães é o fundador da Know Solutions e trabalha com Business Intelligence desde 2009. Possui amplo conhecimento em Modelagem Dimensional, Data Warehouse e na plataforma Pentaho.

Foi aluno de Ralph Kimball, maior referência mundial no assunto, no curso de Modelagem Dimensional realizado pela Kimball University, em Estocolmo – Suécia.

Já ministrou diversas palestras sobre o tema e atualmente mantêm o blog da Know Solutions, com referências sobre Business Intelligence.

Pós Graduado em Gestão de Projetos de Software pela PUC – Paraná. Trabalhou durante 7 anos na empresa Siemens onde participou de projetos em diferentes países.