{"id":31520,"date":"2024-03-01T08:19:34","date_gmt":"2024-03-01T07:19:34","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=31520"},"modified":"2024-03-01T08:19:37","modified_gmt":"2024-03-01T07:19:37","slug":"getting-started-with-greenplum-3-behind-the-scenes","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/","title":{"rendered":"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If you followed <a href=\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-1-installation\/\" target=\"_blank\" rel=\"noreferrer noopener\">part 1<\/a> and <a href=\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-2-initializing-and-bringing-up-the-cluster\/\" target=\"_blank\" rel=\"noreferrer noopener\">part 2<\/a> of this little blog series you now have a running Greenplum system. There is one coordinator host and there are two segment hosts. In this post we&#8217;ll look at what really was initialized, how that looks on disk and how the PostgreSQL instances communicate with each other.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lets start with a simple overview of what we have now:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\n                               |-------------------|\n                               |                   |\n                               |     Segment 1     |\n                               |                   |\n                               |-------------------|\n                                        \/\n   |-------------------|               \/\n   |                   |              \/\n   |   Coordinator     |--------------\n   |                   |              \\\n   |-------------------|               \\\n                                        \\\n                               |-------------------|\n                               |                   |\n                               |     Segment 2     |\n                               |                   |\n                               |-------------------|\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">We have the coordinator node on the left, somehow connected to the two segment nodes on the right. As Greenplum is based on PostgreSQL we should easily be able to find out on which port the coordinator instance is listening:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\n&#x5B;gpadmin@cdw ~]$ psql -c &quot;show port&quot; postgres\n port \n------\n 5432\n(1 row)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Another bit of information we can get out of the Greenplum catalog is, how the instances are connected between the nodes:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres=# select * from gp_segment_configuration order by dbid;\n dbid | content | role | preferred_role | mode | status | port | hostname | address |          datadir          \n------+---------+------+----------------+------+--------+------+----------+---------+---------------------------\n    1 |      -1 | p    | p              | n    | u      | 5432 | cdw      | cdw     | \/data\/coordinator\/gpseg-1\n    2 |       0 | p    | p              | s    | u      | 6000 | sdw1     | sdw1    | \/data\/primary\/gpseg0\n    3 |       1 | p    | p              | s    | u      | 6000 | sdw2     | sdw2    | \/data\/primary\/gpseg1\n    4 |       0 | m    | m              | s    | u      | 7000 | sdw2     | sdw2    | \/data\/mirror\/gpseg0\n    5 |       1 | m    | m              | s    | u      | 7000 | sdw1     | sdw1    | \/data\/mirror\/gpseg1\n(5 rows)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">(All the cluster views are documented <a href=\"https:\/\/docs.vmware.com\/en\/VMware-Greenplum\/7\/greenplum-database\/ref_guide-system_catalogs-catalog_ref-views.html#summary-views\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Putting this information into the picture from above, gives us this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\n                                        |-------------------|\n                                    6000|primary            |\n                                        |     Segment 1     |\n                                    7000|mirror             |\n                                        |-------------------|\n                                                 \/\n            |-------------------|               \/\n            |                   |              \/\n        5432|   Coordinator     |--------------\n            |                   |              \\\n            |-------------------|               \\\n                                                 \\\n                                        |-------------------|\n                                    6000|primary            |\n                                        |     Segment 2     |\n                                    7000|mirror             |\n                                        |-------------------|\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Looking at the PostgreSQL configuration of the the two mirror instances we can see that the mirror on segment 1 is replicating from the primary from segment 2. The mirror on segment 2 is replicating from the primary on segment 1:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3,5,9,11,13]; title: ; notranslate\" title=\"\">\n&#x5B;gpadmin@sdw1 gpseg1]$ hostname\nsdw1\n&#x5B;gpadmin@sdw1 gpseg1]$ pwd\n\/data\/mirror\/gpseg1\n&#x5B;gpadmin@sdw1 gpseg1]$ grep conninfo postgresql.*conf\npostgresql.auto.conf:primary_conninfo = &#039;user=gpadmin passfile=&#039;&#039;\/home\/gpadmin\/.pgpass&#039;&#039; host=sdw2 port=6000 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any application_name=gp_walreceiver&#039;\npostgresql.conf:#primary_conninfo = &#039;&#039;                  # connection string to sending server\n\n&#x5B;gpadmin@sdw2 gpseg0]$ hostname\nsdw2\n&#x5B;gpadmin@sdw2 gpseg0]$ pwd\n\/data\/mirror\/gpseg0\n&#x5B;gpadmin@sdw2 gpseg0]$ grep conninfo postgresql.*conf\npostgresql.auto.conf:primary_conninfo = &#039;user=gpadmin passfile=&#039;&#039;\/home\/gpadmin\/.pgpass&#039;&#039; host=sdw1 port=6000 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any application_name=gp_walreceiver&#039;\npostgresql.conf:#primary_conninfo = &#039;&#039;                  # connection string to sending server\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This means that the mirror instances are just normal PostgreSQL replicas:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n                                        |-------------------|\n                             |------6000|primary---------   |\n                             |          |     Segment 1 |   |\n                             |      7000|mirror&amp;lt;------| |   |\n                             |          |-------------------|\n                             |                        | |\n            |-------------------|                     | |\n            |                   |                     | |\n        5432|   Coordinator     |                     | |\n            |                   |                     | |\n            |-------------------|                     | |\n                             |                        | |\n                             |          |-------------------|\n                             |------6000|primary ------ |   |\n                                        |     Segment 2 |   |\n                                    7000|mirror&amp;lt;--------|   |\n                                        |-------------------|\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Both replicas run in synchronous mode, which can be seen in gp_stat_replication:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres=# select * from gp_stat_replication ;\n gp_segment_id | pid  | usesysid | usename | application_name |   client_addr   | client_hostname | client_port |         backend_start         | backend_xmin |   state   | sent_lsn  | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | replay_lag | sync_priority | sync_state |          reply_time           | sync_error \n---------------+------+----------+---------+------------------+-----------------+-----------------+-------------+-------------------------------+--------------+-----------+-----------+-----------+-----------+------------+-----------+-----------+------------+---------------+------------+-------------------------------+------------\n             1 | 6156 |       10 | gpadmin | gp_walreceiver   | 192.168.122.201 |                 |       18462 | 2024-02-29 12:51:32.070682+01 |              | streaming | 0\/C000158 | 0\/C000158 | 0\/C000158 | 0\/C000158  |           |           |            |             1 | sync       | 2024-02-29 14:04:45.448297+01 | none\n             0 | 6599 |       10 | gpadmin | gp_walreceiver   | 192.168.122.202 |                 |       58176 | 2024-02-29 12:51:32.612645+01 |              | streaming | 0\/C000158 | 0\/C000158 | 0\/C000158 | 0\/C000158  |           |           |            |             1 | sync       | 2024-02-29 14:04:44.243651+01 | none\n\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">When one of the primary segments fails, the attached mirror segment (which is a replica) will take over.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By default direct connections to either a primary or a mirror segment are not allowed \/ possible:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,5]; title: ; notranslate\" title=\"\">\n&#x5B;gpadmin@sdw1 gpseg1]$ psql -p 7000\npsql: error: FATAL:  the database system is in recovery mode\nDETAIL:  last replayed record at 0\/C000158\n- VERSION: PostgreSQL 12.12 (Greenplum Database 7.1.0 build commit:e7c2b1f14bb42a1018ac57d14f4436880e0a0515 Open Source) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4), 64-bit compiled on Jan 19 2024 06:51:45 Bhuvnesh C.\n&#x5B;gpadmin@sdw1 gpseg1]$ psql -p 6000 postgres\npsql: error: FATAL:  connections to primary segments are not allowed\nDETAIL:  This database instance is running as a primary segment in a Greenplum cluster and does not permit direct connections.\nHINT:  To force a connection anyway (dangerous!), use utility mode.\n\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The consequence is, that the coordinator node is the only entry point into the Greenplum system. Nothing is supposed to happen directly on any of the segments. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lets create a new database on the coordinator host and then retrieve the OID this database got:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1,3,15]; title: ; notranslate\" title=\"\">\npostgres=# create database d;\nCREATE DATABASE\npostgres=# \\l\n                                List of databases\n   Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges  \n-----------+---------+----------+-------------+-------------+---------------------\n d         | gpadmin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | \n postgres  | gpadmin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | \n template0 | gpadmin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c\/gpadmin         +\n           |         |          |             |             | gpadmin=CTc\/gpadmin\n template1 | gpadmin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c\/gpadmin         +\n           |         |          |             |             | gpadmin=CTc\/gpadmin\n(4 rows)\n\npostgres=# select oid,datname from pg_database;\n  oid  |  datname  \n-------+-----------\n 13720 | postgres\n     1 | template1\n 17121 | d\n 13719 | template0\n(4 rows)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">We can&#8217;t directly connect to the primary and mirror segments, but we can verify if the database got replicated on the file system on one of the segment nodes:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,8,9,16]; title: ; notranslate\" title=\"\">\n&#x5B;gpadmin@sdw2 data]$ ls -la mirror\/gpseg0\/base\/\ntotal 52\ndrwx------  6 gpadmin gpadmin   54 Feb 29 14:26 .\ndrwx------ 21 gpadmin gpadmin 4096 Feb 29 13:01 ..\ndrwx------  2 gpadmin gpadmin 8192 Feb 29 12:51 1\ndrwx------  2 gpadmin gpadmin 8192 Feb 29 12:51 13719\ndrwx------  2 gpadmin gpadmin 8192 Feb 29 12:51 13720\ndrwx------  2 gpadmin gpadmin 8192 Feb 29 14:26 17121\n&#x5B;gpadmin@sdw2 data]$ ls -la primary\/gpseg1\/base\/\ntotal 52\ndrwx------  6 gpadmin gpadmin   54 Feb 29 14:26 .\ndrwx------ 21 gpadmin gpadmin 4096 Feb 29 13:01 ..\ndrwx------  2 gpadmin gpadmin 8192 Feb 29 12:51 1\ndrwx------  2 gpadmin gpadmin 8192 Feb 29 12:51 13719\ndrwx------  2 gpadmin gpadmin 8192 Feb 29 12:51 13720\ndrwx------  2 gpadmin gpadmin 8192 Feb 29 14:26 17121\n\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Not a big surprise, the new database is of course there on the segment, otherwise the whole setup would not make much sense.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the next post we&#8217;ll look at backup and recovery of such a system.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you followed part 1 and part 2 of this little blog series you now have a running Greenplum system. There is one coordinator host and there are two segment hosts. In this post we&#8217;ll look at what really was initialized, how that looks on disk and how the PostgreSQL instances communicate with each other. [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198],"tags":[3276,77],"type_dbi":[],"class_list":["post-31520","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","tag-greenplum","tag-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.8 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Getting started with Greenplum \u2013 3 \u2013 Behind the scenes - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes\" \/>\n<meta property=\"og:description\" content=\"If you followed part 1 and part 2 of this little blog series you now have a running Greenplum system. There is one coordinator host and there are two segment hosts. In this post we&#8217;ll look at what really was initialized, how that looks on disk and how the PostgreSQL instances communicate with each other. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-01T07:19:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-01T07:19:37+00:00\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/getting-started-with-greenplum-3-behind-the-scenes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/getting-started-with-greenplum-3-behind-the-scenes\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\"},\"headline\":\"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes\",\"datePublished\":\"2024-03-01T07:19:34+00:00\",\"dateModified\":\"2024-03-01T07:19:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/getting-started-with-greenplum-3-behind-the-scenes\\\/\"},\"wordCount\":359,\"commentCount\":0,\"keywords\":[\"Greenplum\",\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/getting-started-with-greenplum-3-behind-the-scenes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/getting-started-with-greenplum-3-behind-the-scenes\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/getting-started-with-greenplum-3-behind-the-scenes\\\/\",\"name\":\"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2024-03-01T07:19:34+00:00\",\"dateModified\":\"2024-03-01T07:19:37+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/getting-started-with-greenplum-3-behind-the-scenes\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/getting-started-with-greenplum-3-behind-the-scenes\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/getting-started-with-greenplum-3-behind-the-scenes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4bae5e5dd8c7d48edbd948772b49b202\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"caption\":\"Open source Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/","og_locale":"en_US","og_type":"article","og_title":"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes","og_description":"If you followed part 1 and part 2 of this little blog series you now have a running Greenplum system. There is one coordinator host and there are two segment hosts. In this post we&#8217;ll look at what really was initialized, how that looks on disk and how the PostgreSQL instances communicate with each other. [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/","og_site_name":"dbi Blog","article_published_time":"2024-03-01T07:19:34+00:00","article_modified_time":"2024-03-01T07:19:37+00:00","author":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202"},"headline":"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes","datePublished":"2024-03-01T07:19:34+00:00","dateModified":"2024-03-01T07:19:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/"},"wordCount":359,"commentCount":0,"keywords":["Greenplum","PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring","Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/","url":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/","name":"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2024-03-01T07:19:34+00:00","dateModified":"2024-03-01T07:19:37+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-greenplum-3-behind-the-scenes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting started with Greenplum \u2013 3 \u2013 Behind the scenes"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4bae5e5dd8c7d48edbd948772b49b202","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","caption":"Open source Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/31520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=31520"}],"version-history":[{"count":18,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/31520\/revisions"}],"predecessor-version":[{"id":31540,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/31520\/revisions\/31540"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=31520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=31520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=31520"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=31520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}