Postgres-XL is a horizontally scalable open source SQL database cluster, flexible enough to handle varying database workloads:
- OLTP write-intensive workloads
- Business Intelligence requiring MPP parallelism
- Operational data store
- Key-value store
- GIS Geospatial
- Mixed-workload environments
- Multi-tenant provider hosted environments
Postgres-XL (eXtensible Lattice) allows you to either partition tables across multiple nodes, or replicate them. Partitioning (or distributing) tables allows for write scalability across multiple nodes as well as massively parallel processing (MPP) for Big Data type of workloads.
Replicated tables are typically static data that does not change very often. Replicating them allows for read scalability.
Postgres-XL is a fully ACID compliant, transactional database that not only provides you with a fully consistent view of your data at all times, it also uses cluster-wide Multi-Version Concurrency Control (MVCC). When you start a transaction or query in Postgres-XL, you’ll see a consistent version of your data across the entire cluster. While you are reading your data on one connection, you could be updating the same table or even row in another connection without any locking. Both connections are working with their own versions of the rows, thanks to global transaction identifiers and snapshots. Readers do not block writers and writers do not block readers.
- Global Transaction Monitor (GTM)
The Global Transaction Monitor ensures cluster-wide transaction consistency. GTM is responsible for issuing transaction ids and snapshots as part of its Multi-version Concurrency Control.
The cluster may also optionally be configured with a GTM Standby, for improved availability.
In addition, one may configure a GTM Proxy at the Coordinators for improved scalability to reduce the amount of communication with GTM.
The Coordinator manages the user sessions and interacts with GTM and the data nodes. The Coordinator parses and plans queries, and sends down a serialized global plan to each of the components involved in a statement.
- Data Node
The Data Node is where the actual data is stored. The distribution of the data can be configured by the DBA. For improved availability, one can configure warm standbys of the data nodes to be failover-ready.
Want to get started? See downloads.