使用JPA进行哈希分区/分片的库

7

我的部门决定为我们的一些大型Oracle数据库采用哈希分区/分片。我们将把实体分散到不同的模式中。我被指派进行一个试验来评估不同的JPA实现是否适合这种情况。

我被告知要着重考虑的是EclipseLink和Apache OpenJPA/Slice。我们过去一直专门使用Hibernate,但Hibernate Shards处于测试版,而且似乎已经不再积极开发(最后一次发布是在2007年),所以我们不考虑它。

我将进行自己的评估和试验性实现,但我不相信我能在给定的时间内对这些实现的整体质量有一个好的感受。如果您正在生产环境中使用OpenJPA和/或EclipseLink,特别是如果您的数据库是共享的,我想听听您的经验(积极和消极),您对它们的整体质量的看法,以及如果再次有机会,您是否会做出同样的选择。

3个回答

4

1
那么,你用过它吗?如果是的话,你对它有什么看法?我不需要文档链接,我已经知道它们都支持哈希分区。 - Kaypro II

4

在分片数据库环境中,OpenJPA Slice可能是JPA应用程序的一种选择。

自版本1.2以来,OpenJPA Slice可用,并且还随Websphere 7.0及更高版本一起提供。Slice的基本使用契约是保留完全相同的基于JPA的应用程序代码,以便在水平分区的数据库分片上工作,而不会以任何方式影响数据库模式。数据库分片可能来自不同的供应商。

Slice遵循基于策略的设计,允许用户应用程序控制哪个分片/切片将持久化新实例,如何针对子集切片定位查询等。

基本限制(在任何分片环境中都是典型的)是持久域模型应遵守树约束模式。基本上,给定存储在分片A中的实例x,x的持久闭包即直接或间接从x可达的实例集合也必须存储在同一分片A中。当您持久化x时,Slice会自动计算闭包。

如果应用程序可以遵守这样的约束,则Slice可能是一个很好的选择。

有时,某些实例可能会跨闭包共享,例如国家代码或货币代码。Slice确实为在多个分片上复制此类“主数据”实例提供了规定。

支持与分片可交换/可交换的聚合操作(MAX、MIN、SUM)。不支持非阿贝尔平均值等聚合。还支持排序或Top-N查询。

有关Slice的更多信息,请参见以下参考资料

[1] OpenJPA用户手册:http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_slice

[2] IBM Developerworks文章:http://www.ibm.com/developerworks/java/library/os-openjpa/?ca=drs-


0

如果您愿意,可以使用外部工具。这些工具不仅可以将分片逻辑隐藏在应用程序开发人员之外,还可以隐藏在 BI 用户、数据库管理员等人员之外。请查看 ScaleBase


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接