Q. What does XL stand for?
XL is short for eXtensible Lattice. It also connotes an extra large version of PostgreSQL, in this case across multiple systems.
Q. Is this a “NoSQL” solution?
No, Postgres-XL supports traditional SQL, strongly conforms to ANSI SQL:2008, is fully acid, all while being scalable. You can however certainly use it as a key-value store and take advantage of JSON and hstore functionality.
Q. Is the data “sharded”?
Yes. Postgres-XL distributes the data amongst multiple nodes, and, crucially, it ensures a global consistent view of the data thanks to cluster-wide MVCC (Multi-version Concurrency Control) via the Global Transaction Manager component. Other commercial and non-commercial sharding solutions may not guarantee such consistency and ACID properties.
Q. Where can I find detailed documentation about Postgres-XL?
Online documentation is available here. You can also build the complete documentation from the sources.
Q. Is Postgres-XL formally tested before releasing?
Yes, XL undergoes extensive testing from contributors before a release is announced. You can catch a glimpse into the techniques used in this blog post.
Q. Are write-intensive applications supported?
Yes, write-intensive applications can take advantage of Postgres-XL running on multiple servers and spreading out the write load. Postgres-XL is well-suited for OLTP.
Q. Are read-heavy applications supported?
Yes, with read-intensive applications data is spread out amongst multiple nodes, effectively giving you more cache and more hardware resources to serve it. It eliminates the need for other solutions such as memcached.
Q. Are Business Intelligence applications supported?
Yes, Postgres-XL includes Massively Parallel Processing (MPP) capability with sophisticated query planning and inter-node communication that allows it to fulfill query requests over large data sets quickly. Postgres-XL is well suited for Data Warehousing and Data Marts. In Postgres-XL queries are parallelized and the data node nodes communicate with one another directly.
Q. Does one need to take into account that data is split across servers when designing my database schema?
Existing applications will work fine, but for fastest response time, it is helpful to be mindful of data locality. Please see the documentation for more details. A basic rule of thumb is to distribute (partition) large tables and and tables that are written to frequently, and to replicate tables to all nodes that contain mainly static data.
Q. What kind of client connectivity is offered?
Postgres-XL is wire-level protocol compatible with PostgreSQL. That means Postgres-XL will work with any PostgreSQL-compatible driver, which includes JDBC, ODBC, OLE DB, Python, Ruby, perl DBI, Tcl, and Erlang.
That also means that many apps written for PostgreSQL will work without modifications against Postgres-XL, even including the well-known pgAdmin utility.
Q. I am interested in moving to Postgres-XL. Can I get help with migrations?
See the support page as a starting point.
Q. Can I get SLA based support for Postgres-XL?
Yes, 2ndQuadrant fully supports Postgres-XL. The company also offers consulting services to help organizations with application development, cluster design, deployment, feature development and performance analysis. Click here for more details.
Q. Are geo-distributed database clusters supported?
No, geo-distribution is not natively supported. A Postgres-XL-based solution will depend on your particular requirements, and you should probably engage with a company that is experienced with Postgres-XL.
Q. How does one achieve High Availability?
You can add slaves for each node analogous to PostgreSQL’s streaming replication. In addition, the cluster can be configured such that the Global Transaction Manager (GTM) can have a GTM Standby.
In terms of automatic failover, it is currently not part of the core project, but Corosync/Pacemaker has been used for this purpose.
Q. Is PostGIS supported?
Yes, PostGIS can be added to Postgres-XL. It has been tested with PostGIS 2.0.
Q. How does Postgres-XL relate to StormDB?
Postgres-XL is the core of TransLattice Storm (StormDB) rebranded and open sourced.
Q. How does Postgres-XL relate to Postgres-XC and Stado?
The project includes architects and developers who previously worked on both Postgres-XC and Stado, and Postgres-XL contains code from Postgres-XC.
The Postgres-XL project has its own philosophy and approach.
Postgres-XL values stability, correctness and performance over new functionality. The Postgres-XL project ultimately strives to track and merge in code from PostgreSQL.
Postgres-XL adds some significant performance improvements like MPP parallelism and replan avoidance on the data nodes that are not part of Postgres-XC. Postgres-XL is more flexible in terms of the types of workloads it can handle including Big Data processing thanks to its parallelism.
The Postgres-XL community is also very open and welcoming to those who wish to become more involved and contribute, whether on the mailing lists, participating in developer meetings, or meeting in person. Users will help drive development priorities and the project roadmap.
Q. What license does Postgres-XL use?
Postgres-XL uses the same license as PostgreSQL, The PostgreSQL License. Up until mid 2015, Postgres-XL previously used the Mozilla Public License.
Q. What about submitting contributions to the project?
Please use the mailing lists for submitting patches. Currently, we ask that all contributions be submitted under the PostgreSQL License, which is similar to the BSD or MIT licenses.
Q. What do your version numbers indicate?
We are versioning Postgres-XL in relation to the major version of PostgreSQL that it is based on, but not on the point releases. For example, Postgres-XL 9.5R1 is based on PostgreSQL 9.5.0., but Postgres-XL 9.2.0 is based on PostgreSQL 9.2.4. The number R1 indicates that more major Postgres-XL release based on the same PostgreSQL release may be released in future.
Q. What is on the development roadmap?
Postgres-XL has many advance features that are currently not available in PostgreSQL. We intend to merge many of these features back to PostgreSQL, but that process may take significant time. In the meanwhile, Postgres-XL will be continuously enhanced and supported by many commercial companies.