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.
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
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.