Data partitioning can be used to scale an application across multiple database machines, or with a clustered database such as Oracle RAC.
Partitioning splits your data across each of the database nodes. There is horizontal partitioning, and vertical partitioning. Vertical partitioning splits your data by class or table across multiple database nodes.
For horizontal partitioning each database node will have the same tables, but each node's table will only store part of the data. You can partition the data by the data values, such as range partitioning, value partitioning, hash partitioning or a custom partitioning policy.
Data replication can be used to backup data, for fault tolerance and fail-over, or for load balancing and scaling the database.
EclipseLink supports data partitioning, replication, load-balancing and fail-over. Several different partitioning policies are supported:
- @HashPartitioning - partition data by hashing a field value into a set of connection pools/database nodes.
- @ValuePartitioning - partition data by mapping the value of a field to a different connection pool/database nodes.
- @RangePartitioning - partition data by mapping a range of values of a field to a different connection pool/database node.
- @PinnedPartitioning - pin data to a specific connection pool/database node (vertical partitioning).
- @ReplicationPartitioning - replicate data to a set of connection pools/database nodes.
- @RoundRobinPartitioning - load-balance requests to a set of connection pools/database nodes.
- @UnionPartitioning - union the results of a request to a set of connection pools/database nodes.