报告多租户Web应用程序

时间:2009-07-13 08:37:49

标签: hibernate web-applications reporting jasper-reports multi-tenant

我们有一个使用Hibernate over MySQL的基于Web的多租户企业应用程序。我们将Jasper Reports用于客户需要的任何报告,但现在我们还需要提供临时报告,以便用户可以运行自己的查询。

其他人如何完成这项工作?

我想我可以:

  1. 在excel或xml中提供完整导出 格式,其中我实体水合,以便任何@ManyToOne被该实体的toString()替换。这样,数据实际上对用户有意义,而不是大量的外键ID。

  2. 让他们针对数据库副本运行SQL。确保每个表都有一个 TENANT_ID,让他们访问 数据库副本但附加ID 幕后的每一个问题。我甚至可以确保此数据库副本只包含其数据。尽管如此,有点打败了整个多租户方法。

2 个答案:

答案 0 :(得分:1)

这些用户查询有多复杂?任意SQL?或者你可以通过使用HQL或Criteria来获得(我真正的意思是你会让用户在UI中定义某种QBE,但你会构建实际的查询)?在后一种情况下,过滤器也可能有所帮助。

除非查询结果始终是普通列表,否则我不会打扰(1)。您可以用XML表示层次结构/关系,但我怀疑您的用户是否会喜欢它,因为他们必须处理它。并且toString()方法几乎可以保证适得其反,因为不同的用户必然会对同一对象的不同呈现感兴趣(例如,如果返回与B链接的As列表,则user1会希望从B.toString获得不同的结果( )然后user2)。

如果你真的需要任意的SQL查询,

(2)应该可以工作。根据您的数据库的复杂程度以及您拥有的用户数量,您可以创建视图(每个用户)而不是实际的数据库副本。

答案 1 :(得分:0)

我遇到了同样的问题,并且正在考虑(努力)实现一个“隐藏”多租户的自定义ODBC驱动程序。查看Data Direct OpenSDK ODBC ...

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