lylhelin 发表于 2013-1-14 23:01:47

用 Slice 扩展 OpenJPA 应用程序

简介
Slice 将 OpenJPA 扩展用于一个分布式的、水平分区的数据库环境。一个使用单个数据库的基于 OpenJPA 的应用程序可以由 Slice 针对数据跨多个数据库分区存储的存储环境进行重新配置。这种升级不需要在应用程序代码或数据库模式方面做任何更改。
水平数据分区最直接的好处是在有大量数据时提升性能,尤其是对于那些作业或查询的事务单元通常都限于整个数据集的子集的应用程序(比如,多租户 Software-as-Service 平台或按地理区域分区的客户数据库)。在这类场景下,像 Slice 这样的基于数据分区的解决方案会非常有用,因为 Slice 不仅可以跨多个分区并行执行所有的数据库操作来充分利用多核硬件以及 I/O 绑定操作的并发性,而且数据库查询还可以针对于分区的子集。
本文将介绍:

[*]如何为 Slice 配置一个应用程序
[*]Slice 如何跨分区分配数据
[*]它如何聚集和分类来自很多分区的查询结果
[*]为了让分区能有效地并行操作应满足的条件
[*]为了扩展 OpenJPA 运行时来适应分区的数据库,Slice 应解决的核心设计/架构挑战
JPA 概览
Java™                  Persistence API (JPA) 是关于管理对象持久化到系数据库的一个规范。JPA                内的核心概念构成是 Persistence Unit 和 Persistence Context,被认为是两个接口:javax.persistence 包内的 EntityManagerFactory 和 EntityManager。一个持久单元表示:

[*]一组持久 Java 类型
[*]它们的映射规范
[*]数据库连接属性
[*]一组特定于供应商的定制属性
一个持久上下文表示的是一组管理的持久实例。持久性上下文也是持久操作的基础界面,比如:

[*]创建新实例
[*]通过实例的主 ID 找到实例
[*]通过基于字符串或动态构建的查询选择实例
[*]划分事务边界
一个持久上下文管理这些实例,应用程序对持久状态的任何变化均由                JPA 提供者监视。在事务完成或上下文清仓时,会自动更新有关的数据库记录。
总之,JPA 所倡导的是一种应用程序编程模型,其中持久性操作和查询涉及 Java 对象模型,而提供者负责将对象模型映射到数据库模式:一个 Java 类转变成一个或多个数据库表,Java 类型的持久性属性转变为数据库列、关系变成外键等;并且,持久性操作也变成了 SQL 语句:Java 的 new() 操作符映射为一个或多个 INSERT,find() 映射为 SELECT,持久实例的 setter 方法变为数据库的一个 UPDATE 语句。
<div class="ibm-container ibm-alt-header dw-container-sidebar">slice 与 Slice

<div class="ibm-container-body">      在本文中,您将看到小写的 slice 以及作为专有名词的 Slice。我们将使用 slice(小写)代表数据库子集,用 Slice(专有名词)表示这个运行时 OpenJPA 模块。
页: [1]
查看完整版本: 用 Slice 扩展 OpenJPA 应用程序