{"id":807,"date":"2014-04-18T00:30:32","date_gmt":"2014-04-18T03:30:32","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=807"},"modified":"2014-04-18T01:33:05","modified_gmt":"2014-04-18T04:33:05","slug":"postgresql-basico-testado-e-pronto-para-ser-usado","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=807","title":{"rendered":"PostgreSQL b\u00e1sico &#8211; Testado e pronto para ser usado"},"content":{"rendered":"<table border=\"0\" width=\"1261\" cellspacing=\"3\" cellpadding=\"3\">\n<tbody>\n<tr>\n<td colspan=\"2\"><b>Caracter\u00edsticas<\/b><\/p>\n<div>\n<p><em>PostgreSQL<\/em>\u00a0\u00e9 um SGBD (Sistema Gerenciador de Banco de Dados) objeto-relacional de c\u00f3digo aberto, com mais de 15 anos de desenvolvimento. \u00c9 extremamente robusto e confi\u00e1vel, al\u00e9m de ser extremamente flex\u00edvel e rico em recursos.Suas caracter\u00edsticas s\u00e3o:<\/p>\n<ul>\n<li>Tamanho m\u00e1ximo do banco de dados: ilimitado;<\/li>\n<li>Tamanho m\u00e1ximo da tabela: 32 TB;<\/li>\n<li>Tamanho m\u00e1ximo de linha: 1.6 TB;<\/li>\n<li>Tamanho m\u00e1ximo de campos: 1 GB;<\/li>\n<li>M\u00e1ximo de linhas por tabela: ilimitado;<\/li>\n<li>Colunas m\u00e1ximas por tabela: 250~1600 dependendo do tipo da coluna;<\/li>\n<li>Os \u00edndices m\u00e1ximos por tabela s\u00e3o ilimitados.<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p>Possui recursos como:<\/p>\n<ul>\n<li>Consultas complexas;<\/li>\n<li>Chaves estrangeiras;<\/li>\n<li>Integridade transacional;<\/li>\n<li>Controle de concorr\u00eancia multi-vers\u00e3o;<\/li>\n<li>Suporte ao modelo h\u00edbrido objeto-relacional;<\/li>\n<li>Ele tem facilidade de acesso;<\/li>\n<li>Gatilhos;<\/li>\n<li>Vis\u00f5es;<\/li>\n<li>Linguagem procedural em v\u00e1rias linguagens (PL\/pgSQL, PL\/Python, PL\/Java, PL\/Perl);<\/li>\n<li>Indexa\u00e7\u00e3o por texto;<\/li>\n<li>Estrutura para guardar dados Georeferenciados PostGIS.<\/li>\n<\/ul>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Instalando<\/b><\/p>\n<div>\n<p>Para instalar no\u00a0<em>CentOS<\/em>\u00a0<a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>:Eu recomendo as vers\u00f5es que possuem instala\u00e7\u00e3o gr\u00e1fica por j\u00e1 virem com quase tudo semi-configurado. No meu caso, optei por baixar do site a seguinte vers\u00e3o:<\/p>\n<p><strong>$ wget<\/strong>\u00a0<a href=\"http:\/\/get.enterprisedb.com\/postgresql\/postgresql-8.3.23-3-linux-x64.run\">http:\/\/get.enterprisedb.com\/postgresql\/postgresql-8.3.23-3-linux-x64.run<\/a><br \/>\n<strong>$ chmod +x postgresql-8.3.23-3-linux-x64.run<br \/>\n# .\/postgresql-8.3.23-3-linux-x64.run<\/strong><\/p>\n<p>Por\u00e9m existem outras maneiras de instalar&#8230; Voc\u00ea pode optar em fazer a instala\u00e7\u00e3o como abaixo.<\/p>\n<p>Baixe a vers\u00e3o desejada em:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.postgresql.org\/\">http:\/\/www.postgresql.org<\/a><\/li>\n<\/ul>\n<p>Instale utilizando:<\/p>\n<p><strong>$ .\/configure<br \/>\n$ make<br \/>\n# make install<\/strong><\/p>\n<p>Ap\u00f3s instalado, fa\u00e7a os seguintes procedimentos&#8230;<\/p>\n<p>Adicione um grupo:<\/p>\n<p><strong># groupadd postgres<\/strong><\/p>\n<p>Adicione um usu\u00e1rio:<\/p>\n<p><strong># useradd -g postgres -d \/usr\/local\/pgsql postgres<\/strong><\/p>\n<p>Crie a pasta data:<\/p>\n<p><strong># mkdir \/usr\/local\/pgsql\/data<\/strong><\/p>\n<p>Troque o dono da pasta:<\/p>\n<p><strong># chown postgres:postgres \/usr\/local\/pgsql\/data<\/strong><\/p>\n<p>Crie uma senha para o usu\u00e1rio postgres:<\/p>\n<p><strong># passwd postgres<\/strong><\/p>\n<p>Acesse com o usu\u00e1rio postgres no sistema:<\/p>\n<p><strong># su &#8211; postgres<\/strong><\/p>\n<p>Fa\u00e7a os seguintes comandos:<\/p>\n<p><strong>$ \/usr\/local\/pgsql\/bin\/initdb -D \/usr\/local\/pgsql\/data<br \/>\n$ \/usr\/local\/pgsql\/bin\/postmaster -D \/usr\/local\/pgsql\/data &amp;gt;logfile 2&amp;gt;&amp;1 &amp;<br \/>\n$ \/usr\/local\/pgsql\/bin\/pg_ctl -D \/usr\/local\/pgsql\/data start<br \/>\n$ \/usr\/local\/pgsql\/bin\/createdb test<br \/>\n$ \/usr\/local\/pgsql\/bin\/psql test<\/strong><\/p>\n<p>Ou voc\u00ea pode instalar a vers\u00e3o mais recente do Postgres com o comando:<\/p>\n<p><strong># yum install postgresql-server<\/strong><\/p>\n<p>Ap\u00f3s instalado, vamos configurar&#8230;<\/p>\n<p>Primeiramente vamos configurar o arquivo\u00a0<em>pg_hba.conf<\/em>\u00a0localizado em: \/opt\/Postgres\/vers\u00e3o\/data<\/p>\n<p>Encontre as linhas:<\/p>\n<div class=\"codigo\"><span class=\"comentario\"># &#8220;local&#8221; is for Unix domain socket connections only<\/span><br \/>\nlocal\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0trust<br \/>\n<span class=\"comentario\"># IPv4 local connections:<\/span><br \/>\nhost\u00a0\u00a0\u00a0\u00a0all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 127.0.0.1\/32\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0trust<br \/>\nhost\u00a0\u00a0\u00a0\u00a0all\u00a0\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IP_DE_ACESSO\u00a0\u00a0\u00a0\u00a0 trust<br \/>\n<span class=\"comentario\"># IPv6 local connections:<\/span><br \/>\nhost\u00a0\u00a0\u00a0\u00a0all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ::1\/128\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 trust<\/div>\n<p>E troque a palavra &#8220;md5&#8221; por &#8220;host&#8221;, como no exemplo acima e adicione os IPs de acesso.<\/p>\n<p>Salve o arquivo e saia.<\/p>\n<p>Agora vamos configurar o arquivo\u00a0<em>postgresql.conf<\/em>\u00a0que est\u00e1 na mesma pasta do arquivo anterior.<\/p>\n<p>Encontre as linhas abaixo e modifique-as para que fiquem iguais ao exemplo:<\/p>\n<div class=\"codigo\">listen_addresses = &#8216;*&#8217;<br \/>\nport = 5432<br \/>\nmax_connections = 100<br \/>\nshared_buffers = 32MB<br \/>\nmax_fsm_pages = 204800<br \/>\nlog_destination = &#8216;stderr&#8217;<br \/>\nlogging_collector = on<br \/>\nlog_line_prefix = &#8216;%t &#8216;<br \/>\ndatestyle = &#8216;iso, mdy&#8217;<br \/>\nlc_messages = &#8216;C&#8217;<br \/>\nlc_monetary = &#8216;C&#8217;<br \/>\nlc_time = &#8216;C&#8217;<br \/>\ndefault_text_search_config = &#8216;pg_catalog.english&#8217;<\/div>\n<p>Agora, com tudo j\u00e1 configurado, reinicie o Postgres:<\/p>\n<p><strong># \/etc\/init.d\/postgresql restart<\/strong><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Manuseio do banco<\/b><\/p>\n<div>Na pasta bin onde est\u00e1 instalado seu banco&#8230; No meu caso:<strong>$ ls \/opt\/Postgres\/8.3\/bin\/<\/strong><br \/>\nclusterdb<br \/>\ncreateuser<br \/>\ndropuser<br \/>\nipcclean<br \/>\npg_config<br \/>\npg_dump<br \/>\npg_restore<br \/>\npltcl_listmod<br \/>\npostmaster<br \/>\nvacuumdb<br \/>\ncreatedb<br \/>\ndropdb<br \/>\necpg<br \/>\noid2name<br \/>\npg_controldata<br \/>\npg_dumpall<br \/>\npg_standby<br \/>\npltcl_loadmod<br \/>\npsql<br \/>\nvacuumlo<br \/>\ncreatelang<br \/>\ndroplang<br \/>\ninitdb<br \/>\npgbench<br \/>\npg_ctl<br \/>\npg_resetxlog<br \/>\npltcl_delmod<br \/>\npostgres<br \/>\nreindexdbCada arquivo acima \u00e9 respons\u00e1vel por algo, veremos os principais no decorrer da leitura&#8230;1. Criar um banco de dados:<strong># .\/createdb nome_do_banco -U postgres<\/strong>2. Visualizar o banco criado:<strong># .\/psql -U postgres -l<\/strong>3. Excluir o banco criado:<strong># .\/dropdb nome_do_banco -U postgres<\/strong><\/p>\n<p>4. Acessar o banco criado atrav\u00e9s do terminal interativo de gerenciamento do PostgreSQL (psql):<\/p>\n<p><strong># .\/psql banco -U postgres<\/strong><\/p>\n<pre>Welcome to psql 8.3.23, the PostgreSQL interactive terminal.\r\n    Type:  \\copyright for distribution terms\r\n           \\h for help with SQL commands\r\n           \\? for help with psql commands\r\n           \\g or terminate with semicolon to execute query\r\n           \\q to quit\r\n    Cannot read termcap database;\r\n    using dumb terminal settings.\r\n    IVAI13=#\r\n\r\n<\/pre>\n<p>Vamos executar alguns comandos do psql e algumas consultas.<\/p>\n<ul>\n<li><strong>\\l<\/strong>\u00a0&#8212; Lista bancos, donos e codifica\u00e7\u00e3o<\/li>\n<li><strong>\\d<\/strong>\u00a0&#8212; Descreve tabelas, \u00edndices, sequ\u00eancias ou views (vis\u00e3o)<\/li>\n<li><strong>\\du<\/strong>\u00a0&#8212; Lista usu\u00e1rios e permiss\u00f5es<\/li>\n<li><strong>\\dg<\/strong>\u00a0&#8212; Lista grupos<\/li>\n<li><strong>\\dp<\/strong>\u00a0&#8212; Lista privil\u00e9gios de acesso \u00e0 tabelas, views (vis\u00f5es) e sequ\u00eancias<\/li>\n<li><strong>SELECT version();<\/strong><\/li>\n<\/ul>\n<p>5. Consultas b\u00e1sicas em SQL:<\/p>\n<p><strong>SELECT<\/strong>\u00a0&#8212; selecionar registros de tabelas<\/p>\n<p>Sintaxe resumida:<\/p>\n<p><strong>SELECT * FROM tabela;<\/strong>\u00a0&#8212; Retorna todos os registros da tabela com todos os campos<\/p>\n<p>6. Atualizar uma tabela:<\/p>\n<p><strong>UPDATE tabela SET coluna = { express\u00e3o | DEFAULT } [, &#8230;]<br \/>\nUPDATE produtos SET quantidade = quantidade + 1;<\/strong>\u00a0&#8212; Todos os registros de clientes ser\u00e3o atualizados<\/p>\n<p>7. Deletando tabelas:<\/p>\n<p><strong>DELETE FROM tabela;<\/strong>\u00a0&#8212; Cuidado, este comando excluir\u00e1 todos os registros da tabela<\/p>\n<p>Ajuda sobre os comandos:<\/p>\n<p><strong>nome_comando &#8211;help<\/strong><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>pg_dump pg_restore e psql<\/b><\/p>\n<div>\n<p>Imagine que n\u00f3s criamos um banco&#8230; e com informa\u00e7\u00f5es gravadas. Agora vamos criar um backup dele.Obs.: certifique-se de estar na pasta bin do postgres.<\/p>\n<p><strong># .\/pg_dump -Fc -h IP_D0_SERVIDOR -U postgres BANCO_PARA_BACKUP &amp;gt; \/backup.backup<\/strong><\/p>\n<p>Sendo:<\/p>\n<ul>\n<li>pgdump &#8211; script que gera backup.<\/li>\n<li>-F &#8211; formato da sa\u00edda. O formato pode ser um dos seguintes:\n<ul>\n<li>p &#8211; exporta um script SQL para um arquivo texto-puro (padr\u00e3o).<\/li>\n<li>t &#8211; exporta um arquivo tar adequado para servir de entrada para o pg_restore. Usando este formato de exporta\u00e7\u00e3o pode-se reordenar e\/ou excluir elementos do esquema durante a restaura\u00e7\u00e3o do banco de dados. Tamb\u00e9m \u00e9 poss\u00edvel limitar quais dados ser\u00e3o importados durante a restaura\u00e7\u00e3o.<\/li>\n<li>c &#8211; exporta um arquivo personalizado apropriado para servir de entrada para o pg_restore. Este \u00e9 o formato mais flex\u00edvel porque permite a reordena\u00e7\u00e3o da importa\u00e7\u00e3o dos dados, assim como dos elementos do esquema. Este formato tamb\u00e9m \u00e9 comprimido por padr\u00e3o.<\/li>\n<\/ul>\n<\/li>\n<li>-h &#8211; host<\/li>\n<li>-U &#8211; usu\u00e1rio<\/li>\n<\/ul>\n<p>Agora com este backup criado, vamos restaurar o banco de dados.<\/p>\n<p>Para restaurar existem alguns par\u00e2metros&#8230; vejamos.<\/p>\n<p>Caso seu backup foi criado com a op\u00e7\u00e3o &#8220;-Fp&#8221;, precisamos restaurar por psql:<\/p>\n<p><strong># .\/psql -U usuario -d banco &amp;lt; &#8220;\/banco.sql&#8221;<\/strong><\/p>\n<p>Caso seu banco foi criado usando par\u00e2metro &#8220;-Fc&#8221;, podemos utilizar o pg_restore:<\/p>\n<p><strong># .\/pg_restore -U postgres -d banco \/backup.backup<\/strong><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Otimizando o PostgreSQL<\/b><\/p>\n<div>\n<p>Vou mostrar cada op\u00e7\u00e3o v\u00e1lida no arquivo apresentado abaixo.<strong># vim \/opt\/Postgres\/vers\u00e3o\/data postgresql.conf<\/strong><\/p>\n<p>Procure as seguintes linhas:<\/p>\n<div class=\"codigo\">\n<p>shared_buffers = 32MB\u00a0<span class=\"comentario\"># Uma boa configura\u00e7\u00e3o seria entre 8% a 12% do total de RAM do servidor.<\/span>work_mem = 2048\u00a0<span class=\"comentario\"># Este par\u00e2metro configura o tamanho em KBytes utilizado no servidor para cada conex\u00e3o efetivada ao SGBD (Configura 2 MBytes de RAM do servidor para opera\u00e7\u00f5es de ORDER BY, CREATE INDEX e JOIN dispon\u00edveis para cada conex\u00e3o ao banco.)<\/span><\/p>\n<p>maintenance_work_mem = 16384\u00a0<span class=\"comentario\"># O total de mem\u00f3ria configurada neste par\u00e2metro \u00e9 utilizado somente durante as opera\u00e7\u00f5es de manuten\u00e7\u00e3o do banco (como VACUUM e REINDEX), sendo liberada durante o seu uso normal. Se o seu processo de VACUUM est\u00e1 muito custoso, tente aumentar o valor deste par\u00e2metro.<\/span><\/p>\n<p>max_fsm_pages = 120000\u00a0<span class=\"comentario\"># Realiza a procura por at\u00e9 120.000 p\u00e1ginas sujas na limpeza pelo VACUUM utilizando cerca de 71 Kb de RAM para isto.<\/span><\/p>\n<p>wal_buffers = 64\u00a0<span class=\"comentario\"># Seta para 512 KBytes a mem\u00f3ria destinada ao buffer de escrita no WAL.<\/span><\/p>\n<p>effective_cache_size = 32768\u00a0<span class=\"comentario\"># Seta o cache de dados do PostgreSQL para 256 MBytes de RAM.<\/span><\/p>\n<p>random_page_cost = 2\u00a0<span class=\"comentario\"># Diminui o tempo para sele\u00e7\u00e3o aleat\u00f3ria de p\u00e1ginas do otimizador de consultas.<\/span><\/p>\n<\/div>\n<p>Fonte:\u00a0<a href=\"http:\/\/imasters.com.br\/artigo\/4406\/postgresql\/otimizando-bancos-postgresql-parte-01\/\">Otimizando bancos PostgreSQL &#8211; Parte 01<\/a><\/p>\n<p>Desmarque as linhas abaixo para inicializar o autovacuum:<\/p>\n<div class=\"codigo\"><span class=\"comentario\">#autovacuum = on<\/span><span class=\"comentario\">#log_autovacuum_min_duration = -1<\/span><br \/>\n<span class=\"comentario\">#autovacuum_max_workers = 3<\/span><br \/>\n<span class=\"comentario\">#autovacuum_naptime = 1min<\/span><br \/>\n<span class=\"comentario\">#autovacuum_vacuum_threshold = 50<\/span><span class=\"comentario\">#autovacuum_analyze_threshold = 50<\/span><br \/>\n<span class=\"comentario\">#autovacuum_vacuum_scale_factor = 0.2<\/span><br \/>\n<span class=\"comentario\">#autovacuum_analyze_scale_factor = 0.1<\/span><br \/>\n<span class=\"comentario\">#autovacuum_freeze_max_age = 200000000<\/span><br \/>\n<span class=\"comentario\">#autovacuum_vacuum_cost_delay = 20<\/span><br \/>\n<span class=\"comentario\"># autovacuum, -1 means use<\/span><br \/>\n<span class=\"comentario\"># vacuum_cost_delay<\/span><br \/>\n<span class=\"comentario\">#autovacuum_vacuum_cost_limit = -1<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Caracter\u00edsticas PostgreSQL\u00a0\u00e9 um SGBD (Sistema Gerenciador de Banco de Dados) objeto-relacional de c\u00f3digo aberto, com mais de 15 anos de desenvolvimento. \u00c9 extremamente robusto e confi\u00e1vel, al\u00e9m de ser extremamente flex\u00edvel e rico em recursos.Suas caracter\u00edsticas s\u00e3o: Tamanho m\u00e1ximo do banco de dados: ilimitado; Tamanho m\u00e1ximo da tabela: 32 TB; Tamanho m\u00e1ximo de linha: 1.6 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[477,91,1,42,51,552,514,68],"tags":[553,555,556,972,554],"class_list":["post-807","post","type-post","status-publish","format-standard","hentry","category-backup-2","category-banco-de-dados","category-viazap","category-leitura-recomendada","category-linux-linuxrs","category-postgresql","category-programacao","category-redes-2","tag-basico","tag-e-pronto","tag-para-ser-usado","tag-postgresql","tag-testado"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=807"}],"version-history":[{"count":8,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/807\/revisions"}],"predecessor-version":[{"id":820,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/807\/revisions\/820"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}