{"id":15352,"date":"2020-12-05T11:51:07","date_gmt":"2020-12-05T10:51:07","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/"},"modified":"2020-12-05T11:51:07","modified_gmt":"2020-12-05T10:51:07","slug":"even-faster-data-loading-with-postgresql-14-wal_levelnone","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/","title":{"rendered":"Even faster data loading with PostgreSQL 14? wal_level=none"},"content":{"rendered":"<p>PostgreSQL is already very fast with loading loading large amounts of data. You can follow <a href=\"https:\/\/www.dbi-services.com\/blog\/the-fastest-way-to-load-1m-rows-in-postgresql\/\" target=\"_blank\" rel=\"noopener noreferrer\">this post<\/a> to get some recommendations for loading data as fast as possible. In addition you can create <a href=\"https:\/\/www.postgresql.org\/docs\/1current\/storage-init.html\" target=\"_blank\" rel=\"noopener noreferrer\">unlogged tables<\/a>, but this on the table level and not the whole cluster. With <a href=\"https:\/\/commitfest.postgresql.org\/31\/2807\/\" target=\"_blank\" rel=\"noopener noreferrer\">this patch<\/a> there will be another option: wal_level=none. With this, only minimal WAL is written, but of course at the cost of losing durability. If the cluster crashes in that mode, the whole cluster is corrupted and can not anymore be started. If you accept that risks, this can be something for you, especially when do data warehousing and load time is one of the most important factors.<\/p>\n<p><!--more--><\/p>\n<p>To have a baseline to start with lets create a simple file we&#8217;ll use for loading a table:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create table t1 ( a int, b text, c date );\nCREATE TABLE\npostgres=# insert into t1 select x, md5(x::text), now() from generate_series(1,6000000) x;\nINSERT 0 6000000\npostgres=# copy t1 to '\/var\/tmp\/demo.txt';\nCOPY 6000000\npostgres=# ! ls -lha \/var\/tmp\/demo.txt\n-rw-r--r--. 1 postgres postgres 297M Nov 23 15:51 \/var\/tmp\/demo.txt\npostgres=# \n<\/pre>\n<p>My current wal_level is replica, so lets change that to minimal:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# alter system set wal_level = minimal;\nALTER SYSTEM\npostgres=# ! pg_ctl restart -m fast\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-23 15:53:23.424 CET - 1 - 209537 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-23 15:53:23.424 CET - 2 - 209537 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# show wal_level;\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=# show wal_level;\n wal_level \n-----------\n minimal\n(1 row)\n<\/pre>\n<p>How long does it take to load that file into a new table with wal_level=minimal and how much WAL was generated?<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create table t2 ( like t1 );\nCREATE TABLE\npostgres=# timing\nTiming is on.\npostgres=# select pg_current_wal_lsn();\n pg_current_wal_lsn \n--------------------\n 0\/39872628\n(1 row)\n\nTime: 0.757 ms\npostgres=# copy t2 from '\/var\/tmp\/demo.txt';\nCOPY 6000000\nTime: 10008.335 ms (00:10.008)\npostgres=# select pg_current_wal_lsn();\n pg_current_wal_lsn \n--------------------\n 0\/4C693DD8\n(1 row)\n\nTime: 0.857 ms\npostgres=# select pg_wal_lsn_diff('0\/4C693DD8','0\/39872628');\n pg_wal_lsn_diff \n-----------------\n       316807088\n(1 row)\nTime: 2.714 ms\n<\/pre>\n<p>The time is around 10 second and we have generated around 316MB of WAL. How does that change if we go with wal_level=none?<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nALTER SYSTEM\nTime: 28.625 ms\npostgres=# ! pg_ctl restart -m fast\nwaiting for server to shut down.... done\nserver stopped\nwaiting for server to start....2020-11-23 16:00:25.648 CET - 1 - 209599 -  - @ LOG:  redirecting log output to logging collector process\n2020-11-23 16:00:25.648 CET - 2 - 209599 -  - @ HINT:  Future log output will appear in directory \"pg_log\".\n done\nserver started\npostgres=# show wal_level;\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.\nTime: 21.286 ms\npostgres=# show wal_level;\n wal_level \n-----------\n none\n(1 row)\n\nTime: 1.251 ms\n<\/pre>\n<p>Same test as above:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create table t3 ( like t1 );\nCREATE TABLE\nTime: 44.676 ms\npostgres=# select pg_current_wal_lsn();\n pg_current_wal_lsn \n--------------------\n 0\/4CA0A550\n(1 row)\n\nTime: 7.053 ms\npostgres=# copy t3 from '\/var\/tmp\/demo.txt';\nCOPY 6000000\nTime: 7968.204 ms (00:07.968)\npostgres=# select pg_current_wal_lsn();\n pg_current_wal_lsn \n--------------------\n 0\/4CA0A550\n(1 row)\n\nTime: 0.948 ms\npostgres=# select pg_wal_lsn_diff('0\/4CA0A550','0\/4CA0A550');\n pg_wal_lsn_diff \n-----------------\n               0\n(1 row)\n\nTime: 3.857 ms\n<\/pre>\n<p>We come down to 7 seconds and no WAL generated at all. That means faster loading and no space consumption in the pg_wal directory. Really nice, but be aware that the cluster gets corrupted when it crashes during loading:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# ! ps -ef | grep \"postgres -D\"\npostgres  209599       1  0 16:00 ?        00:00:00 \/u01\/app\/postgres\/product\/DEV\/db_1\/bin\/postgres -D \/u02\/pgdata\/DEV\npostgres  209644  209534  0 16:04 pts\/1    00:00:00 sh -c ps -ef | grep \"postgres -D\"\npostgres  209646  209644  0 16:04 pts\/1    00:00:00 grep postgres -D\npostgres=# create table t4 ( like t1 );\nCREATE TABLE\nTime: 3.731 ms\npostgres=# copy t4 from '\/var\/tmp\/demo.txt';\nCOPY 6000000\nTime: 8070.995 ms (00:08.071)\n<\/pre>\n<p>In another session kill the postmaster while the load is running:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@centos8pg:\/home\/postgres\/ [pgdev] kill -9 209599\n<\/pre>\n<p>If you try to restart the cluster afterwards this is the result:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\n2020-11-23 16:05:17.441 CET - 1 - 210089 -  - @ LOG:  database system was interrupted; last known up at 2020-11-23 16:00:25 CET\n2020-11-23 16:05:17.441 CET - 2 - 210089 -  - @ FATAL:  detected an unexpected server shutdown when WAL logging was disabled\n2020-11-23 16:05:17.441 CET - 3 - 210089 -  - @ HINT:  It looks like you need to deploy a new cluster from your full backup again.\n2020-11-23 16:05:17.444 CET - 7 - 210087 -  - @ LOG:  startup process (PID 210089) exited with exit code 1\n2020-11-23 16:05:17.444 CET - 8 - 210087 -  - @ LOG:  aborting startup due to startup process failure\n2020-11-23 16:05:17.449 CET - 9 - 210087 -  - @ LOG:  database system is shut dow\n<\/pre>\n<p>If you can accept that, this can be a huge step to load data faster than it is possible now.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PostgreSQL is already very fast with loading loading large amounts of data. You can follow this post to get some recommendations for loading data as fast as possible. In addition you can create unlogged tables, but this on the table level and not the whole cluster. With this patch there will be another option: wal_level=none. [&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-15352","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>Even faster data loading with PostgreSQL 14? wal_level=none - 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\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Even faster data loading with PostgreSQL 14? wal_level=none\" \/>\n<meta property=\"og:description\" content=\"PostgreSQL is already very fast with loading loading large amounts of data. You can follow this post to get some recommendations for loading data as fast as possible. In addition you can create unlogged tables, but this on the table level and not the whole cluster. With this patch there will be another option: wal_level=none. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-05T10:51:07+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=\"4 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\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Even faster data loading with PostgreSQL 14? wal_level=none\",\"datePublished\":\"2020-12-05T10:51:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/\"},\"wordCount\":290,\"commentCount\":0,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/\",\"name\":\"Even faster data loading with PostgreSQL 14? wal_level=none - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-12-05T10:51:07+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Even faster data loading with PostgreSQL 14? wal_level=none\"}]},{\"@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":"Even faster data loading with PostgreSQL 14? wal_level=none - 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\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/","og_locale":"en_US","og_type":"article","og_title":"Even faster data loading with PostgreSQL 14? wal_level=none","og_description":"PostgreSQL is already very fast with loading loading large amounts of data. You can follow this post to get some recommendations for loading data as fast as possible. In addition you can create unlogged tables, but this on the table level and not the whole cluster. With this patch there will be another option: wal_level=none. [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/","og_site_name":"dbi Blog","article_published_time":"2020-12-05T10:51:07+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Even faster data loading with PostgreSQL 14? wal_level=none","datePublished":"2020-12-05T10:51:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/"},"wordCount":290,"commentCount":0,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/","url":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/","name":"Even faster data loading with PostgreSQL 14? wal_level=none - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-12-05T10:51:07+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/even-faster-data-loading-with-postgresql-14-wal_levelnone\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Even faster data loading with PostgreSQL 14? wal_level=none"}]},{"@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\/15352","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=15352"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/15352\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=15352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=15352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=15352"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=15352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}