多个数据库的Java数据库连接池(Shards)

时间:2009-09-22 16:15:28

标签: java connection-pooling sharding

我想知道为使用分片的Web应用程序实现数据库连接池的最佳技术是什么。从我能说的最多(全部?)开源实现仅支持后面的单个数据库。至少,我还没有找到支持分片的方法。

此外,即使我使用分片,并非所有数据库都具有相同的模式,我也将拥有其他数据库。我不确定这是否重要。

到目前为止,我能想出的唯一解决方案是编写一个位于多个不同池之上的层。每个不同的池可以是任何可用的单个数据库实现。

是否已有解决方案?否则最好的技术是什么?

提前致谢,

斯蒂芬。

3 个答案:

答案 0 :(得分:3)

我认为没有支持分片的开源实现。也许,没有真正需要,因为在多个数据库池之上创建一个层并不太难。它只需要一个分片映射函数(例如散列函数)和一个管理器类来跟踪多个池。

如果您担心并非所有数据库都具有相同的模式,您可以将其他模式跟踪配置添加到您的经理类中,以便它知道哪些分片可以为模式提供服务。也就是说,除了db pool之外,还需要跟踪模式到分片信息。这不是真正的额外工作,因为您无论如何都需要分片配置来确定如何从池中拉出正确的分片(例如,用户ID mod 10 = 1应从分片1中提取)

祝你好运

答案 1 :(得分:1)

您目前使用的技术堆栈是什么?我知道Hibernate有一个分片项目,但我没有使用它,只是听了一些关于它的播客。

可以找到有关它的更多信息here。此外,可以找到前面提到的播客here

播客解释了一般的分片问题,Hibernate插件所处理的一些问题,然后解释了他们预期的前进道路。希望有所帮助!

答案 2 :(得分:1)

您可以查看hibernate shards project