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

标签 java connection-pooling sharding

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

此外,即使我使用分片,并非所有数据库都具有相同的架构,因为我也会有其他数据库。我不确定这一点是否值得提及。

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

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

提前致谢,

斯蒂芬。

最佳答案

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

如果您担心并非所有数据库都具有相同的架构,您可以将额外的架构跟踪配置放入您的管理器类中,以便它知道哪些分片可以为该架构提供服务。也就是说,除了数据库池之外,您还需要跟踪架构以分片信息。这实际上并不是太多额外的工作,因为无论如何您都需要分片配置来确定如何从池中提取正确的分片(例如,用户 id mod 10 = 1 应从分片 1 中提取)

祝你好运

关于多个数据库(分片)的 Java 数据库连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461076/

相关文章:

java - Apache Solr 通过 SSL 进行分布式搜索

mongodb 分片键哈希算法

JavaFx ObservableList<String> sorted() 与 sorted(Comparator.<String>naturalOrder())

java - token "}"的语法错误,但我真的找不到它

scala - akka-http 中的连接池使用源队列实现线程安全吗?

c# - Linq to Sql : Change Database for each connection

算法题: Minimum Shard Movement

java - 使用 XPATH Java 从 XML 字符串读取值

java - if for 循环抛出自定义异常

java - 如何避免 Tomcat 应用程序 .war 文件重新部署时的 DB2 驱动程序类加载器内存泄漏