Relatório para o aplicativo web multi-tenant

votos
1

Nós temos uma aplicação Web-Based Enterprise multi-tenant usando Hibernate sobre MySQL. Nós usamos Jasper Reports para quaisquer relatos de que os nossos clientes exigem, mas agora precisamos também oferecer relatórios ad-hoc para que os usuários podem executar suas próprias consultas.

Como tem outros conseguido isso?

Estou a pensar que eu pode:

  1. Fornecer uma exportação completa em formato Excel ou xml onde eu hidratar as entidades para que qualquer @ManyToOneé substituído pelo toString()dessa entidade. Isso seria para que os dados realmente faz sentido para o usuário, em vez de um monte de IDs de chave estrangeira.

  2. Deixá-los correr SQL contra uma cópia do banco de dados. Assegurar que cada mesa tem uma TENANT_ID, deixá-los aceder a cópia do banco de dados, mas acrescentar o ID para cada consulta nos bastidores. Eu poderia até mesmo garantir que esta cópia de banco de dados só tiveram seus dados nele. Classificar de derrotas a abordagem multi-tenant toda a embora.

Publicado 13/07/2009 em 09:37
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Como complexo vai essas consultas de usuário ser? SQL arbitrária? Ou você pode obter usando HQL ou Criteria (eo que eu realmente quero dizer com isto é que você vai permitir que os usuários definir algum tipo de QBE na UI, mas você vai ser o único a construir a consulta real)? Neste último caso filtros pode ajudar um pouco também.

Eu não me preocupei com (1) a menos que os resultados da consulta são sempre listas simples. Você pode representar hierarquias / relacionamentos em XML, mas eu duvido que seus usuários vão apreciar este como eles teriam que processá-lo. E abordagem toString () é praticamente garantido para sair pela culatra porque diferentes usuários são obrigados a estar interessado em diferentes representações do mesmo objeto (por exemplo, se você lista de As que estão ligadas a Bs voltar, user1 gostaria resultado diferente do B.toString ( ) seguida usuário2).

(2) deve funcionar se você realmente precisa consultas SQL arbitrárias. Dependendo do quão complexo o seu banco de dados é e quantos usuários você tem, você pode ser capaz de obter, com a criação de pontos de vista (por usuário) em vez de cópias de banco de dados reais.

Respondeu 13/07/2009 em 19:22
fonte usuário

votos
0

Eu tenho o mesmo problema e estou pensando (duro) sobre a implementação de um driver ODBC personalizado que "esconde" o multi-tenancy. Confira ODBC OpenSDK direto de dados ...

http://www.datadirect.com/products/odbc/index.ssp

Respondeu 02/02/2010 em 19:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more