Postgres-XC
From PostgreSQL Wiki
Contents |
Project Overview
Postgres-XC (eXtensible Cluster) is a multi-master write-scalable PostgreSQL cluster based on shared-nothing architecture, developed by NTT and EnterpriseDB. Introductory information is found here (pdf). Architecture description is found here (pdf).
Features of PG-XC include:
- Write‐scalable PostgreSQL cluster
- More than a 3.4X scalability performance speedup with five servers, compared with pure PostgreSQL (DBT‐1)
- 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
Postgres-XC was formerly known as Postgres-2, but the name was changed due to concerns over it not being unique.
Project Status
Now under development.
- First release is available at this site.
- Going to talk at PGCon2010.
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
Now released.
Status Datail
Infrastructure for the scalability and transaction management is done. Now the team is working to extend the coverage of statements. Next intermediate release is planned in the week of PGCon2010. V.1.0 is planned at the end of June, 2010.
Details of the roadmap will also be presented in PGCon2010.
Contacts
Developer: Koichi Suzuki, Mason Sharp, Pavan Deolasee, Andrei Martsinchyk, Michael Paquier
Preferred method of contact: write to pgsql-cluster-hackers at postgresql.org, postgres-xc-general at lists.sourceforge.net or postgres-xc-developers at lists.sourceforge.net.
URL
We have Development Page and Project Home. Project Home will be disclosed shortly.
General Information
| Scalability | Evaluated with ten servers. Potentially twenty to thirty servers. | |
| Read scaling | Yes | |
| Write scaling | Yes | |
| Triggers/procedures | No | Procedures will be supported by the end of June, 2010. |
| Parallel query | No | Limited to very simple statement. More general statement support is planned at the end of September, 2010. |
| Failover/High Availability | No | |
| Online provisioning | No | |
| PostgreSQL upgrades | No | All the node 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 | Same as PostgreSQL core | C, flex and bison. |
| Licensing | LGPL v.2 | |
| Complete clustering solution | No | Pooler and high-availability middleware is outside the scope of the project. |
| PostgreSQL versions | 8.4.3 |
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.
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
The project needs to extend supported statements.
At present, Postgres-XC supports statements which can be executed in single node or in single step. In this sense, we don't support aggregate functions so far. Not yet tested that applications are thread-safe. We don't support user functions, user aggregates, views or subqueries either.
We have to provide cluster-wide installer and operation utilities.
All these issues already have solutions and will be implemented in following releases. Please see project home page (coming soon).
In addition, we need some research work for solutions on following issues.
- 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?
- Trigger. Trigger needs some asynchronous feedback mechanism from Data Node to Coordinator. Can it be reasonably efficient?
Support
NTT (page is in Japanese) and EnterpriseDB are supporting the project.
Other Information
The project is now actively enhancing the feature. Please visit Project Home Page for details of our roadmap.
