Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/DesignDocs/328937"

(Concepts)
(Concepts)
Line 31: Line 31:
  
 
Vertical Partitioning - Splitting the data in a database by table into separate  database instances.
 
Vertical Partitioning - Splitting the data in a database by table into separate  database instances.
 +
 
HA - High availability, to be fault tolerant to a single point of failure, be able to continue to function if one server goes down.
 
HA - High availability, to be fault tolerant to a single point of failure, be able to continue to function if one server goes down.
  

Revision as of 11:08, 28 October 2010

Design Specification: Data Partitioning

ER 328937

Feedback

Document History

Date Author Version Description & Notes
2010-10-28 James 0.1 Draft

Project overview

The ability to provide access to a databases cluster to improve scalability and fault tolerance.


Concepts

Oracle RAC - clustered database where each node replicates the entire data of the database.

UCP - Universal Connection Pool is part of Oracle JDBC and provides extended support for Oracle RAC

Horizontal Partitioning - Splitting the data in a table/database into separate logical partitions and storing that data in a separate database instance.

Vertical Partitioning - Splitting the data in a database by table into separate database instances.

HA - High availability, to be fault tolerant to a single point of failure, be able to continue to function if one server goes down.

Requirements

Phase 1:

  • Support data partitioning using range partitions.
  • Support round robin load balancing.
  • Support Oracle RAC using a separate data source per node.

Phase 2:

  • Support Oracle UCP and WebLogic RAC aware DataSources.
  • Support replication.
  • Support data partitioning using hash partitions.
  • Support data partitioning using value partitions.
  • Support pined/vertical partitioning.
  • Support random load balancing.
  • Support fail-over.

Design Constraints

Must support Oracle RAC. Must support WebLogic. Should support non-cluster aware databases and other databases and application servers.

Functionality

Testing

API

  • PartitionPolicy
    • @PartitionPolicy(value=Class<PartitionPolicy>)
  • RoundRobinPolicy
    • addConnectionPool(String)
  • @RoundRobinPolicy(connectionPools={String})
  • ReplicationPolicy
    • addConnectionPool(String)
    • @ReplicationPolicy(connectionPools={String})

ClassDescriptor

  • setPartitionPolicy(PartitionPolicy)

ServerSession, Server

  • setPartitionPolicy(PartitionPolicy)

Config files

  • orm.xml
<partition-policy class="org.acme.MyPolicy"/>
<round-robin-policy>
  <connection-pool>node1</connection-pool>
  <connection-pool>node2</connection-pool>
</round-robin-policy>
<replication-policy>
  <connection-pool>node1</connection-pool>
  <connection-pool>node2</connection-pool>
</replication-policy>

Documentation

Should be documented under JPA and performance sections.

Open Issues

Issue # Owner Description / Notes
1 Open
2
 Issue

Decisions

Issue Description / Notes Decision

Future Considerations

  • Additional partitioning policies.

Back to the top