我们希望通过基于用户组将数据推送到不同的数据库来水平扩展。这是必需的,因为数据量巨大。现在我们只关注RDBMS。 Spring和hibernate / Eclipse-link是我们的选择。我几乎没有问题,我看到有多次问过类似的问题。我再次问这个问题,因为我想了解更多细节。
使用多个数据库时应遵循的最佳做法是什么?(下面的详细问题)
多个会话工厂或单个会话工厂?推荐的方法是什么?我看到很多帖子都在谈论创建多个会话工厂,动态数据源实现使用单个会话工厂,并根据用户组提供不同的数据源。使用具有多个用户组的单个会话工厂的任何可伸缩性问题?
所有会话都与会话工厂或基础数据源相关联?我假设我会根据每个db创建多个连接池吗?
Spring的动态数据源实现可以处理多个数据库还是Hibernate多租户?
在使用动态数据源时,他们遇到的有关事务管理的问题是什么?除了二级缓存之外,我没有看到任何帖子。
如果在动态数据源的情况下使用c3P0进行连接池的处理方式?
上述方法的任何Dos和donts?
答案 0 :(得分:0)
Hibernate人和Google开发了一个名为Hibernate Shards的项目。它可以满足您的需求,跨多个数据库分片数据。
它提供名为:
的接口每一个都扩展了Hibernate的经典界面(名字相似!)
通过使用Hibernate Shards,所有多租户逻辑都落后于Hibernate,大部分时间你都不需要处理它。
所以事务管理仍然存在,在您的情况下,您将拥有一个分布式JTA事务管理器,如果您使用JBoss等应用程序服务器会更容易。