Arquitetando
Soluções de Dados
com PostgreSQL
Raul Oliveira
Especialista em Bancos de Dados
@rauldoliveira
raul.oliveira@tecnisys.com.br
raul.oliveira@msn.com
✓ Meetup Brasília DataGroup
http://www.meetup.com/pt-BR/Brasilia-DataGroup/
✓ SQLServerDF
http://groups.google.com/group/sqlserverdf
✓ MTAC
http://www.mtac.org.br
Agenda da Apresentação
• Cenário de Dados Atual
• Reflexão sobre a diversidade de
operação
• Principais argumentos usados para
ambientes com e sem open source
• Destaques do que podemos fazer
• Principais características de um
ambiente Open Source
• Ver as alternativas para gerar valor
para sua empresa com Open!
Arquitetura
Consiste na definição dos componentes, suas propriedades externas, e
seus relacionamentos com outros componentes. O termo também se
refere à documentação da arquitetura sistema.
Necessidade aquece mercados e tecnologias
Reações Comuns do Mercado Leigo ao Open
Source
• Licença de Software
• Banco de dados é produto X
O que mensurar ao aderir a novas tecnologias?
Necessidade do
cliente
Preço
Funcionalidade
Analítica
Conjunto de
Ferramentas
Requerimentos
de
Processamento
Tolerância à falha
Capacidade de
extensibilidade
Maturidade
Numero de
clientes
Performance
Opções de
Deploy
Latência
Feedback de
Clientes
Requerimentos
de Hardware
Batch / Real Time
/ Streaming /
Transacional
Tamanho da
comunidade
[não][semi]-
estruturado
Opções de
otimização
Portabilidade
Penetração de
mercado
Visibilidade
Disponibilidade
de Profissionais
Disponibilidade
de Empresas
Conhecimento
da Equipe
Material para
estudo
Documentação Integração Mobilidade
O que pode ser feito com o dado?
Extraído Exportado Importado Migrado Validado Editado
Atualizado Limpo Transformado Convertido Integrado Segregado
Agregado Referenciado Revisado Relatado Analisado Garimpado
Salvo Recuperado Arquivado Restaurado Eliminado Persistido
E o que fazemos*?
• Backup (para ambientes bem maduros).
• Restart.
Quais as preocupações em um ambiente de
dados?
Arquitetura
Desenvolvimento
Documentação
e Conteúdo
Dados /
Metadados /
Qualidade
Operações
Segurança
DW / BI /
Analytics
Competição eterna
Custo
PerformanceSegurança
E porque PostgreSQL?
• Robusto
• Estável
• Maduro
• Não é comercial! ☺
• Open Source*
• Comunidade forte
• Empresas de suporte
• Garantia de produto longevo
https://www.postgresql.org/download/linux/redhat/
yum install pgdg-centos11-11-2.noarch.rpm
yum install postgresql11 ou
yum install postgresql11-server
/usr/pgsql-11/bin/postgresql-11-setup initdb
systemctl enable postgresql-11
systemctl start postgresql-11
psql
=# ALTER USER postgres WITH ENCRYPTED PASSWORD '123456';
=# ALTER SYSTEM SET listen_addresses = '*';
echo "host all all 0.0.0.0/0 md5" >> $PGDATA/pg_hba.conf
systemctl restart postgresql-11
Engine
• WAL
• MVCC
• Paralelismo
• Particionamento
• TOAST
HADR
•Dump
•Backup
• Físico
• Offline
• Online
• Diferencial
• Lógico
HADR
•Replicação
• Física
• Streaming
• keep_segments
• Slot Replication
• Lógica
Linguagem
• SQL
• Excelente Query Optimizer
• plpgsql
• Python
• ...
https://www.sql-workbench.eu/dbms_comparison.html
Features
• JSONB
• EnterpriseDB (2016) :
Features
• JSONB
• GIN
• Generalized Inverted Index
• JSON
• Dados Multimensionais
• Arrays
Features
• JSONB
• GIN
• GIST
• Generalized Search Tree
• Tipos Geométricos
• Tipos Range
• hstore(key/value)
• Generalized (suporta proximidade)
• SP-Gist
SELECT opfname FROM pg_opfamily, pg_am
WHERE opfmethod = pg_am.oid AND amname = ’gist’
ORDER BY 1;
Features
• JSONB
• GIN
• GIST
• BRIN
Features
• JSONB
• GIN
• GIST
• BRIN
• FDW
FDW
• Suporte a herança
• Push-down Optimization
• Operator e Function
• Join
• Predicate
• Aggregate
• Triggers e CKs
• https://wiki.postgresql.org/wiki/Foreign_data_wrappers
Features
• JSONB
• GIN
• GIST
• BRIN
• FDW
yum install postgresql10-contrib.x86_64
-> Cria usuário no source
-> Cria tabelas
-> Grant no source
-> Modificar hba.conf no source
-> Cria extension fdw no target
=# CREATE EXTENSION postgres_fdw;
-> Grant no target
=# GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO app_user;
=# GRANT USAGE ON FOREIGN SERVER hr TO app_user;
-> Cria Server Definition
=> CREATE SERVER hr
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'postgres', host 'serversource', port '5432');
-> Cria User Mapping
=> CREATE USER MAPPING for app_user
SERVER ServerSource
OPTIONS (user 'fdw_user', password '123456');
-> Cria Foreing Table
=> CREATE FOREIGN TABLE employee
(id int, name character varying(20), desc character varying(20))
SERVER serversource
OPTIONS (schema_name 'public', table_name 'employee');
Cenários - OLTP
• PGBouncer
• Bouncer
• PGPool
• Roteamento de Consultas
• Cache
Cenários - OLTP
• 3FN ?
• JSON
• XML
• Fato
Cenários - OLTP
• 3FN ?
• JSON
• XML
• Fato
• Distribuído
• Sharding
• Misto
• Hadoop
• MongoDB
Cenários - NoSQL
• JSONB
• MongoDB, CouchDB, Cassandra...
• Hstore (chave, valor)
• Redis, Dynamo, MemcacheDB
• GIN, GIST
• Json, FTS...
• Hash Index
• Baixa seletividade
• Programação Assíncrona-listen/notify
• RabbitMQ, ActiveMQ...
• Unlogged Tables
• Synchronous Commit = OFF
Cenários - OLAP
• Features:
• Paralelismo
• Modelagem
• Particionamento
• Shared Buffer
• Memória Local
Partição 1 Partição 2 Partição 3 Partição 4
Operador
Junção
Query
Tabela
Cenários - OLAP
• Features
• Citus
Cenários - OLAP
• Features
• Citus
• GreenPlum
Conclusão
• Pense macro o seu ambiente
• Open Source cuidará do seu ambiente!
• Explore as várias óticas do seu ambiente
• Pense no ciclo de vida do seu dado e de onde seu dado está.
Aplicações e Hardware que o tocam (Da visão de um DBA).
• Se você fala muito mal de um produto, há grandes chances de você
não conhecer ele bem. Estude.
@rauldoliveira
raul.oliveira@msn.com
Muito Obrigado!

Arquitetando Soluções de Dados com PostgreSQL

  • 1.
  • 2.
    Raul Oliveira Especialista emBancos de Dados @rauldoliveira raul.oliveira@tecnisys.com.br raul.oliveira@msn.com ✓ Meetup Brasília DataGroup http://www.meetup.com/pt-BR/Brasilia-DataGroup/ ✓ SQLServerDF http://groups.google.com/group/sqlserverdf ✓ MTAC http://www.mtac.org.br
  • 4.
    Agenda da Apresentação •Cenário de Dados Atual • Reflexão sobre a diversidade de operação • Principais argumentos usados para ambientes com e sem open source • Destaques do que podemos fazer • Principais características de um ambiente Open Source • Ver as alternativas para gerar valor para sua empresa com Open!
  • 5.
    Arquitetura Consiste na definiçãodos componentes, suas propriedades externas, e seus relacionamentos com outros componentes. O termo também se refere à documentação da arquitetura sistema.
  • 6.
  • 11.
    Reações Comuns doMercado Leigo ao Open Source • Licença de Software • Banco de dados é produto X
  • 12.
    O que mensurarao aderir a novas tecnologias? Necessidade do cliente Preço Funcionalidade Analítica Conjunto de Ferramentas Requerimentos de Processamento Tolerância à falha Capacidade de extensibilidade Maturidade Numero de clientes Performance Opções de Deploy Latência Feedback de Clientes Requerimentos de Hardware Batch / Real Time / Streaming / Transacional Tamanho da comunidade [não][semi]- estruturado Opções de otimização Portabilidade Penetração de mercado Visibilidade Disponibilidade de Profissionais Disponibilidade de Empresas Conhecimento da Equipe Material para estudo Documentação Integração Mobilidade
  • 13.
    O que podeser feito com o dado? Extraído Exportado Importado Migrado Validado Editado Atualizado Limpo Transformado Convertido Integrado Segregado Agregado Referenciado Revisado Relatado Analisado Garimpado Salvo Recuperado Arquivado Restaurado Eliminado Persistido
  • 14.
    E o quefazemos*? • Backup (para ambientes bem maduros). • Restart.
  • 15.
    Quais as preocupaçõesem um ambiente de dados? Arquitetura Desenvolvimento Documentação e Conteúdo Dados / Metadados / Qualidade Operações Segurança DW / BI / Analytics
  • 16.
  • 17.
    E porque PostgreSQL? •Robusto • Estável • Maduro • Não é comercial! ☺ • Open Source* • Comunidade forte • Empresas de suporte • Garantia de produto longevo https://www.postgresql.org/download/linux/redhat/ yum install pgdg-centos11-11-2.noarch.rpm yum install postgresql11 ou yum install postgresql11-server /usr/pgsql-11/bin/postgresql-11-setup initdb systemctl enable postgresql-11 systemctl start postgresql-11 psql =# ALTER USER postgres WITH ENCRYPTED PASSWORD '123456'; =# ALTER SYSTEM SET listen_addresses = '*'; echo "host all all 0.0.0.0/0 md5" >> $PGDATA/pg_hba.conf systemctl restart postgresql-11
  • 18.
    Engine • WAL • MVCC •Paralelismo • Particionamento • TOAST
  • 19.
    HADR •Dump •Backup • Físico • Offline •Online • Diferencial • Lógico
  • 20.
    HADR •Replicação • Física • Streaming •keep_segments • Slot Replication • Lógica
  • 21.
    Linguagem • SQL • ExcelenteQuery Optimizer • plpgsql • Python • ... https://www.sql-workbench.eu/dbms_comparison.html
  • 22.
  • 23.
    Features • JSONB • GIN •Generalized Inverted Index • JSON • Dados Multimensionais • Arrays
  • 24.
    Features • JSONB • GIN •GIST • Generalized Search Tree • Tipos Geométricos • Tipos Range • hstore(key/value) • Generalized (suporta proximidade) • SP-Gist SELECT opfname FROM pg_opfamily, pg_am WHERE opfmethod = pg_am.oid AND amname = ’gist’ ORDER BY 1;
  • 25.
  • 26.
    Features • JSONB • GIN •GIST • BRIN • FDW FDW • Suporte a herança • Push-down Optimization • Operator e Function • Join • Predicate • Aggregate • Triggers e CKs • https://wiki.postgresql.org/wiki/Foreign_data_wrappers
  • 27.
    Features • JSONB • GIN •GIST • BRIN • FDW yum install postgresql10-contrib.x86_64 -> Cria usuário no source -> Cria tabelas -> Grant no source -> Modificar hba.conf no source -> Cria extension fdw no target =# CREATE EXTENSION postgres_fdw; -> Grant no target =# GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO app_user; =# GRANT USAGE ON FOREIGN SERVER hr TO app_user; -> Cria Server Definition => CREATE SERVER hr FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'postgres', host 'serversource', port '5432'); -> Cria User Mapping => CREATE USER MAPPING for app_user SERVER ServerSource OPTIONS (user 'fdw_user', password '123456'); -> Cria Foreing Table => CREATE FOREIGN TABLE employee (id int, name character varying(20), desc character varying(20)) SERVER serversource OPTIONS (schema_name 'public', table_name 'employee');
  • 28.
    Cenários - OLTP •PGBouncer • Bouncer • PGPool • Roteamento de Consultas • Cache
  • 29.
    Cenários - OLTP •3FN ? • JSON • XML • Fato
  • 30.
    Cenários - OLTP •3FN ? • JSON • XML • Fato • Distribuído • Sharding • Misto • Hadoop • MongoDB
  • 31.
    Cenários - NoSQL •JSONB • MongoDB, CouchDB, Cassandra... • Hstore (chave, valor) • Redis, Dynamo, MemcacheDB • GIN, GIST • Json, FTS... • Hash Index • Baixa seletividade • Programação Assíncrona-listen/notify • RabbitMQ, ActiveMQ... • Unlogged Tables • Synchronous Commit = OFF
  • 32.
    Cenários - OLAP •Features: • Paralelismo • Modelagem • Particionamento • Shared Buffer • Memória Local Partição 1 Partição 2 Partição 3 Partição 4 Operador Junção Query Tabela
  • 33.
    Cenários - OLAP •Features • Citus
  • 34.
    Cenários - OLAP •Features • Citus • GreenPlum
  • 35.
    Conclusão • Pense macroo seu ambiente • Open Source cuidará do seu ambiente! • Explore as várias óticas do seu ambiente • Pense no ciclo de vida do seu dado e de onde seu dado está. Aplicações e Hardware que o tocam (Da visão de um DBA). • Se você fala muito mal de um produto, há grandes chances de você não conhecer ele bem. Estude.
  • 36.