我必须在j2ee中开发一个多租户SaaS应用程序,从Iaas和PaaS开始实现三个云模型,我选择了openhift起源的openstack。 SaaS应用程序的第一个标准是多租户,我知道有3种方法可以实现它 - 单独的数据库 - 共享数据库,单独的模式 - 共享数据库,共享架构 我迷失在这里,因为许多框架如ATHENA,ORM就像hibernate一样,还有TOPLINK。我需要帮助才能知道实现多租户java应用程序的最佳方法。
答案 0 :(得分:1)
我喜欢共享数据库共享模式方法 - 从广义上讲,每个表都有一个org_id列,每个查询都以当前用户org_id作为过滤器运行。
我喜欢这种方式,因为您可以将数据库与较小的租户进行平衡,而不是根据每个租户的规模设置自定义规模
我会完全跳过ORM,在多租户部署中太容易搞砸了,并采用MyBatis解决方案,允许对查询进行验证和审核,因为它们都集中在少数几个地方而非全部在代码上。
如果你真的需要一个ORM,我知道Hibernate带有its own support,但我不喜欢图书馆强迫我使用特定的数据结构,因为它会带走灵活性。只要确保获得会话的唯一方法是自动添加租约,如果这是一个手动过程,那么很容易让开发人员搞砸了。
找到不同方法的大量资源和成本效益分析