{"id":15099,"date":"2020-11-09T09:53:08","date_gmt":"2020-11-09T08:53:08","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/"},"modified":"2020-11-09T09:53:08","modified_gmt":"2020-11-09T08:53:08","slug":"postgresql-in-aws-clearing-the-doubts","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/","title":{"rendered":"PostgreSQL in AWS: clearing the doubts"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nI&#8217;ve heard and read people saying that the PostgreSQL managed service is not the true open-source PostgreSQL from the community.<br \/>\nThis is wrong and I&#8217;m writing this post to clarify it.<\/p>\n<h3>PostgreSQL on EC2<\/h3>\n<p>Obviously, you can install PostgreSQL on an EC2 instance, as a database running on IaaS (Infrastructure as a Service). You have the full choice of version, you can even compile it from sources, and add whatever extensions you want. This has the lowest cost because PostgreSQL is free of any subscription. But you need to do all the &#8220;Ops&#8221; work (so the TCO may be higher than what you think). Please take care of your backups if you do that. There&#8217;s a trend to build microservices with the database embedded with the stateless application and people forget that the database is a stateful component (we called that persistent 15 years ago, or durable 30 years ago) that cannot be stopped and started elsewhere. But if you consider cloud as a hosting solution, installing PostgreSQL in EC2 + EBS is a valid solution. There are no doubts about this: you run the community postgres.<\/p>\n<h3>Managed PostgreSQL on RDS<\/h3>\n<p>Here is where I&#8217;ve heard some wrong messages, so let&#8217;s be clear: Amazon RDS for PostgreSQL is running the real PostgreSQL, compiled from the postgres community sources. RDS is the family name for all managed relational databases and this includes Open Source databases (PostgreSQL, MySQL, MariaDB), some commercial databases (Oracle Database, Microsoft SQL Server), and Amazon Aurora (I will talk about it later). Here is how you create a PostgreSQL database in RDS: you select &#8220;PostgreSQL&#8221; with the PostgreSQL logo and can choose mostly any supported version (at the time of writing this: any minor version between 9.5.2 to 12.4):<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-07-230106.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-44837\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-07-230106.jpg\" alt=\"\" width=\"1024\" height=\"730\" \/><\/a><br \/>\nThere is no ambiguity there: only one service has the PostgreSQL name and logo. You cannot mistakenly select Aurora here. If you create an Amazon RDS PostgreSQL service, you have the &#8220;real&#8221; PostgreSQL. And you can even do that on the Free tier.<\/p>\n<p>You can check the version and compilation:<\/p>\n<pre><code>\n$ PGHOST=database-1.ce5fwv4akhjp.eu-central-1.rds.amazonaws.com PGPORT=5432 PGPASSWORD=postgres psql -U postgres\n\npsql (12.4)\nSSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)\nType \"help\" for help.\n\npostgres=&gt; select version();\n                                                version\n--------------------------------------------------------------------------------------------------------\n PostgreSQL 12.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit\n(1 row)\n<\/code><\/pre>\n<p>The only difference in the features is that, as it is a managed database, you don&#8217;t have all privileges:<\/p>\n<pre><code>\npostgres=&gt; \\du\n                                                                     List of roles\n    Role name    |                         Attributes                         |                          Member of\n\n-----------------+------------------------------------------------------------+---------------------------------------------------\n postgres        | Create role, Create DB                                    +| {rds_superuser}\n                 | Password valid until infinity                              |\n rds_ad          | Cannot login                                               | {}\n rds_iam         | Cannot login                                               | {}\n rds_password    | Cannot login                                               | {}\n rds_replication | Cannot login                                               | {}\n rds_superuser   | Cannot login                                               | {pg_monitor,pg_signal_backend,rds_replication,rds_password}\n rdsadmin        | Superuser, Create role, Create DB, Replication, Bypass RLS+| {}\n                 | Password valid until infinity                              |\n rdsrepladmin    | No inheritance, Cannot login, Replication                  | {}\n\npostgres=&gt; select * from pg_hba_file_rules;\n\n line_number | type  |   database    | user_name  | address  | netmask | auth_method | options | error\n-------------+-------+---------------+------------+----------+---------+-------------+---------+-------\n           4 | local | {all}         | {all}      |          |         | md5         |         |\n          10 | host  | {all}         | {rdsadmin} | samehost |         | md5         |         |\n          11 | host  | {all}         | {rdsadmin} | 0.0.0.0  | 0.0.0.0 | reject      |         |\n          12 | host  | {rdsadmin}    | {all}      | all      |         | reject      |         |\n          13 | host  | {all}         | {all}      | 0.0.0.0  | 0.0.0.0 | md5         |         |\n          14 | host  | {replication} | {all}      | samehost |         | md5         |         |\n\n<\/code><\/pre>\n<p>But this is exactly the same as a PostgreSQL installed from the community sources where you are not the superuser.<\/p>\n<p>There are a few additional RDS specific libraries (which are not open source):<\/p>\n<pre><code>\npostgres=&gt; show shared_preload_libraries;\n\n  shared_preload_libraries\n-----------------------------\n rdsutils,pg_stat_statements\n\npostgres=&gt; select name,setting from pg_settings where name like 'rds.%';\n\n                  name                  |                                                                                                                                                                                                                                                                                                                                                                                          setting                                                                                                                                                                                                                                                                                            \n----------------------------------------+------------------------------------------------------------------------\n rds.extensions                         | address_standardizer, address_standardizer_data_us, amcheck, aws_commons, aws_s3, bloom, btree_gin, btree_gist, citext, cube, dblink, dict_int, dict_xsyn, earthdistance, fuzzystrmatch, hll, hstore, hstore_plperl, intagg, intarray, ip4r, isn, jsonb_plperl, log_fdw, ltree, orafce, pageinspect, pgaudit, pgcrypto, pglogical, pgrouting, pgrowlocks, pgstattuple, pgtap, pg_buffercache, pg_freespacemap, pg_hint_plan, pg_prewarm, pg_proctab, pg_repack, pg_similarity, pg_stat_statements, pg_transport, pg_trgm, pg_visibility, plcoffee, plls, plperl, plpgsql, plprofiler, pltcl, plv8, postgis, postgis_tiger_geocoder, postgis_raster, postgis_topology, postgres_fdw, prefix, rdkit, sslinfo, tablefunc, test_parser, tsm_system_rows, tsm_system_time, unaccent, uuid-ossp\n rds.force_admin_logging_level          | disabled\n rds.force_autovacuum_logging_level     | info\n rds.internal_databases                 | rdsadmin,template0\n rds.logical_replication                | off\n rds.rds_superuser_reserved_connections | 2\n rds.restrict_logical_slot_creation     | off\n rds.restrict_password_commands         | off\n rds.superuser_variables                | session_replication_role\n rds.tablespace_path_prefix             | \/rdsdbdata\/db\/base\/tablespace\n<\/code><\/pre>\n<p>This is still the community edition that allows extensibility.<br \/>\nThere are also some additional functionalities, like <a href=\"https:\/\/aws.amazon.com\/about-aws\/whats-new\/2018\/04\/rds-performance-insights-on-rds-for-postgresql\/\" target=\"_blank\" rel=\"noopener noreferrer\">RDS Performance Insights<\/a> to show the database activity with a time x-axis and active session y-axis, drilling down to wait events.<\/p>\n<p>By curiosity I&#8217;ve run the regression tests that are provided by the PostgreSQL distribution:<\/p>\n<pre><code>\nPGHOST=database-1.ce5fwv4akhjp.eu-central-1.rds.amazonaws.com PGPORT=5432 PGPASSWORD=postgres psql -U postgres -c \"select version();\"\ncd \/var\/tmp\ngit clone --branch REL_12_STABLE https:\/\/github.com\/postgres\/postgres.git\ncd postgres\n.\/configure\ncd src\/test\/regress\nexport PGHOST=database-1.ce5fwv4akhjp.eu-central-1.rds.amazonaws.com\nexport PGPORT=5432\nexport PGPASSWORD=postgres\nexport PGUSER=postgres\nmake installcheck\n<\/code><\/pre>\n<p>It starts by setting some parameters, which fails for missing privileges:<\/p>\n<pre><code>\n============== dropping database \"regression\"         ==============\nDROP DATABASE\n============== creating database \"regression\"         ==============\nCREATE DATABASE\nERROR:  permission denied to set parameter \"lc_messages\"\ncommand failed: \"\/usr\/local\/pgsql\/bin\/psql\" -X -c \"ALTER DATABASE \\\"regression\\\" SET lc_messages TO 'C';ALTER DATABASE \\\"regression\\\" SET lc_m\nonetary TO 'C';ALTER DATABASE \\\"regression\\\" SET lc_numeric TO 'C';ALTER DATABASE \\\"regression\\\" SET lc_time TO 'C';ALTER DATABASE \\\"regressio\nn\\\" SET bytea_output TO 'hex';ALTER DATABASE \\\"regression\\\" SET timezone_abbreviations TO 'Default';\" \"regression\"\nmake: *** [installcheck] Error 2\n<\/code><\/pre>\n<p>In a managed database, the cloud provider needs to lockdown some administration commands in order to secure his platform, but we have the possibility to define those parameters by creating a parameter group. This is what I did in the console, and then removed those ALTER DATABASE from pg_regress.c:<\/p>\n<pre><code>\nsed -ie 's\/\"ALTER DATABASE\/--&amp;\/' pg_regress.c\n<\/code><\/pre>\n<p>Then, I&#8217;m ready to run the regression tests:<\/p>\n<pre><code>\n[opc@a regress]$ make installcheck\n\n...\n\n..\/..\/..\/src\/test\/regress\/pg_regress --inputdir=. --bindir='\/usr\/local\/pgsql\/bin'    --dlpath=. --max-concurrent-tests=20  --schedule=.\/serial_schedule\n(using postmaster on database-1.ce5fwv4akhjp.eu-central-1.rds.amazonaws.com, port 5432)\n============== dropping database \"regression\"         ==============\nDROP DATABASE\n============== creating database \"regression\"         ==============\nCREATE DATABASE\n============== running regression test queries        ==============\ntest tablespace                   ... FAILED     1406 ms\ntest boolean                      ... ok          684 ms\ntest char                         ... ok          209 ms\ntest name                         ... ok          311 ms\ntest varchar                      ... ok          201 ms\ntest text                         ... ok          549 ms\ntest int2                         ... ok          354 ms\ntest int4                         ... ok          580 ms\ntest int8                         ... ok          954 ms\ntest oid                          ... ok          222 ms\ntest float4                       ... FAILED      660 ms\ntest float8                       ... FAILED     1136 ms\ntest bit                          ... ok         1751 ms\ntest numeric                      ... ok         5388 ms\n\n...\n\ntest hash_part                    ... ok          240 ms\ntest indexing                     ... FAILED     6406 ms\ntest partition_aggregate          ... ok         1569 ms\ntest partition_info               ... ok          620 ms\ntest event_trigger                ... FAILED     1237 ms\ntest fast_default                 ... ok         1990 ms\ntest stats                        ... FAILED      643 ms\n\n======================================================\n 90 of 194 tests failed, 1 of these failures ignored.\n======================================================\n\nThe differences that caused some tests to fail can be viewed in the\nfile \"\/var\/tmp\/postgres\/src\/test\/regress\/regression.diffs\".  A copy of the test summary that you see\nabove is saved in the file \"\/var\/tmp\/postgres\/src\/test\/regress\/regression.out\".\n<\/code><\/pre>\n<p>There are multiple tests that fail because of missing privileges. Actually, pg_regression expects to have all privileges. Using pg_regress is not a good idea for testing that the RDS PostgreSQL behaves like expected. It is not made for functional tests.<\/p>\n<h3>PostgreSQL-like API in on RDS Aurora<\/h3>\n<p>This is where the confusion comes from. Aurora is a proprietary database built by Amazon. They started it by forking MySQL and modifying the storage layer in order to build a cloud-native database. Rather than storing the database files in EBS block storage attached to the database node where the instance is running, like all other RDS databases, the database service is split into separate (micro)services for the compute (EC2) and the storage (distributed over multiple AZ to provide High Availability, similar to the DynamoDB storage). Aurora code is not open-source and is very different from the community MySQL. More and more because of many improvements. Part of it is running on EC2 to parse, optimize and execute SQL statements and transactions, and update the buffers in cache. And part of it runs in the storage server which receives the redo to apply it on the data file blocks, which are distributed and shared with reader instances. This was in 2014 and Amazon always presented Aurora as another database engine in RDS. I&#8217;ve copy-pasted below a few archive.org snapshot of the <a href=\"https:\/\/aws.amazon.com\/rds\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/aws.amazon.com\/rds\/<\/a> page if you want to look at the history. Amazon modified a lot the lower layers of the code but kept the upper layer to stay compatible with MySQL (version 5) in order to ease the application migration to Aurora. And this is how it is presented: Aurora is a new database with MySQL compatibility. Once you select the Aurora service in RDS, you can choose the version which mentions with MySQL version it is compatible with. For example, the latest version Aurora 2.09.. is labelled &#8220;Aurora (MySQL 5.7)&#8221;. Note that there are not only modification to adapt to the cloud native storage, but Amazon brings also some interesting improvement, unfortunately not given back to the open-source community.<\/p>\n<p>Here are the screenshots from archive.org where you see from the begining that RDS for Aurora is different than RDS for MySQL. And when MySQL or PostgreSQL is mentioned with Aurora there&#8217;s always the &#8220;compatible&#8221; mention:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-08-180158.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-44854\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-08-180158.jpg\" alt=\"\" width=\"1634\" height=\"1490\" \/><\/a><\/p>\n<p>What I mean by this is that, in my opinion, there was no ambiguity from Amazon about what is the open-source database and what is their proprietary engine.<\/p>\n<p>That&#8217;s a long story about the MySQL compatible Aurora because it was the only compatible API from 2014 to 2017. Then, as they had a strong storage engine, and a well layered code, they have built another flavor of Aurora taking the PostgreSQL upper layer to replace the MySQL one in Aurora. Then they have two proprietary databases: Aurora with MySQL compatibility and Aurora with PostgreSQL compatibility. As far as I know it has always been clear that it is only &#8220;compatibility&#8221; and Aurora has never been advertised to be a real PostgreSQL engine. They have RDS PostgreSQL for that. And I think they have different use cases. Aurora is probably the best choice when High Availability, scalability and elasticity is the most important. PostgreSQL may provide lower latency on block storage, and is probably cheaper (but Aurora serverless can also reduce the cost for rarely used databases).<\/p>\n<p>However, there is still some confusion and some Aurora users are asking the PostgreSQL community for help. The PostgreSQL community helps a lot their users because they know the engine (which is very well documented, and source code and source comments are accessible). But they cannot do anything for Aurora as we don&#8217;t even know what has been modified. As an example, I mentioned in a <a href=\"https:\/\/www.dbi-services.com\/blog\/aws-aurora-xactsync-batch-commit\/\" target=\"_blank\" rel=\"noopener noreferrer\">previous post<\/a> that some wait events are specific au Aurora &#8211; don&#8217;t ask the postgres mailing lists for that. I also think that the PostgreSQL community would appreciate that the improvements made by Amazon on the PostgreSQL code are shared with the community.<\/p>\n<h3>PostgreSQL on other public clouds<\/h3>\n<p>Not only is Amazon RDS PostgreSQL the real PostgreSQL from the community, but it is also in my opinion one of the most advanced managed service for it.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Oracle Cloud provides no managed service for PostgreSQL but only a <a href=\"https:\/\/www.dbi-services.com\/blog\/which-bitnami-service-to-choose-in-the-oracle-cloud-infrastructure\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bitnami image<\/a>. I hope one day we will have a managed service with the same quality as the MySQL one.<\/li>\n<li>Azure provides an old service <a href=\"https:\/\/www.dbi-services.com\/blog\/azure-database-for-postgresql\/\" target=\"_blank\" rel=\"noopener noreferrer\">running on Windows<\/a> but that will change as they bought Citus Data and hired well known PostgreSQL contributors.<\/li>\n<li>Google Cloud DB has a decent managed service, but I need to <a href=\"https:\/\/twitter.com\/FranckPachot\/status\/1325545456714256386?s=20\" target=\"_blank\" rel=\"noopener noreferrer\">look at their backups<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>.<\/p>\n<p>Talking about backups, Amazon RDS PostgreSQL has all features to avoid or recover from mistakes, which I listed in a 5-points tweet:<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">5 critical features of managed DB services<a href=\"https:\/\/twitter.com\/awscloud?ref_src=twsrc%5Etfw\">@awscloud<\/a> RDS PostgreSQL checks all five \ud83d\udc4d<\/p>\n<p>1\/5\u231a\u2705be able to recover to a point-in-time beyond the last backup (any point-in-time within the retention) <a href=\"https:\/\/t.co\/s0siA3RKJC\">pic.twitter.com\/s0siA3RKJC<\/a><\/p>\n<p>&mdash; Franck Pachot (@FranckPachot) <a href=\"https:\/\/twitter.com\/FranckPachot\/status\/1325565762946396162?ref_src=twsrc%5Etfw\">November 8, 2020<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . I&#8217;ve heard and read people saying that the PostgreSQL managed service is not the true open-source PostgreSQL from the community. This is wrong and I&#8217;m writing this post to clarify it. PostgreSQL on EC2 Obviously, you can install PostgreSQL on an EC2 instance, as a database running on IaaS (Infrastructure as [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":15100,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1865,83],"tags":[1955,133,77,1869],"type_dbi":[],"class_list":["post-15099","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws","category-postgresql","tag-amazon","tag-aws","tag-postgresql","tag-rds"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL in AWS: clearing the doubts - 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\/postgresql-in-aws-clearing-the-doubts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL in AWS: clearing the doubts\" \/>\n<meta property=\"og:description\" content=\"By Franck Pachot . I&#8217;ve heard and read people saying that the PostgreSQL managed service is not the true open-source PostgreSQL from the community. This is wrong and I&#8217;m writing this post to clarify it. PostgreSQL on EC2 Obviously, you can install PostgreSQL on an EC2 instance, as a database running on IaaS (Infrastructure as [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-09T08:53:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-07-230106.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1946\" \/>\n\t<meta property=\"og:image:height\" content=\"1388\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"10 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\\\/postgresql-in-aws-clearing-the-doubts\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/59554f0d99383431eb6ed427e338952b\"},\"headline\":\"PostgreSQL in AWS: clearing the doubts\",\"datePublished\":\"2020-11-09T08:53:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/\"},\"wordCount\":1332,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/Screenshot-2020-11-07-230106.jpg\",\"keywords\":[\"Amazon\",\"AWS\",\"PostgreSQL\",\"RDS\"],\"articleSection\":[\"AWS\",\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/\",\"name\":\"PostgreSQL in AWS: clearing the doubts - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/Screenshot-2020-11-07-230106.jpg\",\"datePublished\":\"2020-11-09T08:53:08+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/59554f0d99383431eb6ed427e338952b\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/Screenshot-2020-11-07-230106.jpg\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/Screenshot-2020-11-07-230106.jpg\",\"width\":1946,\"height\":1388},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-in-aws-clearing-the-doubts\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL in AWS: clearing the doubts\"}]},{\"@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\\\/59554f0d99383431eb6ed427e338952b\",\"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":"PostgreSQL in AWS: clearing the doubts - 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\/postgresql-in-aws-clearing-the-doubts\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL in AWS: clearing the doubts","og_description":"By Franck Pachot . I&#8217;ve heard and read people saying that the PostgreSQL managed service is not the true open-source PostgreSQL from the community. This is wrong and I&#8217;m writing this post to clarify it. PostgreSQL on EC2 Obviously, you can install PostgreSQL on an EC2 instance, as a database running on IaaS (Infrastructure as [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/","og_site_name":"dbi Blog","article_published_time":"2020-11-09T08:53:08+00:00","og_image":[{"width":1946,"height":1388,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-07-230106.jpg","type":"image\/jpeg"}],"author":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"headline":"PostgreSQL in AWS: clearing the doubts","datePublished":"2020-11-09T08:53:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/"},"wordCount":1332,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-07-230106.jpg","keywords":["Amazon","AWS","PostgreSQL","RDS"],"articleSection":["AWS","PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/","name":"PostgreSQL in AWS: clearing the doubts - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-07-230106.jpg","datePublished":"2020-11-09T08:53:08+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-07-230106.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-2020-11-07-230106.jpg","width":1946,"height":1388},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-in-aws-clearing-the-doubts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL in AWS: clearing the doubts"}]},{"@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\/59554f0d99383431eb6ed427e338952b","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\/15099","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=15099"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15099\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/15100"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=15099"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=15099"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=15099"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=15099"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}