首页 > 代码库 > Postgres XL FAQ
Postgres XL FAQ
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. 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. 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-XC currently focuses on OLTP workloads. Postgres-XL is more flexible in terms of the types of workloads it can handle including Big Data processing thanks to its parallelism. Additionally, Postgres-XL is more secure for multi-tenant environments.
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 Mozilla Public License. It is a flexible license that allows the code to be mixed with closed source code, while encouraging contributions.
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. This allows for flexibility in changing licensing in the future and possibly deeper coordination and integration with PostgreSQL itself.
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.2 is based on PostgreSQL 9.2., but Postgres-XL 9.2.0 is based on PostgreSQL 9.2.4.
Q. What is on the development roadmap?
In the near term, the focus will be on bug fixes for 9.2 and integrating in upstream code, including from PostgreSQL 9.3.