OpenJPA Slice 可能是分片数据库环境中 JPA 应用程序的一种选择。
OpenJPA Slice 从 1.2 版开始可用,并且随 Websphere 7.0 及更高版本一起提供。Slice 的基本使用约定是保留完全相同的基于 JPA 的应用程序代码,以处理水平分区的数据库分片,而不会以任何方式影响数据库模式。数据库分片可能来自不同的供应商。
Slice 遵循基于策略的设计,允许用户应用程序控制哪些分片/分片将保留新实例,查询将如何针对分片子集等。
基本限制(在任何分片环境中都很典型)是持久域模型应该遵循树约束模式。本质上,给定一个实例 x 存储在分片 A 中,x 的持久闭包,即从 x 直接或间接可达的实例集,也必须存储在同一个分片 A 中。当您持久化 x 时,Slice 会自动计算闭包。
如果应用程序可以承受这样的限制,那么 Slice 可能是一个很好的选择。
有时,某些实例可能会在关闭之间共享,例如国家代码或货币代码。Slice 确实提供了跨多个分片复制此类“主数据”类实例的规定。
支持与分片阿贝尔/可交换的聚合操作(MAX、MIN、SUM)。不支持 AVG 等非阿贝尔聚合。也支持排序或 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-