{"id":8744,"date":"2020-04-15T07:30:46","date_gmt":"2020-04-15T10:30:46","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=8744"},"modified":"2020-04-15T10:09:34","modified_gmt":"2020-04-15T13:09:34","slug":"gzip-no-postgresql","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2020\/04\/15\/gzip-no-postgresql\/","title":{"rendered":"GZip no PostgreSQL"},"content":{"rendered":"<p>As extens\u00f5es permitem que os usu\u00e1rios fa\u00e7am mais com o PostgreSQL, al\u00e9m do armazenamento e recupera\u00e7\u00e3o b\u00e1sicas. O PostgreSQL \u00e9 um ambiente de integra\u00e7\u00e3o completo, com o Python ou Perl, e voc\u00ea pode construir pipelines de manipula\u00e7\u00e3o de dados, usando os recursos nativos e de extens\u00e3o do PostgreSQL.<\/p>\n<p>Com base nisso, Paul Ramsey criou a <a href=\"https:\/\/github.com\/pramsey\/pgsql-gzip\/\" rel=\"noopener noreferrer\" target=\"_blank\">extens\u00e3o GZIP<\/a>, que nada mais \u00e9 que uma liga\u00e7\u00e3o do <a href=\"https:\/\/www.zlib.net\/\" rel=\"noopener noreferrer\" target=\"_blank\">zlib <\/a>ao SQL, para que os usu\u00e1rios possam compactar e descompactar as coisas pelo PostgreSQL.<\/p>\n<p>A ideia surgiu a partir<a href=\"https:\/\/lists.osgeo.org\/pipermail\/postgis-devel\/2019-November\/028276.html\" rel=\"noopener noreferrer\" target=\"_blank\"> de um email<\/a> na lista de discuss\u00e3o do PostGIS, que dizia o seguinte:<\/p>\n<p>&#8220;A incr\u00edvel fun\u00e7\u00e3o ST_AsMVT() possui dois padr\u00f5es de uso comuns: copiar os MVTs resultantes para um tile cache (por exemplo, arquivo .mbtiles ou uma visualiza\u00e7\u00e3o materializada) ou servir o MVT aos usu\u00e1rios (abordagem direta do navegador SQL). Ambos os padr\u00f5es ainda requerem uma etapa adicional de processamento de dados &#8211; gziping.&#8221;<\/p>\n<p>E esse caso de uso tamb\u00e9m se aplica a pessoas que geram o GeoJSON diretamente no banco de dados e o enviam para clientes da Web.<\/p>\n<p>O n\u00facleo do PostgreSQL geralmente desaprova as fun\u00e7\u00f5es de compacta\u00e7\u00e3o no n\u00edvel SQL, porque o banco de dados j\u00e1 faz compacta\u00e7\u00e3o de tuplas de tamanho grande, conforme necess\u00e1rio. A \u00faltima coisa que queremos \u00e9 que as pessoas apliquem manualmente a compacta\u00e7\u00e3o aos valores das colunas e depois as agrupem em linhas nas quais o banco de dados precisar\u00e1 recompact\u00e1-las internamente. Do ponto de vista da efici\u00eancia do armazenamento, \u00e9 prefer\u00edvel apenas recuar e deixar o PostgreSQL fazer seu trabalho.<\/p>\n<p>Mas da perspectiva de um ambiente de integra\u00e7\u00e3o, em que um aplicativo pode emitir ou consumir dados compactados, ter uma ferramenta no SQL para compactar e descompactar esses dados \u00e9 potencialmente bastante \u00fatil.<\/p>\n<p>Fonte: <a href=\"http:\/\/blog.cleverelephant.ca\/2019\/11\/pgsql-gzip.html\" rel=\"noopener noreferrer\" target=\"_blank\">Clever Elephant Blog<\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>As extens\u00f5es permitem que os usu\u00e1rios fa\u00e7am mais com o PostgreSQL, al\u00e9m do armazenamento e recupera\u00e7\u00e3o b\u00e1sicas. O PostgreSQL \u00e9 um ambiente de integra\u00e7\u00e3o completo, com o Python ou Perl, e voc\u00ea pode construir pipelines de manipula\u00e7\u00e3o de dados, usando&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2020\/04\/15\/gzip-no-postgresql\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":8790,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[212,230],"class_list":["post-8744","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-postgis","tag-postgresql"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=8744"}],"version-history":[{"count":7,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8744\/revisions"}],"predecessor-version":[{"id":8806,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8744\/revisions\/8806"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/8790"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=8744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=8744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=8744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}