{"id":15612,"date":"2021-02-11T21:30:29","date_gmt":"2021-02-11T20:30:29","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/"},"modified":"2024-11-08T15:36:42","modified_gmt":"2024-11-08T14:36:42","slug":"micorsoft-flexible-server-for-postgresql","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/","title":{"rendered":"Microsoft Flexible Server for PostgreSQL"},"content":{"rendered":"<p>This Blog is about some findings on Microsoft\u2019s new Flexible Server offering for PostgreSQL which is in Customer Preview at the moment.<\/p>\n<h3>Findings about the infrastructure<\/h3>\n<p>The Microsoft Flexible Server for PostgreSQL is using Ubuntu as OS infrastructure, I think it is worth to be noticed that Microsoft&#8217;s new offering is switching from Windows to Linux.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=&gt; select version();\nversion\n-----------------------------------------------------------------------------------------------------------------\nPostgreSQL 12.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609, 64-bit\n<\/pre>\n<p>Ubuntu upgrade ist planned as i know, Ubuntu 16.04 is end of support 04\/2021.<\/p>\n<h3>Findings about performance<\/h3>\n<p>We have tested the performance which is more stable than on the old Single Server offering.<\/p>\n<h3>Differences<\/h3>\n<p>The new setup is one virtual machine per instance, instead of one big machine with many instances on. On the old setup there is in any case a gateway in between, which causes security and in some points also performance issues. On the old setup, with many instances, this gateway moves the connection for any instance to Port 5432 which is PostgreSQL default, with <strong>show port; <\/strong>we have seen many instances running originally in the 20000 port region.<\/p>\n<p>The mapping from ports in the 20000 region to 5432 is done by this gateway and this is gone with the new offering.<\/p>\n<h3>Collation<\/h3>\n<p>The default collation on Azure Flexible Server Offering is UTF-8 which is PostgreSQL default.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=&gt; show server_encoding;\nserver_encoding\n-----------------\nUTF8\n\npostgres=&gt; l\nList of databases\nName | Owner | Encoding | Collate | Ctype | Access privileges\n-------------------+----------------+----------+------------+------------+-----------------------------------\nazure_maintenance | azuresu | UTF8 | en_US.utf8 | en_US.utf8 |\npostgres | azure_pg_admin | UTF8 | en_US.utf8 | en_US.utf8 |\ntemplate0 | azuresu | UTF8 | en_US.utf8 | en_US.utf8 | =c\/azuresu +\n| | | | | azuresu=CTc\/azuresu\ntemplate1 | azure_pg_admin | UTF8 | en_US.utf8 | en_US.utf8 | =c\/azure_pg_admin +\n| | | | | azure_pg_admin=CTc\/azure_pg_admin\n<\/pre>\n<p><strong>SSL<\/strong><\/p>\n<p>is stable:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">postgres=&gt; select * from pg_stat_ssl;\npid | ssl | version | cipher | bits | compression | client_dn | client_serial | issuer_dn\n-------+-----+---------+-----------------------------+------+-------------+---------------------------------------------+------------------------------------------------+-----------------------------------\n51 | f | | | | | | |\n55 | f | | | | | | |\n56 | f | | | | | | |\n57 | f | | | | | | |\n28669 | t | TLSv1.2 | ECDHE-RSA-AES256-GCM-SHA384 | 256 | f | \/CN=azuresu.b92f28e7b317.database.azure.com | 1293482480206780384144623282355891870454996725 | \/DC=GBL\/DC=AME\/CN=AME INFRA CA 01\n28013 | t | TLSv1.2 | ECDHE-RSA-AES256-GCM-SHA384 | 256 | f | | |\n49 | f | | | | | | |\n48 | f | | | | | | |\n50 | f |\n<\/pre>\n<h3>Extensions<\/h3>\n<p>Not all extensions provided by the contrib package are available on Azure, this may have some consequences if your application requires one of them:<\/p>\n<ul>\n<li>address_standardizer | 2.5.1 | | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.<\/li>\n<li>address_standardizer_data_us | 2.5.1 | | Address Standardizer US dataset example<\/li>\n<li>adminpack | 2.0 | | administrative functions for PostgreSQL<\/li>\n<li>amcheck | 1.1 | | functions for verifying relation integrity<\/li>\n<li>autoinc | 1.0 | | functions for autoincrementing fields<\/li>\n<li>azure | 1.0 | 1.0 | azure extension for PostgreSQL service<\/li>\n<li>bloom | 1.0 | | bloom access method &#8211; signature file based index<\/li>\n<li>btree_gin | 1.3 | | support for indexing common datatypes in GIN<\/li>\n<li>btree_gist | 1.5 | | support for indexing common datatypes in GiST<\/li>\n<li>citext | 1.5 | | data type for case-insensitive character strings<\/li>\n<li>cube | 1.4 | | data type for multidimensional cubes<\/li>\n<li>dblink | 1.2 | | connect to other PostgreSQL databases from within a database<\/li>\n<li>dict_int | 1.0 | | text search dictionary template for integers<\/li>\n<li>dict_xsyn | 1.0 | | text search dictionary template for extended synonym processing<\/li>\n<li>earthdistance | 1.1 | | calculate great-circle distances on the surface of the Earth<\/li>\n<li>file_fdw | 1.0 | | foreign-data wrapper for flat file access<\/li>\n<li>fuzzystrmatch | 1.1 | | determine similarities and distance between strings<\/li>\n<li>hstore | 1.5 | | data type for storing sets of (key, value) pairs<\/li>\n<li>insert_username | 1.0 | | functions for tracking who changed a table<\/li>\n<li>intagg | 1.1 | | integer aggregator and enumerator (obsolete)<\/li>\n<li>intarray | 1.2 | | functions, operators, and index support for 1-D arrays of integers<\/li>\n<li>isn | 1.2 | | data types for international product numbering standards<\/li>\n<li>lo | 1.1 | | Large Object maintenance<\/li>\n<li>ltree | 1.1 | | data type for hierarchical tree-like structures<\/li>\n<li>moddatetime | 1.0 | | functions for tracking last modification time<\/li>\n<li>pageinspect | 1.7 | | inspect the contents of database pages at a low level<\/li>\n<li>pg_buffercache | 1.3 | | examine the shared buffer cache<\/li>\n<li>pg_cron | 1.2 | | Job scheduler for PostgreSQL<\/li>\n<li>pg_freespacemap | 1.2 | | examine the free space map (FSM)<\/li>\n<li>pg_prewarm | 1.2 | | prewarm relation data<\/li>\n<li>pg_stat_statements | 1.6 | | track execution statistics of all SQL statements executed<\/li>\n<li>pg_trgm | 1.4 | | text similarity measurement and index searching based on trigrams<\/li>\n<li>pg_visibility | 1.2 | | examine the visibility map (VM) and page-level visibility info<\/li>\n<li>pgaudit | 1.3.1 | | provides auditing functionality<\/li>\n<li>pgcrypto | 1.3 | | cryptographic functions<\/li>\n<li>pglogical | 2.3.2 | | PostgreSQL Logical Replication<\/li>\n<li>pglogical_origin | 1.0.0 | | Dummy extension for compatibility when upgrading from Postgres 9.4<\/li>\n<li>pgrowlocks | 1.2 | | show row-level locking information<\/li>\n<li>pgstattuple | 1.5 | | show tuple-level statistics<\/li>\n<li>plpgsql | 1.0 | 1.0 | PL\/pgSQL procedural language<\/li>\n<li>postgis | 2.5.1 | | PostGIS geometry, geography, and raster spatial types and functions<\/li>\n<li>postgis_sfcgal | 2.5.1 | | PostGIS SFCGAL functions<\/li>\n<li>postgis_tiger_geocoder | 2.5.1 | | PostGIS tiger geocoder and reverse geocoder<\/li>\n<li>postgis_topology | 2.5.1 | | PostGIS topology spatial types and functions<\/li>\n<li>postgres_fdw | 1.0 | | foreign-data wrapper for remote PostgreSQL servers<\/li>\n<li>refint | 1.0 | | functions for implementing referential integrity (obsolete)<\/li>\n<li>seg | 1.3 | | data type for representing line segments or floating-point intervals<\/li>\n<li>sslinfo | 1.2 | | information about SSL certificates<\/li>\n<li>tablefunc | 1.0 | | functions that manipulate whole tables, including crosstab<\/li>\n<li>tcn | 1.0 | | Triggered change notifications<\/li>\n<li>timetravel | 1.0 | | functions for implementing time travel<\/li>\n<li>tsm_system_rows | 1.0 | | TABLESAMPLE method which accepts number of rows as a limit<\/li>\n<li>tsm_system_time | 1.0 | | TABLESAMPLE method which accepts time in milliseconds as a limit<\/li>\n<li>unaccent | 1.1 | | text search dictionary that removes accents<\/li>\n<li>uuid-ossp | 1.1 | | generate universally unique identifiers (UUIDs)<\/li>\n<li>xml2 | 1.1 | | XPath querying and XSLT<\/li>\n<\/ul>\n<p>These extensions are missing compared to a default community setup with the contrib package:<\/p>\n<ul>\n<li>hstore_plperl<\/li>\n<li>hstore_plperlu<\/li>\n<li>jsonb_plperl<\/li>\n<li>jsonb_plperlu<\/li>\n<li>pg_stat_kcache<\/li>\n<\/ul>\n<p>These extension are not in the default Linux setup with the contrib package:<\/p>\n<ul>\n<li>address_standardizer_data_us<\/li>\n<li>azure<\/li>\n<li>pg_cron<\/li>\n<li>pgaudit<\/li>\n<li>pglogical<\/li>\n<li>pglogical_origin<\/li>\n<li>postgis<\/li>\n<li>postgis_sfcgal<\/li>\n<li>postgis_tiger_geocoder<\/li>\n<li>postgis_topology<\/li>\n<\/ul>\n<h3>Findings about security<\/h3>\n<p>This is a very important point for someone who has to fulfill security requirements by corporate security. On the configuration page it is possible to enable a firewall rule to allow Azure services to connect, what does this mean in reality?<br \/>\n<b>select * from pg_hba_file_rules;<\/b> is blocked on the new offering, so we discussed with Microsoft if there is any change here.<\/p>\n<p>This is, according to information of Microsoft, not the case, so that this finding is still present:<\/p>\n<p><strong>pg_hba.conf contains more than 10900 entries including 45 \/16 Networks, means these 45 \/16 networks allowing to connect 45 x 65025 IP Adresses = 2.926 Million IP addresses allowed to connect with host and password security only, with enabled Azure Services to connect.<\/strong><\/p>\n<p>It is interesting that with enabled SSL enforcement, the entries inside pg_hba.conf are still on host and not on hostssl. According to the PostgreSQL documentation also non SSL connections are allowed: <a href=\"https:\/\/www.postgresql.org\/docs\/11\/auth-pg-hba-conf.html\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.postgresql.org\/docs\/11\/auth-pg-hba-conf.html<\/a><\/p>\n<p><b>host<\/b><br \/>\nThis record matches connection attempts made using TCP\/IP. Host records match either SSL or non-SSL connection attempts.<br \/>\n<b>hostssl<\/b><br \/>\nThis record matches connection attempts made using TCP\/IP, but only when the connection is made with SSL encryption.<br \/>\n<b>password<\/b><br \/>\nRequire the client to supply an unencrypted password for authentication. Since the password is sent in clear text over the network, this should not be used on untrusted networks.<\/p>\n<p>Password hashing is still configured to <strong>MD5<\/strong>instead of <strong>scram-sha-256<\/strong>.<\/p>\n<p>On the old Single Server Offering we see broken SSL connections with <strong>select * from pg_stat_ssl; <\/strong>SSLwas given from your client to the Gateway, but broken from the gateway to the instance.<\/p>\n<p>A restart of the instance solves the issue, but SSL status on PostgreSQL level is not monitored by Microsoft, this issue is also gone with the new Flexible Server offering by removing the Gateway with the new Linux based setup.<\/p>\n<p>Yes we see many improvements, but also many things that need to be discussed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This Blog is about some findings on Microsoft\u2019s new Flexible Server offering for PostgreSQL which is in Customer Preview at the moment. Findings about the infrastructure The Microsoft Flexible Server for PostgreSQL is using Ubuntu as OS infrastructure, I think it is worth to be noticed that Microsoft&#8217;s new offering is switching from Windows to [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[83],"tags":[1338,49,2602],"type_dbi":[],"class_list":["post-15612","post","type-post","status-publish","format-standard","hentry","category-postgresql","tag-azure","tag-microsoft","tag-postgresql-2"],"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>Microsoft Flexible Server for PostgreSQL - 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\/micorsoft-flexible-server-for-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Microsoft Flexible Server for PostgreSQL\" \/>\n<meta property=\"og:description\" content=\"This Blog is about some findings on Microsoft\u2019s new Flexible Server offering for PostgreSQL which is in Customer Preview at the moment. Findings about the infrastructure The Microsoft Flexible Server for PostgreSQL is using Ubuntu as OS infrastructure, I think it is worth to be noticed that Microsoft&#8217;s new offering is switching from Windows to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T20:30:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-08T14:36:42+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=\"6 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\/micorsoft-flexible-server-for-postgresql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b\"},\"headline\":\"Microsoft Flexible Server for PostgreSQL\",\"datePublished\":\"2021-02-11T20:30:29+00:00\",\"dateModified\":\"2024-11-08T14:36:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/\"},\"wordCount\":1051,\"commentCount\":0,\"keywords\":[\"Azure\",\"Microsoft\",\"postgresql\"],\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/\",\"name\":\"Microsoft Flexible Server for PostgreSQL - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2021-02-11T20:30:29+00:00\",\"dateModified\":\"2024-11-08T14:36:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Microsoft Flexible Server for PostgreSQL\"}]},{\"@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":"Microsoft Flexible Server for PostgreSQL - 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\/micorsoft-flexible-server-for-postgresql\/","og_locale":"en_US","og_type":"article","og_title":"Microsoft Flexible Server for PostgreSQL","og_description":"This Blog is about some findings on Microsoft\u2019s new Flexible Server offering for PostgreSQL which is in Customer Preview at the moment. Findings about the infrastructure The Microsoft Flexible Server for PostgreSQL is using Ubuntu as OS infrastructure, I think it is worth to be noticed that Microsoft&#8217;s new offering is switching from Windows to [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/","og_site_name":"dbi Blog","article_published_time":"2021-02-11T20:30:29+00:00","article_modified_time":"2024-11-08T14:36:42+00:00","author":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"headline":"Microsoft Flexible Server for PostgreSQL","datePublished":"2021-02-11T20:30:29+00:00","dateModified":"2024-11-08T14:36:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/"},"wordCount":1051,"commentCount":0,"keywords":["Azure","Microsoft","postgresql"],"articleSection":["PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/","url":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/","name":"Microsoft Flexible Server for PostgreSQL - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2021-02-11T20:30:29+00:00","dateModified":"2024-11-08T14:36:42+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/micorsoft-flexible-server-for-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Microsoft Flexible Server for PostgreSQL"}]},{"@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\/15612","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=15612"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15612\/revisions"}],"predecessor-version":[{"id":35673,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15612\/revisions\/35673"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=15612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=15612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=15612"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=15612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}