{"id":15240,"date":"2020-11-22T19:40:13","date_gmt":"2020-11-22T18:40:13","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/"},"modified":"2020-11-22T19:40:13","modified_gmt":"2020-11-22T18:40:13","slug":"will-postgresql14-finally-come-with-schema-variables","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/","title":{"rendered":"Will PostgreSQL14 finally come with schema variables?"},"content":{"rendered":"<p>One of the bits you need to solve when you migrate from Oracle to PostgreSQL is this: In the Oracle database there are PL\/SQL packages and some of those have package variables defined. PostgreSQL does not know the concept of a package but you can use schemas to group your PL\/pgSQL functions and procedures. When it comes to packages variables there is no easy solution currently. <\/p>\n<blockquote class=\"twitter-tweet\">\n<p lang=\"en\" dir=\"ltr\">Tip: You can add your own parameters in <a href=\"https:\/\/twitter.com\/hashtag\/postgresql?src=hash&amp;ref_src=twsrc%5Etfw\">#postgresql<\/a> <a href=\"https:\/\/t.co\/sdaOMStqqU\">pic.twitter.com\/sdaOMStqqU<\/a><\/p>\n<p>&mdash; Daniel Westermann (@westermanndanie) <a href=\"https:\/\/twitter.com\/westermanndanie\/status\/1291615108452560896?ref_src=twsrc%5Etfw\">August 7, 2020<\/a><\/p><\/blockquote>\n<p> to emulate that, but it is nasty and not the intended use case for this. Schema variables are under discussion for quite some time and the good news is, that <a href=\"https:\/\/commitfest.postgresql.org\/30\/1608\/\" target=\"_blank\" rel=\"noopener noreferrer\">the patch is now &#8220;Ready for Committer&#8221;<\/a>. This still is not a guarantee that PostgreSQL 14 will come with schema variables, but at least it is close to that.<\/p>\n<p><!--more--><\/p>\n<p>As always, lets do some simple demos to understand what is going on and how the feature might help, once it is committed. The most simple example for a schema variable is this:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create variable var1 as int;\nCREATE VARIABLE\n<\/pre>\n<p>As the name of the feature (schema variables) implies, a variable is created in a specific schema. As I have not modified the default <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/ddl-schemas.html#DDL-SCHEMAS-PATH\" target=\"_blank\" rel=\"noopener noreferrer\">search_path<\/a> the variable got created in the public schema. You can easily check this in the new catalog table pg_variable:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# select varname, varnamespace::regnamespace from pg_variable;\n varname | varnamespace \n---------+--------------\n var1    | public\n(1 row)\n<\/pre>\n<p>By default, once a variable is created, it is persistent and available again after the instance is restarted:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# ! pg_ctl restart\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-19 01:29:48.825 CET - 1 - 80179 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-19 01:29:48.825 CET - 2 - 80179 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# select 1;\nFATAL:  terminating connection due to administrator command\nserver closed the connection unexpectedly\n        This probably means the server terminated abnormally\n        before or while processing the request.\nThe connection to the server was lost. Attempting reset: Succeeded.\npostgres=# select var1;\n var1 \n------\n     \n(1 row)\n<\/pre>\n<p>Until now the variable does not contain any value, as we did not assign anything. To do that you can use &#8220;let&#8221;:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# h let\nCommand:     LET\nDescription: change a schema variable's value\nSyntax:\nLET schema_variable = sql_expression\nLET schema_variable = DEFAULT\n\nURL: https:\/\/www.postgresql.org\/docs\/devel\/sql-let.html\n<\/pre>\n<p>Assigning a value can be as simple as this:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# let var1 = 1;\nLET\npostgres=# select var1;\n var1 \n------\n    1\n(1 row)\n<\/pre>\n<p>.. or you can calculate the new value:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# let var1 = var1 * 2;\nLET\npostgres=# select var1;\n var1 \n------\n    2\n(1 row)\n<\/pre>\n<p>The value, a variable has assigned to, is not persistent, it lives only for the duration of the session:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# ! pg_ctl restart\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-19 01:44:42.837 CET - 1 - 80305 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-19 01:44:42.837 CET - 2 - 80305 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# select 1;\nFATAL:  terminating connection due to administrator command\nserver closed the connection unexpectedly\n        This probably means the server terminated abnormally\n        before or while processing the request.\nThe connection to the server was lost. Attempting reset: Succeeded.\npostgres=# select var1;\n var1 \n------\n     \n(1 row)\n<\/pre>\n<p>If you want to have the value of a variable persistent you need to make it immutable:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create immutable variable var2 as int default 2;\nCREATE VARIABLE\npostgres=# select var2;\n var2 \n------\n    2\n(1 row)\n\npostgres=# ! pg_ctl restart\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-19 01:58:53.365 CET - 1 - 80414 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-19 01:58:53.365 CET - 2 - 80414 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# select 1;\nFATAL:  terminating connection due to administrator command\nserver closed the connection unexpectedly\n        This probably means the server terminated abnormally\n        before or while processing the request.\nThe connection to the server was lost. Attempting reset: Succeeded.\npostgres=# select var2;\n var2 \n------\n    2\n(1 row)\n<\/pre>\n<p>Important to understand is, that variables are not transaction safe by default:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create variable var3 as int default 3;\nCREATE VARIABLE \npostgres=# select var3;\n var3 \n------\n    3\n(1 row)\n\npostgres=# begin;\nBEGIN\npostgres=*# let var3=4;\nLET\npostgres=*# rollback;\nROLLBACK\npostgres=# select var3;\n var3 \n------\n    4\n(1 row)\n<\/pre>\n<p>But you can do it, if you want:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create variable var4 as int default 5 on transaction end reset;\nCREATE VARIABLE\npostgres=# begin;\nBEGIN\npostgres=*# let var4 = 10;\nLET\npostgres=*# select var4;\n var4 \n------\n   10\n(1 row)\n\npostgres=*# rollback;\nROLLBACK\npostgres=# select var4;\n var4 \n------\n    5\n(1 row)\n<\/pre>\n<p>Like tables, variables can also be temporary:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create temporary variable var6 as int default -1;\nCREATE VARIABLE\npostgres=# ! pg_ctl restart\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-19 02:22:22.308 CET - 1 - 80611 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-19 02:22:22.308 CET - 2 - 80611 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# select 1;\nFATAL:  terminating connection due to administrator command\nserver closed the connection unexpectedly\n        This probably means the server terminated abnormally\n        before or while processing the request.\nThe connection to the server was lost. Attempting reset: Succeeded.\npostgres=# select var6;\nERROR:  column \"var6\" does not exist\nLINE 1: select var6;\n               ^\npostgres=# \n<\/pre>\n<p>&#8230; and you can also specify to drop the variable at commit time:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# begin;\nBEGIN\npostgres=*# create temporary variable var7 as int default -1 on commit drop;\nCREATE VARIABLE\npostgres=*# let var7 = -9;\nLET\npostgres=*# commit;\nCOMMIT\npostgres=# select var7;\nERROR:  column \"var7\" does not exist\nLINE 1: select var7;\n               ^\npostgres=# \n<\/pre>\n<p>Variables can be referenced in procedures, functions and in SQL:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create variable var8 as int default 100;\nCREATE VARIABLE\npostgres=# create variable var8 as int default 100;\nCREATE VARIABLE\npostgres=# create function f1() returns int as $$select var8;$$ language SQL;\nCREATE FUNCTION\npostgres=# select f1();\n f1  \n-----\n 100\n(1 row)\n\npostgres=# create procedure p1() as $$\npostgres$# declare\npostgres$# begin\npostgres$#   let var8 = 101;\npostgres$#   raise notice '%', var8;\npostgres$# end;\npostgres$# $$ language plpgsql;\nCREATE PROCEDURE\npostgres=# call p1();\nNOTICE:  101\nCALL\n\npostgres=# create table t1 ( a int, b text );\nCREATE TABLE\npostgres=# select var8;\n var8 \n------\n  101\n(1 row)\n\npostgres=# insert into t1 values (101,'aaa');\nINSERT 0 1\npostgres=# select * from t1 where a = var8;\n  a  |  b  \n-----+-----\n 101 | aaa\n(1 row)\n<\/pre>\n<p>This is really a great feature and I do hope it finally gets committed for PostgreSQL 14.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the bits you need to solve when you migrate from Oracle to PostgreSQL is this: In the Oracle database there are PL\/SQL packages and some of those have package variables defined. PostgreSQL does not know the concept of a package but you can use schemas to group your PL\/pgSQL functions and procedures. When [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[77],"type_dbi":[],"class_list":["post-15240","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","tag-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Will PostgreSQL14 finally come with schema variables? - 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\/will-postgresql14-finally-come-with-schema-variables\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Will PostgreSQL14 finally come with schema variables?\" \/>\n<meta property=\"og:description\" content=\"One of the bits you need to solve when you migrate from Oracle to PostgreSQL is this: In the Oracle database there are PL\/SQL packages and some of those have package variables defined. PostgreSQL does not know the concept of a package but you can use schemas to group your PL\/pgSQL functions and procedures. When [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-22T18:40:13+00:00\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 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\/will-postgresql14-finally-come-with-schema-variables\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Will PostgreSQL14 finally come with schema variables?\",\"datePublished\":\"2020-11-22T18:40:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/\"},\"wordCount\":387,\"commentCount\":0,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/\",\"name\":\"Will PostgreSQL14 finally come with schema variables? - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-11-22T18:40:13+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Will PostgreSQL14 finally come with schema variables?\"}]},{\"@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\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Will PostgreSQL14 finally come with schema variables? - 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\/will-postgresql14-finally-come-with-schema-variables\/","og_locale":"en_US","og_type":"article","og_title":"Will PostgreSQL14 finally come with schema variables?","og_description":"One of the bits you need to solve when you migrate from Oracle to PostgreSQL is this: In the Oracle database there are PL\/SQL packages and some of those have package variables defined. PostgreSQL does not know the concept of a package but you can use schemas to group your PL\/pgSQL functions and procedures. When [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/","og_site_name":"dbi Blog","article_published_time":"2020-11-22T18:40:13+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Will PostgreSQL14 finally come with schema variables?","datePublished":"2020-11-22T18:40:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/"},"wordCount":387,"commentCount":0,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/","url":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/","name":"Will PostgreSQL14 finally come with schema variables? - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-11-22T18:40:13+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/will-postgresql14-finally-come-with-schema-variables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Will PostgreSQL14 finally come with schema variables?"}]},{"@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\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15240","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\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=15240"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15240\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=15240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=15240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=15240"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=15240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}