数据库分片和 JPA
Posted
技术标签:
【中文标题】数据库分片和 JPA【英文标题】:Database sharding and JPA 【发布时间】:2012-11-20 06:08:25 【问题描述】:我正在开发一个 Java 应用程序,该应用程序在不同的 PostgreSQL 服务器中需要 horizontal partitioning of data。我想使用 JPA 框架和 Spring 进行事务管理。
最流行的使用 JPA 分片数据的框架似乎是 Hibernate Shards,它似乎不再处于开发阶段,以及 OpenJPA Slice,它不支持虚拟分片(我的要求之一)。有没有我遗漏的其他选项,或者有办法绕过 OpenJPA 限制?
提前感谢您的意见!
【问题讨论】:
能否详细说明“虚拟碎片”? 嗨欧宾。基本上,虚拟(或逻辑)分片是不驻留在单独服务器中的分片,而是位于具有某种边界的同一服务器上,例如在单独的架构中。 Hibernate 的带分区的多租户不支持您的用例吗? @dinukadev - 我刚刚遇到了 Hibernate 多租户,我正在调查它。另一种可能的解决方案是使用 OpenJPA Slice,并为每个模式使用不同的用户,并使用不同的默认搜索路径。 你怎么知道它不支持虚拟分片?看起来每个切片都是由可以指向同一台机器的 jdbc 连接属性定义的。 【参考方案1】:您是否研究过 EclipseLink?它支持JPA2和水平分片。
documentation 表示它支持对多个数据库实例进行分片
【讨论】:
【参考方案2】:你可以看看Sharding-JDBC,它是一个分片数据库和表的JDBC驱动,可以适配任何ORM框架。
【讨论】:
以上是关于数据库分片和 JPA的主要内容,如果未能解决你的问题,请参考以下文章