O documento discute as funcionalidades do PostgreSQL que o tornam adequado para Big Data, como tipos de dados não estruturados, índices eficientes, particionamento, paralelismo de consultas, full text search, window functions e foreign data wrappers. O PostgreSQL vem adicionando novas funcionalidades para melhor atender as necessidades de Big Data e está acompanhando a evolução das tecnologias.
1. Big Data e PostgreSQL
Euler Taveira
Brasília, 02/12/2017
2. Sobre este material
• esta apresentação está disponível em:
https://www.slideshare.net/eulerto
• 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
3. Apresentação
• Euler Taveira
• Desenvolvedor PostgreSQL
• Líder do PostgreSQL Brasil
• @eulerto
• http://eulerto.blogspot.com.br
• Timbira
• Diretor Técnico
• A empresa brasileira de PostgreSQL
• Consultoria
• Desenvolvimento
• Suporte 24x7
• Treinamento
Timbira - A empresa brasileira de PostgreSQL 1 / 40
5. Big Data: Introdução
• “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
• Veracidade: dados “limpos” (significativo ao problema)
• Validade: dados corretos e precisos
• Volatilidade: por quanto tempo os dados são válidos?
Unidades
1 ZB = 1024 EB = 1.048.576 PB = 1.073.741.824 TB
Timbira - A empresa brasileira de PostgreSQL 3 / 40
6. Big Data: Alguns números
• 5 exabytes (2003)
• 2,5 exabytes são criados por dia (2013)
• 2,72 zettabytes (2012)
• 4,4 zettabytes (2017)
• 44 zettabytes (2020 - previsão)
Timbira - A empresa brasileira de PostgreSQL 4 / 40
7. Big Data: Alguns números (2)
• Facebook: 2,7 bilhões likes e comentários / dia
• Youtube: são carregados 300 horas de vídeo / minuto
• Google: processa 20 PB / dia
• Twitter: 500 milhões tweets / dia
Timbira - A empresa brasileira de PostgreSQL 5 / 40
8. Big Data: Benefícios
• melhoria em marketing
• segmentação baseada no cliente
• descoberta de oportunidade de vendas
• descoberta de novos mercados
Timbira - A empresa brasileira de PostgreSQL 6 / 40
9. Big Data: Desafios
• 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 7 / 40
10. Big Data: Exemplos
• Varejo
• Governo
• Indústria
• Saúde
• Localização Pessoal
• Web
Timbira - A empresa brasileira de PostgreSQL 8 / 40
11. Big Data x PostgreSQL
• O PostgreSQL está preparado?
• Quais funcionalidades são importantes para Big Data?
Timbira - A empresa brasileira de PostgreSQL 9 / 40
13. Tipo de Dados
• hstore (8.2)
• extensão
• xml (8.3)
• json (9.2)
• jsonb (9.4)
Timbira - A empresa brasileira de PostgreSQL 11 / 40
14. Índices
• índice parcial (7.2)
• Gin (8.2)
• GiST (6.0)
• SP-GiST (9.2)
• BRIN (9.5)
Timbira - A empresa brasileira de PostgreSQL 12 / 40
15. Í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 13 / 40
16. Particionamento
• separar dados históricos de atuais
• consultas mais rápidas
• partições menores
• índices menores
• manutenção mais rápida
• expurgo
• VACUUM
• REINDEX
Timbira - A empresa brasileira de PostgreSQL 14 / 40
17. Particionamento: antes da 10
• 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 15 / 40
18. Particionamento: versão 10
• sintaxe declarativa
• roteamento de tuplas
• particionamento por
• list: uma coluna ou expressão
• range: múltiplas colunas ou expressão
• subpartições
• tabela particionada é vazia
Timbira - A empresa brasileira de PostgreSQL 16 / 40
19. Paralelismo de Consultas
• sequential scan (9.6)
• btree index scan (10)
• hash join (9.6)
• nested loop (9.6)
• merge join (10)
• bitmap heap scan (10)
• non-correlated subqueries (10)
Timbira - A empresa brasileira de PostgreSQL 17 / 40
20. Paralelismo de Consultas: parâmetros
• max_worker_processes (9.6)
• max_parallel_workers (10)
• max_parallel_workers_per_gather (9.6)
• min_parallel_relation_size (9.6)
• min_parallel_table_scan_size (10)
• min_parallel_index_scan_size (10)
Timbira - A empresa brasileira de PostgreSQL 18 / 40
21. Full Text Search
• 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 19 / 40
22. FTS x IR
Process Text
Search Index File
Retrieve Documents
Produce ranked
list of matches
Inverted File
Ranking Algorithm
Collection
Document
Timbira - A empresa brasileira de PostgreSQL 20 / 40
23. Window Functions
• 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 21 / 40
24. GROUPING SETS
• 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 22 / 40
27. TABLESAMPLE
• 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 25 / 40
28. Foreign Data Wrapper (FDW)
• 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
• join pushdown
• comandos
• CREATE FOREIGN DATA WRAPPER
• CREATE SERVER
• CREATE USER MAPPING
• CREATE FOREIGN TABLE
Timbira - A empresa brasileira de PostgreSQL 26 / 40
29. FDW: IMPORT FOREIGN SCHEMA
• 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 IMPORT FOREIGN SCHEMA f i n a n c e i r o FROM SERVER meupgsql
INTO empresa ;
2 IMPORT FOREIGN SCHEMA rh EXCEPT ( cargos , v a l e t r a n s p o r t e )
INTO empresa ;
3 IMPORT FOREIGN SCHEMA adm LIMIT TO ( usuarios , t e l e f o n e s )
INTO empresa ;
Timbira - A empresa brasileira de PostgreSQL 27 / 40
30. Tabelas Unlogged
• 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
• transformar tabelas regulares em unlogged e vice-versa
1 ALTER TABLE foo SET UNLOGGED;
2 ALTER TABLE bar SET LOGGED;
Timbira - A empresa brasileira de PostgreSQL 28 / 40
31. Visões Materializadas
• 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 29 / 40
33. Hot Standby
• replica todo cluster
• cascateamento
• mesma plataforma (hardware, sistema operacional)
• mesmo caminho de tablespaces
• mesma versão do postgres
• consulta longa na réplica gera atraso na replicação
Timbira - A empresa brasileira de PostgreSQL 31 / 40
35. Replicação Lógica
• replica mudanças
• modelo publish-subscribe
• replicação transacional
• subscriber aplica dados na mesma ordem do que o publisher
• decodificação lógica do WAL
• sincronismo inicial
• cascateamento
Timbira - A empresa brasileira de PostgreSQL 33 / 40
36. Decodificação Lógica
• 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 34 / 40
37. Não podemos esquecer de ...
• 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 35 / 40
39. Big Data x PostgreSQL
• O PostgreSQL está preparado para Big Data?
• Está acompanhando a evolução das novas tecnologias
Timbira - A empresa brasileira de PostgreSQL 37 / 40
40. O que vem por aí...
• partição overflow
• particionamento por hash
• JIT em expressões
• decodificação lógica na réplica
• plugin wal2json
Timbira - A empresa brasileira de PostgreSQL 38 / 40
41. PGConf.Brasil 2018
• 03 e 04 agosto de 2018
• São Paulo, SP
• Inscrições Abertas
• Chamada de Trabalhos
• http://www.pgconf.com.br
Timbira - A empresa brasileira de PostgreSQL 39 / 40
42. Perguntas
?
Euler Taveira de Oliveira
euler@timbira.com.br
http://www.timbira.com.br
Timbira - A empresa brasileira de PostgreSQL 40 / 40