Postgres-R

From PostgreSQL wiki
Jump to navigationJump to search

Project Overview

Postgres-R provides efficient, fast and consistent multi-master replication for shared nothing clusters. It integrates tightly into Postgres and is written in C as well. It is based on scientifically proven algorithms and uses a Group Communication System for all communication and consensus between the nodes.

Project Status

Prototype, not ready for production

Project Contacts

website: www.postgres-r.org

lead developer: Markus Wanner

mailing list: postgres-r-general on pgfoundry

General Information

Scalability targeting dozens of servers and more.
Read scaling yes linear to number of nodes
Write scaling yes very dependent on workload
Triggers/procedures/subtransactions yes fully supported and transparent to the application
Parallel query no currently not implemented, but planned
Failover/High Availability yes configurable for different levels of availability, dependent on GCS
Online provisioning yes nodes may be added or removed any time
PostgreSQL upgrades yes designed for upgrades, no official release, yet
Detached node/WAN no async operation is planned, though
PostgreSQL core modifications required yes
Programming languages same as PostgreSQL core C, flex and bison.
Licensing same as PostgreSQL core BSD-like
Complete clustering solution no requires a GCS
PostgreSQL versions CVS HEAD

Clustering Model

General Model: shared-nothing, eager (conflict-free), update everywhere (multi-master) database replication

Postgres-R is an extension to the relational database system Postgres, providing efficient, fast and consistent database replication for shared-nothing clusters. It is designed to be as transparent as possible to the client, stable and secure by default.

Use Case

The primary use of Postgres-R is to build load-balancing and highly available database systems on commodity hardware. Furthermore, due to the flexible architecture of Postgres-R it is easily possible to extend or adjust the replication process to many different means. Compared to common single node database systems, a Postgres-R cluster is more reliable and scales better while being cheaper and more flexible.