Postgres-XC

== Now Moved ==
Postgres-XC Wiki page is now at new location. Please visit there for the latest information.
== Project Overview ==
Postgres-XC (eXtensible Cluster) is a multi-master write-scalable PostgreSQL cluster based on shared-nothing architecture, developed by Postgres-XC Development Group. Introductory information can be found here (pdf&odp).
 
Features of PG-XC include:
# Write‐scalable PostgreSQL cluster
#* More than 3× scalability performance speedup with five servers, compared with pure PostgreSQL (DBT‐1). Result as of 1.0 release. Ways to improve more scalability are known.
# Synchronous multi‐master configuration
#* Any update to any master is visible from other masters immediately.
# Table location transparent
#* Can continue to use the same applications.
#* No change in transaction handling.
# Based upon PostgreSQL
# Same API to Apps as PostgreSQL
== Project Status ==
Now under development.
* [https://sourceforge.net/projects/postgres-xc/ Version 1.2.1 is available.
* Project license same as PostgreSQL, meaining PostgreSQL license (like BSD).
* Gave numerous talks in Europe ( PGDay.eu 2010, PGSession #3), Asia (PGChina 2012, JPUG conference 2010 and JPUG conference 2012), America (PGBr 2011, PGOpen 2011, PGCon 2010 and 2012)
== Project Property ==
This is Postgres-XC property according to the guideline as suggested
here.
=== Overview ===
Please take a look at the top of this page.
=== Status ===
Version 1.2.1 released.
=== Status Detail ===
Infrastructure for the scalability and transaction management has already been done.
Now the team is working to extend the coverage of statements, as well as HA feature.
Latest version is v1.2.1.
Details of the roadmap can be found in the project home page.
=== Contacts ===
Core developers: Koichi Suzuki, Michael Paquier, Amit Khandekar, Ashutosh Bapat, Abbas Butt
Preferred method of contact: postgres-xc-general at lists.sourceforge.net or postgres-xc-developers at lists.sourceforge.net.
=== URL ===
We have Development Page and
Project Home.
PGCon2011 Cluster Summit page is here
PGCon2011 Developer Meeting page is here
=== General Information ===
Scalability 	Evaluated with ten servers. Potentially twenty to thirty servers. 	
Read scaling 	Yes 	
Write scaling 	Yes 	
Triggers/procedures 	Procedure: Yes 	Trigger not yet
Parallel query 	Now some of the queries can be executed in parallel in multiple data nodes.	
Failover/High Availability 	Yes 	Core features are available. External tools can be used for failover
Online provisioning 	No 	
PostgreSQL upgrades 	No 	All the nodes should be upgraded at the same time.
Detached node/WAN 	No 	Postgres-XC depends upon high speed communication.
PostgreSQL core modifications required	Yes 	
Programming languages 	C, flex, bison, bash, python, perl (same as Postgres) 	
Licensing 	BSD, PostgreSQL license 	
Complete clustering solution 	Yes 	High-availability feature is already available, will be strengthened with next releases
PostgreSQL versions 	9.3-based 	Planning to move to 9.4 once 9.4 stable branch is out
=== Model Summary ===
Synchronous multi-master.
=== Model description ===
Extracting transaction management into single server to provide transaction ID and snapshot, as well as other global values. Thus Postgres-XC provides consistent database view to any transactions running on any master.
Each table can be partitioned or replicated, as specified in CREATE TABLE statement. Distribution can be also done on a portion of nodes if wanted.
=== Use-case ===
Transactional use case.
* Large scale transactional application,
* Integration of multiple database applications.
* Dynamic load balancing in cloud environment, assigning computing resource dynamically depending upon prospect load.
=== Drawbacks ===
General PostgreSQL clauses are supported. There are more challenges related to clustering though:
* Tuple relocation. When the value of distribution column is updated, we have to relocate the tuple to appropriate one.
* Global Deadlock detection. As discussed in cluster-hackers mailing list, there's no experience how long it will take to detect it and if it is reasonable compared with simple timeout mechanism.
* Global constraint. Can we enforce unique or other constraint exclusion globally in multiple data nodes?
=== Support ===
Postgres-XC Development Group
Category:Replication
Category:Clustering