Big Data e PostgreSQL timbira A empresa brasileira de PostgreSQL 19/11/2015 timbira Apresentação • Euler Taveira • Desenvolvedor PostgreSQL • Líder do PostgreSQL Brasil • @eulerto • http://eulerto.blogspot.com • Timbira • Diretor Técnico • A empresa brasileira de PostgreSQL • Consultoria • Desenvolvimento • Suporte 24x7 • Treinamento Timbira - A empresa brasileira de PostgreSQL 2 / 37 timbira Sobre este material • esta apresentação está disponível em: http://www.timbira.com.br/material • esta apresentação está sob licença Creative Commons Atribuição-Não Comercial 3.0 Brasil: http://creativecommons.org/licenses/by-nc/3.0/br c b n timbira Resumo 1 Introdução 2 Antes da 9.5 3 9.5 4 Conclusão Timbira - A empresa brasileira de PostgreSQL 1 / 37 Big Data: Introdução timbira • “Big Data e sua análise é o centro da ciência moderna e dos negócios” • Componentes • Variedade: estruturado, semi-estruturado, sem estrutura • Velocidade: streams, tempo real, tempo quase real, batch • Volume: TB, PB, EB, ZB Unidades 1 ZB = 1024 EB = 1.048.576 PB = 1.073.741.824 TB Timbira - A empresa brasileira de PostgreSQL 2 / 37 Big Data: Alguns números timbira • 5 exabytes (2003) • 2,5 exabytes são criados por dia (2013) • 2,72 zettabytes (2012) • 8 zettabytes (2015 - previsão) Timbira - A empresa brasileira de PostgreSQL 3 / 37 Big Data: Alguns números (2) timbira • Facebook: 2,7 bilhões likes e comentários / dia • Youtube: são carregados 48 horas de vídeo / minuto • Google: processa 20 PB / dia • Twitter: 1 bilhão tweets a cada 72 horas Timbira - A empresa brasileira de PostgreSQL 4 / 37 Big Data: Benefícios timbira • melhoria em marketing • segmentação baseada no cliente • descoberta de oportunidade de vendas • descoberta de novos mercados Timbira - A empresa brasileira de PostgreSQL 5 / 37 Big Data: Desafios timbira • espaço em disco • carga de dados é lenta • plataforma analítica avançada • centenas de servidores executando em paralelo Timbira - A empresa brasileira de PostgreSQL 6 / 37 Big Data: Exemplos timbira • Varejo • Governo • Indústria • Saúde • Localização Pessoal • Web Timbira - A empresa brasileira de PostgreSQL 7 / 37 Big Data x PostgreSQL timbira • O PostgreSQL está preparado? Timbira - A empresa brasileira de PostgreSQL 8 / 37 timbira Resumo 1 Introdução 2 Antes da 9.5 3 9.5 4 Conclusão Timbira - A empresa brasileira de PostgreSQL 9 / 37 Tipo de Dados timbira • hstore (8.2) • extensão • xml (8.3) • json (9.2) • jsonb (9.4) Timbira - A empresa brasileira de PostgreSQL 10 / 37 timbira Índices • índice parcial (7.2) • Gin (8.2) • GiST (6.0) • SP-GiST (9.2) Timbira - A empresa brasileira de PostgreSQL 11 / 37 Particionamento timbira • adicionado na 8.1 • parâmetro constraint_exclusion • herança + restrição CHECK • exclui do plano tabelas que não satisfazem restrição CHECK • regras ou gatilhos fazem o roteamento de dados inseridos, atualizados ou removidos • não há sintaxe para criação e gerenciamento de partições Timbira - A empresa brasileira de PostgreSQL 12 / 37 Full Text Search timbira • módulo adicional desde 7.2 • integrado na versão 8.3 • busca em documentos • produzir tokens a partir de documentos • converter tokens em lexemas • armazenar lexemas no índice • controle de lexemas indexados pode ser feito com dicionários • tipos de dados tsvector e tsquery • suporte a índices GiST e Gin Timbira - A empresa brasileira de PostgreSQL 13 / 37 timbira FTS x IR Process Text Search Index File Inverted File Retrieve Documents Document Collection Produce ranked list of matches Ranking Algorithm Timbira - A empresa brasileira de PostgreSQL 14 / 37 Window Functions timbira • adicionado na versão 8.4 • executa função em um conjunto de registros que estão relacionada ao registro atual • não provocam o agrupamento de registro em um único registro de saída • cláusula OVER • PARTITION BY • ORDER BY • cláusulas frame (subconjunto da partição) Timbira - A empresa brasileira de PostgreSQL 15 / 37 timbira Hot Standby Hot Standby principal réplica Timbira - A empresa brasileira de PostgreSQL 16 / 37 Foreign Data Wrapper (FDW) timbira • funcionalidade do SQL/MED (Management of External Data) • bancos de dados federados • dados são acessíveis ao SGBD mas não são gerenciados por ele • CREATE FOREIGN DATA WRAPPER • CREATE SERVER • CREATE USER MAPPING • CREATE FOREIGN TABLE Timbira - A empresa brasileira de PostgreSQL 17 / 37 Tabelas Unlogged timbira • dados não são escritos no WAL • não há garantia contra queda • mais rápidas do que tabelas regulares • índices também são unlogged • em caso de queda ou desligamento abrupto, tabelas unlogged são truncadas • tabelas unlogged não são replicadas Timbira - A empresa brasileira de PostgreSQL 18 / 37 Visões Materializadas timbira • similar a CREATE TABLE AS • “guarda” consulta que gerou visão materializada • comando REFRESH descarta dados antigos e popula com novos dados • possui a opção de criar visão materializada sem dados Timbira - A empresa brasileira de PostgreSQL 19 / 37 timbira Decodificação Lógica nó A nó B • gera modificações feitas via SQL para consumidores externos • modificações são enviadas em fluxo a slots • o formato no qual as modificações são enviadas é determinado pelo plugin de saída • plugin tem acesso a registros produzidos por INSERT e UPDATE • ... e também versões antigas do UPDATE / DELETE (REPLICA IDENTITY) • casos de uso: replicação e auditoria • tabelas unlogged e temporárias não são decodificadas Timbira - A empresa brasileira de PostgreSQL 20 / 37 Não podemos esquecer de ... timbira • COPY • diversidade de PLs • diversidade de funções estatísticas • paralelismo de operações de cópia e restauração Timbira - A empresa brasileira de PostgreSQL 21 / 37 timbira Resumo 1 Introdução 2 Antes da 9.5 3 9.5 4 Conclusão Timbira - A empresa brasileira de PostgreSQL 22 / 37 timbira Índice BRIN • Block Range Index • armazena somente os valores limites de um grupo de páginas • configura quantas páginas do datafile contribuem para entrada no índice • criação e atualização rápida • tamanho reduzido • mais lento do que BTree • casos de uso • dados estáticos e ordenados pelo índice (CLUSTER) • tabelas somente INSERT (tabelas de log) Timbira - A empresa brasileira de PostgreSQL 23 / 37 GROUPING SETS timbira • agregação de dados com diferentes cláusulas GROUP BY unidas • emulado realizando a união de todas as possibilidades • ROLLUP e CUBE são notações abreviadas do GROUPING SETS Timbira - A empresa brasileira de PostgreSQL 24 / 37 timbira ROLLUP 1 ROLLUP (c1 , c2 , c3) 2 3 4 5 6 7 GROUPING SETS ( (c1 , c2 , c3), (c1 , c2), (c1), ()) Timbira - A empresa brasileira de PostgreSQL 25 / 37 timbira CUBE 1 CUBE (c1 , c2 , c3) 2 3 4 5 6 7 8 9 10 11 GROUPING SETS ( (c1 , c2 , c3), (c1 , c2), (c1 , c3), (c1), (c2 , c3), (c2), (c3), ()) Timbira - A empresa brasileira de PostgreSQL 26 / 37 TABLESAMPLE timbira • cláusula TABLESAMPLE do SELECT • obtém um subconjunto dos registros • aplicado antes da cláusula WHERE • 2 métodos de amostragem • BERNOULLI: amostragem por registro • SYSTEM: amostragem por bloco 1 SELECT a, b, c FROM foo TABLESAMPLE BERNOULLI (0.01) WHERE d > 50; Timbira - A empresa brasileira de PostgreSQL 27 / 37 timbira Ordenação • acelerar ordenação dos tipos • VARCHAR • TEXT • NUMERIC • uso de chaves abreviadas • mecanismo de cache das chaves abreviadas Timbira - A empresa brasileira de PostgreSQL 28 / 37 FDW: junção no servidor externo timbira • também chamado de join pushdown • antes: executar duas buscas em servidores externos e fazer a junção local • depois: executar a junção remota Timbira - A empresa brasileira de PostgreSQL 29 / 37 FDW: IMPORT FOREIGN SCHEMA timbira • cria tabelas externas que representam tabelas em um servidor externo • tabelas e visões do servidor externo são importadas • conformidade com padrão SQL • cláusulas LIMIT TO e EXCEPT podem ser utilizadas para restringir o conjunto de objetos • o esquema local deve existir 1 2 3 IMPORT FOREIGN SCHEMA financeiro FROM SERVER meupgsql INTO empresa ; IMPORT FOREIGN SCHEMA rh EXCEPT (cargos , valetransporte ) INTO empresa ; IMPORT FOREIGN SCHEMA adm LIMIT TO (usuarios , telefones ) INTO empresa ; Timbira - A empresa brasileira de PostgreSQL 30 / 37 Unlogged Tables: transformação timbira • transformar tabelas regulares em unlogged e vice-versa • implementado pelo Fabrízio Mello 1 2 ALTER TABLE foo SET UNLOGGED ; ALTER TABLE bar SET LOGGED ; Timbira - A empresa brasileira de PostgreSQL 31 / 37 timbira Resumo 1 Introdução 2 Antes da 9.5 3 9.5 4 Conclusão Timbira - A empresa brasileira de PostgreSQL 32 / 37 Big Data x PostgreSQL timbira • O PostgreSQL está preparado para Big Data? • Está acompanhando a evolução das novas tecnologias Timbira - A empresa brasileira de PostgreSQL 33 / 37 O que vem por aí... timbira • melhorias na decodificação lógica (replicação bidirecional) • suporte a paralelismo de consultas • busca sequencial Timbira - A empresa brasileira de PostgreSQL 34 / 37 A Timbira no PGBR 2015 timbira • Como posso colaborar com o PostgreSQL? (Fabrizio Mello) • PostgreSQL Rock Star (Fabio Telles) • Big Data e PostgreSQL (Euler Taveira) • Curiosidades sobre o PostgreSQL que você (talvez) não sabia e se sabia vale a pena lembrar (Dickson Guedes) • Caiu a lista do PostgreSQL Brasil! E agora? (Fernando Ike) Timbira - A empresa brasileira de PostgreSQL 35 / 37 timbira Perguntas ? Euler Taveira de Oliveira [email protected] http://www.timbira.com.br Timbira - A empresa brasileira de PostgreSQL 36 / 37 timbira Referências • pgsql-announce: PostgreSQL Weekly News • http://www.postgresql.org/docs/current/ Timbira - A empresa brasileira de PostgreSQL 37 / 37