DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

Greenplum


Greenplum is an open-source data warehouse. It uses massive parallel processing to provide large-scale analytics on petabyte scale data. It uses the Orca cost-based Cascades-style framework query optimizer.[06][07]

Source Code
https://github.com/greenplum-db/gpdb[02]
Country of Origin
US
Start Year
2003 [04]
Acquired By
Project Types
Commercial, Open Source
Written in
C
Supported Languages
C++, Perl, PL/SQL, Python
Derived From
PostgreSQL
Operating System
Linux
License
Apache v2
Twitter
@Greenplum[05]

Database Entry

Greenplum


Greenplum is an open-source data warehouse. It uses massive parallel processing to provide large-scale analytics on petabyte scale data. It uses the Orca cost-based Cascades-style framework query optimizer.[06][07]

History[07]


Greenplum was founded in September 2003 by Luke Lonergan and Scott Yara. The company releases the database management system software based on PostgreSQL in 2005. The company is acquired by EMC in 2010, and its database management system is known as Pivotal Greenplum Database. The company became part of the Pivotal Software in 2012.

Checkpoints[08]


Greenplum performs checkpoint in the same way as Postgres.

Concurrency Control[06]


Greenplum uses PostgreSQL MVCC as the concurrency control scheme for each database instances. Each transaction reads from a consistent snapshot that's not modified by any concurrent transactions. MVCC generally performs better than lock-based concurrency control in Greenplum because transactions performing read will not block transactions updating the table.

Data Model[06]


Greenplum is a relational database. It is implemented based on PostgreSQL

Foreign Keys[09]


Greenplum supports all features in SQL1992 standard, users can define foreign keys in Greenplum and it will be stored in the system catalog.

Indexes[06]


Greenplum supports PostgreSQL index type B-tree and Gist. B-tree index is the default index type as it fit with most common situations. Bitmap index is also supported in Greenplum to accelerate analytics queries in data warehouse applications and desicion support systems.

Isolation Levels[06]


Greenplum supports three isolation levels, read uncommitted, read committed and serializable. The default mode is read committed, which allows more concurrency than serializable. Requesting repeatable read in Greenplum will produce an error.

Joins[10][11][12]


Three types of join algorithms, nested loop join, hash join and sort-merge join are supported in Greenplum. According to the blog article for their optimizer, semi join type is also supported.

Logging[13][14]


Greenplum achieves fault tolerance for data tables via segment mirroring. Each table is divided into several segments, and each segment has two copies, primary and mirror, stored in different nodes. The primary and mirror perform the same operation and keeps the same data. For master nodes, they also do mirroring by storing transaction level logging in a stand-by node. DBAs are able to view the status of the database by checking the command logging.

Query Compilation[15]


Greenplum utilizes query compilation for predicate evaluation, tuple deform and primitive type functions, etc. It doesn't compile the execution engine into a push-based model. As it is mentioned in the Query Execution section, the execution model is volcano pull style.

Query Execution[16]


Query Interface[17][18][09][06]


Greenplum supports all features in SQL 1992 standard, most of the features in SQL 1999 standard and some features in SQL 2003 standard. Users interact with Greenplum in the same way as they interact with PostgreSQL. They can directly enter query statements in SQL clients such as psql to perform view, change and analyze in the database. The system also support PL/pgSQL, but features such as triggers, scrollable cursors and updatable cursors are not supported.

Storage Architecture


Greenplum takes the disk-oriented storage architecture from Postgres.

Storage Model[06]


Greenplum supports both the N-ary storage model and Decomposition storage model. Clients can specify the storage model options using WITH clause of the CREATE TABLE command. The default is row-oriented(N-ary) storage model.

Stored Procedures[19]


Greenplum does not support stored procedure

System Architecture[06]


Greenplum uses massive parallel processing architecture to execute large-scale analytical queries, the workload is distributed among nodes to parallelize query execution. Each machine runs an PostgreSQL database instance, which is modified to support parallel query execution. All the nodes are connected via Greenplum interconnect(the netwrok layer) to perform the behaviour as a single database instance. Greenplum differs from Postgres in 3 ways, first it leverages Orca as a query planner, second it supports column store, third it has declarative partitioning and sub-partitioning.

Views[20]


Views are not materialized, they are generated every time the query executes.

Citations

22 sources
  1. http://greenplum.org greenplum.org Spam — Check Archive
  2. https://github.com/greenplum-db/gpdb github.com Dead — Check Archive
  3. https://docs.greenplum.org greenplum.org Dead — Check Archive
  4. Greenplum - Wikipedia wikipedia.org
  5. https://twitter.com/Greenplum twitter.com
  6. Broadcom Inc. | Connecting Everything broadcom.com
  7. Greenplum - Wikipedia wikipedia.org
  8. PostgreSQL: Documentation: 9.2: WAL Configuration postgresql.org
  9. https://gpdb.docs.pivotal.io/4320/ref_guide/feature_summary.html pivotal.io Dead — Check Archive
  10. Home - Tanzu vmware.com Dead — Check Archive
  11. https://gpdb.docs.pivotal.io/4370/ref_guide/sql_commands/SELECT.html pivotal.io Dead — Check Archive
  12. https://gpcc.docs.pivotal.io/210/gpcc/topics/db-iterator-metrics.html pivotal.io Dead — Check Archive
  13. https://gpdb.docs.pivotal.io/4370/admin_guide/highavail/topics/g-overview-of-high-availability-in-greenplum-database.html pivotal.io Dead — Check Archive
  14. https://gpdb.docs.pivotal.io/4360/gp_toolkit-topic16.html pivotal.io Dead — Check Archive
  15. CMU SCS 15-721 (Spring 2017) :: Query Compilation cmu.edu
  16. https://gpdb.docs.pivotal.io/4330/admin_guide/parallel_proc.html pivotal.io Dead — Check Archive
  17. Broadcom Inc. | Connecting Everything broadcom.com
  18. https://gpdb.docs.pivotal.io/4330/admin_guide/query.html pivotal.io Dead — Check Archive
  19. https://gpdb.docs.pivotal.io/4370/ref_guide/extensions/pl_java.html pivotal.io Dead — Check Archive
  20. https://gpdb.docs.pivotal.io/4370/ref_guide/sql_commands/CREATE_VIEW.html pivotal.io Dead — Check Archive
  21. http://gpdb.docs.pivotal.io/43130/common/welcome.html#topic1__section_gpdb_rn pivotal.io Dead — Check Archive
  22. https://corporate.delltechnologies.com/en-us/newsroom/announcements/2010/07/20100706-01.htm delltechnologies.com Dead — Check Archive
Revision #8