Atualmente existe muito debate a respeito da habilidade das tecnologias NoSQL atenderem melhor as grandes demandas de processamento de dados em larga escala, do que seus predecessores, os RDBMS (Relational Database Management System).
E realmente as tecnologias NoSQL, assim como computação em nuvem, surgiram da grande necessidade de se prover serviços escaláveis, pois os bancos de dados estão sendo pressionados/direcionados a oferecer escalabilidade horizontal. Estas tecnologias foram desenvolvidas com técnicas de armazenamento de dados (documento, chave/valor, tabular, grafo, etc) afim de suprir esses requisitos.
Nesta apresentação veremos como o PostgreSQL atende vários desses requisitos por oferecer suporte nativo a JSON/JSONB, HStore (chave/valor), XML, oferecendo excelente indexação e otimização no armazenamento, e atendendo aos requisitos ACID, portanto tendo o melhor dos dois mundos. Sem contar o alto poder de extensibilidade que oferece pela possibilidade de escrever novos tipos de dados, mecanismos de indexação, linguagens procedurais, adaptadores de fontes de dados externas (SQL/MED), entre outras diversas características excelentes.
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) Fabrízio Mello
Atualmente existe muito debate a respeito da habilidade das tecnologias NoSQL atenderem melhor as grandes demandas de processamento de dados em larga escala, do que seus predecessores, os RDBMS (Relational Database Management System).
E realmente as tecnologias NoSQL, assim como computação em nuvem, surgiram da grande necessidade de se prover serviços escaláveis, pois os bancos de dados estão sendo pressionados/direcionados a oferecer escalabilidade horizontal. Estas tecnologias foram desenvolvidas com técnicas de armazenamento de dados (documento, chave/valor, tabular, grafo, etc) afim de suprir esses requisitos.
Nesta apresentação veremos como o PostgreSQL atende vários desses requisitos por oferecer suporte nativo a JSON/JSONB, HStore (chave/valor), XML, oferecendo excelente indexação e otimização no armazenamento, e atendendo aos requisitos ACID, portanto tendo o melhor dos dois mundos. Sem contar o alto poder de extensibilidade que oferece pela possibilidade de escrever novos tipos de dados, mecanismos de indexação, linguagens procedurais, adaptadores de fontes de dados externas (SQL/MED), entre outras diversas características excelentes.
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas
"PL/pg…ETL – Transformação de dados para DW e BI usando linguagem procedural"
- Utilização do pl/pgsql para transformação de dados.
– Motivação: quando e porque fazer ETL via linguagem procedural.
– Como fazer uma carga simples – Loop X SQL complexo.
– Como fazer uma carga com transformação.
– Como transpor linhas e colunas.
– Carregar tabelas do zero.
– Desempenho – seleção da melhor cardinalidade.
– Incrementar tabelas com dados existentes.
– Dados de outras fontes – FDW.
PALESTRANTE
Flavio Henrique Araque Gurgel é consultor e instrutor de bancos de dados da 4Linux, engenheiro eletricista pela Universidade Federal do Paraná (UFPR). Atua em projetos de dimensionamento, tuning de bases de dados e no suporte aos clientes. Atualmente, é líder da área de projetos e consultoria da empresa.
--
Palestra apresentada no PGDay Campinas 2013
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) Fabrízio Mello
Atualmente existe muito debate a respeito da habilidade das tecnologias NoSQL atenderem melhor as grandes demandas de processamento de dados em larga escala, do que seus predecessores, os RDBMS (Relational Database Management System).
E realmente as tecnologias NoSQL, assim como computação em nuvem, surgiram da grande necessidade de se prover serviços escaláveis, pois os bancos de dados estão sendo pressionados/direcionados a oferecer escalabilidade horizontal. Estas tecnologias foram desenvolvidas com técnicas de armazenamento de dados (documento, chave/valor, tabular, grafo, etc) afim de suprir esses requisitos.
Nesta apresentação veremos como o PostgreSQL atende vários desses requisitos por oferecer suporte nativo a JSON/JSONB, HStore (chave/valor), XML, oferecendo excelente indexação e otimização no armazenamento, e atendendo aos requisitos ACID, portanto tendo o melhor dos dois mundos. Sem contar o alto poder de extensibilidade que oferece pela possibilidade de escrever novos tipos de dados, mecanismos de indexação, linguagens procedurais, adaptadores de fontes de dados externas (SQL/MED), entre outras diversas características excelentes.
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas
"PL/pg…ETL – Transformação de dados para DW e BI usando linguagem procedural"
- Utilização do pl/pgsql para transformação de dados.
– Motivação: quando e porque fazer ETL via linguagem procedural.
– Como fazer uma carga simples – Loop X SQL complexo.
– Como fazer uma carga com transformação.
– Como transpor linhas e colunas.
– Carregar tabelas do zero.
– Desempenho – seleção da melhor cardinalidade.
– Incrementar tabelas com dados existentes.
– Dados de outras fontes – FDW.
PALESTRANTE
Flavio Henrique Araque Gurgel é consultor e instrutor de bancos de dados da 4Linux, engenheiro eletricista pela Universidade Federal do Paraná (UFPR). Atua em projetos de dimensionamento, tuning de bases de dados e no suporte aos clientes. Atualmente, é líder da área de projetos e consultoria da empresa.
--
Palestra apresentada no PGDay Campinas 2013
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosFabrízio Mello
Apresentação sobre Bad Smells em Bancos de Dados apresentada dia 25/03/2015 na "Quarta-feira do Conhecimento" na PROCERGS (Companhia de Processamento de Dados do Rio Grande do Sul) em Porto Alegre/RS
O PostgreSQL é um projeto de software livre mantido por uma comunidade ampla, formada por pessoas de vários lugares do mundo. A intenção dessa apresentação é exemplificar as diversas formas possíves de colaboração e como você pode iniciar hoje mesmo a fazer parte desta comunidade e fazer com que este projeto nunca acabe. Engajamento é a palavra-chave para o sucesso do PostgreSQL e de qualquer projeto. Envolva-se, engaje-se, o PostgreSQL precisa de você!
This presentation is about the work that I did during the Google Summer of Code 2014 to PostgreSQL. The project is about change an Unlogged Table to Logged and vice-versa. Project wiki page: https://wiki.postgresql.org/wiki/Allow_an_unlogged_table_to_be_changed_to_logged_GSoC_2014
I presented this work at PGCon2015 in Ottawa/Canada (2015-06-19)
This presentation is about the work that I did during the Google Summer of Code 2014 to PostgreSQL. The project is about change an Unlogged Table to Logged and vice-versa. Project wiki page: https://wiki.postgresql.org/wiki/Allow_an_unlogged_table_to_be_changed_to_logged_GSoC_2014
I presented this lecture during a PGDay in Ijui/RS (2016-10-13).
GSoC2014 - Uniritter Presentation May, 2015Fabrízio Mello
This presentation is about the work that I did during the Google Summer of Code 2014 to PostgreSQL. The project is about change an Unlogged Table to Logged and vice-versa. Project wiki page: https://wiki.postgresql.org/wiki/Allow_an_unlogged_table_to_be_changed_to_logged_GSoC_2014
I present this work to Uniritter IT students in Canoas/RS (2015-05-18) and Porto Alegre/RS (FAPA - 2015-05-20).
This presentation is about the work that I did during the Google Summer of Code 2014 to PostgreSQL. The project is about change an Unlogged Table to Logged and vice-versa. Project wiki page: https://wiki.postgresql.org/wiki/Allow_an_unlogged_table_to_be_changed_to_logged_GSoC_2014
I present this work to San Francisco PostgreSQL User Group during a meetup at 10/28/2014 (http://www.meetup.com/postgresql-1/events/200572562/)
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
Apresentação sobre Bad Smells em Bancos de Dados apresentada dia 14/07/2016 no "FISL17 - Fórum Internacional de Software Livre" na PUC/RS em Porto Alegre/RS.
Keep calm and Database Continuous DeploymentFabrízio Mello
Manter uma aplicação rodando 24x7 é um desafio para qualquer time de desenvolvimento. Mas para isso é preciso se preocupar um pouco mais do que apenas alta disponibilidade, é preciso aplicar boas práticas, padrões e técnicas de refatoração de banco de dados relacionais para evitar os temidos, e até então ?inevitáveis? downtimes.
Seu conceito de alta disponibilidade irá mudar depois desta palestra ;-)
PostgreSQL has kept up the momentum around JSON with version 9.4 featuring JSONB as demand for working with unstructured data continues to grow. In this talk delivered during Postgres Open 2014, Vibhor Kumar, principal systems engineer at EnterpriseDB, offered some scenarios for working with JSON in PostgreSQL and demonstrated performance metrics. This session also gave some instruction on how to use different operations and explored comparisons to BSON.
Atualmente existe muito debate a respeito da habilidade das tecnologias NoSQL atenderem melhor as grandes demandas de processamento de dados em larga escala, do que seus predecessores, os RDBMS (Relational Database Management System).
E realmente as tecnologias NoSQL, assim como computação em nuvem, surgiram da grande necessidade de se prover serviços escaláveis, pois os bancos de dados estão sendo pressionados/direcionados a oferecer escalabilidade horizontal. Estas tecnologias foram desenvolvidas com técnicas de armazenamento de dados (documento, chave/valor, tabular, grafo, etc) afim de suprir esses requisitos.
Nesta apresentação veremos como o PostgreSQL atende vários desses requisitos por oferecer suporte nativo a JSON/JSONB, HStore (chave/valor), XML, oferecendo excelente indexação e otimização no armazenamento, e atendendo aos requisitos ACID, portanto tendo o melhor dos dois mundos. Sem contar o alto poder de extensibilidade que oferece pela possibilidade de escrever novos tipos de dados, mecanismos de indexação, linguagens procedurais, adaptadores de fontes de dados externas (SQL/MED), entre outras diversas características excelentes.
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
Apresentação sobre Bad Smells em Bancos de Dados apresentada dia 20/10/2017 no "SAADS - Semana Acadêmica do Curso de Análise e Desenvolvimento de Sistemas" no IFSul em Bagé/RS.
Apresentado no DevCamp 2014 (dia 16 de Maio de 2014).
Que o PostgreSQL é um banco de dados relacional poderoso e robusto, todo mundo sabe. Nessa palestra veja as funcionalidades, extensões e técnicas usadas para colocar o PostgreSQL na competição com muitos bancos de dados NoSQL. Veja o que quer dizer NewSQL e onde o PostgreSQL se encontra nesse grupo de bancos de dados que não somente possuem as características relacionais e a linguagem SQL, mas também funcionalidades extras (json, chave/valor, In-Memory Columnar Store, entre outros) e poder de escalabilidade horizontal (replicação, balanceamento de carga e até sharding).
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosFabrízio Mello
Apresentação sobre Bad Smells em Bancos de Dados apresentada dia 25/03/2015 na "Quarta-feira do Conhecimento" na PROCERGS (Companhia de Processamento de Dados do Rio Grande do Sul) em Porto Alegre/RS
O PostgreSQL é um projeto de software livre mantido por uma comunidade ampla, formada por pessoas de vários lugares do mundo. A intenção dessa apresentação é exemplificar as diversas formas possíves de colaboração e como você pode iniciar hoje mesmo a fazer parte desta comunidade e fazer com que este projeto nunca acabe. Engajamento é a palavra-chave para o sucesso do PostgreSQL e de qualquer projeto. Envolva-se, engaje-se, o PostgreSQL precisa de você!
This presentation is about the work that I did during the Google Summer of Code 2014 to PostgreSQL. The project is about change an Unlogged Table to Logged and vice-versa. Project wiki page: https://wiki.postgresql.org/wiki/Allow_an_unlogged_table_to_be_changed_to_logged_GSoC_2014
I presented this work at PGCon2015 in Ottawa/Canada (2015-06-19)
This presentation is about the work that I did during the Google Summer of Code 2014 to PostgreSQL. The project is about change an Unlogged Table to Logged and vice-versa. Project wiki page: https://wiki.postgresql.org/wiki/Allow_an_unlogged_table_to_be_changed_to_logged_GSoC_2014
I presented this lecture during a PGDay in Ijui/RS (2016-10-13).
GSoC2014 - Uniritter Presentation May, 2015Fabrízio Mello
This presentation is about the work that I did during the Google Summer of Code 2014 to PostgreSQL. The project is about change an Unlogged Table to Logged and vice-versa. Project wiki page: https://wiki.postgresql.org/wiki/Allow_an_unlogged_table_to_be_changed_to_logged_GSoC_2014
I present this work to Uniritter IT students in Canoas/RS (2015-05-18) and Porto Alegre/RS (FAPA - 2015-05-20).
This presentation is about the work that I did during the Google Summer of Code 2014 to PostgreSQL. The project is about change an Unlogged Table to Logged and vice-versa. Project wiki page: https://wiki.postgresql.org/wiki/Allow_an_unlogged_table_to_be_changed_to_logged_GSoC_2014
I present this work to San Francisco PostgreSQL User Group during a meetup at 10/28/2014 (http://www.meetup.com/postgresql-1/events/200572562/)
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
Apresentação sobre Bad Smells em Bancos de Dados apresentada dia 14/07/2016 no "FISL17 - Fórum Internacional de Software Livre" na PUC/RS em Porto Alegre/RS.
Keep calm and Database Continuous DeploymentFabrízio Mello
Manter uma aplicação rodando 24x7 é um desafio para qualquer time de desenvolvimento. Mas para isso é preciso se preocupar um pouco mais do que apenas alta disponibilidade, é preciso aplicar boas práticas, padrões e técnicas de refatoração de banco de dados relacionais para evitar os temidos, e até então ?inevitáveis? downtimes.
Seu conceito de alta disponibilidade irá mudar depois desta palestra ;-)
PostgreSQL has kept up the momentum around JSON with version 9.4 featuring JSONB as demand for working with unstructured data continues to grow. In this talk delivered during Postgres Open 2014, Vibhor Kumar, principal systems engineer at EnterpriseDB, offered some scenarios for working with JSON in PostgreSQL and demonstrated performance metrics. This session also gave some instruction on how to use different operations and explored comparisons to BSON.
Atualmente existe muito debate a respeito da habilidade das tecnologias NoSQL atenderem melhor as grandes demandas de processamento de dados em larga escala, do que seus predecessores, os RDBMS (Relational Database Management System).
E realmente as tecnologias NoSQL, assim como computação em nuvem, surgiram da grande necessidade de se prover serviços escaláveis, pois os bancos de dados estão sendo pressionados/direcionados a oferecer escalabilidade horizontal. Estas tecnologias foram desenvolvidas com técnicas de armazenamento de dados (documento, chave/valor, tabular, grafo, etc) afim de suprir esses requisitos.
Nesta apresentação veremos como o PostgreSQL atende vários desses requisitos por oferecer suporte nativo a JSON/JSONB, HStore (chave/valor), XML, oferecendo excelente indexação e otimização no armazenamento, e atendendo aos requisitos ACID, portanto tendo o melhor dos dois mundos. Sem contar o alto poder de extensibilidade que oferece pela possibilidade de escrever novos tipos de dados, mecanismos de indexação, linguagens procedurais, adaptadores de fontes de dados externas (SQL/MED), entre outras diversas características excelentes.
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
Apresentação sobre Bad Smells em Bancos de Dados apresentada dia 20/10/2017 no "SAADS - Semana Acadêmica do Curso de Análise e Desenvolvimento de Sistemas" no IFSul em Bagé/RS.
Apresentado no DevCamp 2014 (dia 16 de Maio de 2014).
Que o PostgreSQL é um banco de dados relacional poderoso e robusto, todo mundo sabe. Nessa palestra veja as funcionalidades, extensões e técnicas usadas para colocar o PostgreSQL na competição com muitos bancos de dados NoSQL. Veja o que quer dizer NewSQL e onde o PostgreSQL se encontra nesse grupo de bancos de dados que não somente possuem as características relacionais e a linguagem SQL, mas também funcionalidades extras (json, chave/valor, In-Memory Columnar Store, entre outros) e poder de escalabilidade horizontal (replicação, balanceamento de carga e até sharding).
HTML5 e CSS3 já não é mais futuro. Nesta talk é abordado um overview de novas tecnologias que já estão em desenvolvimento e tornarão realidade nos próximos anos. Dentre elas: DOM Level 4, CSS Selectors Level 4 & 5, Media Query 4, HTML 5.1, Ecmascript 6 & 7+.
Apresentada em: 14 de Dezembro de 2013 no Front in Recife
Local: Faculdade Marista
Palestrantes: Luiz Tiago & Guilherme Farias
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
Desenvolver uma aplicação em PHP com PostgreSQL é uma combinação interessante, pois permite criar apps web escaláveis e de alta performance, bem como serviços, jobs, etc. Mas na maioria das vezes o uso fica limitado a conectar, executar um SQL e desconectar do banco de dados. Porém a extensão PostgreSQL para PHP implementa uma série de recursos interessantes: queries assincronas, notificação assincrona, bulk load, BLOBs, cursores, consultas preparadas, etc. Veremos um pouco desses recursos. Palestra apresentada na PHP Conference 2017 em Osasco/SP
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...Fabrízio Mello
Palestra apresentada durante Semana Acadêmica Integrada Urcamp, Unipampa e IFSul em Bagé/RS falando sobre os novos desafios do DBA em uma cultura DevOps, onde o mesmo precisa sair se sua zona de conforto, interagir mais com outros times (não apenas times técnicos), aprender novas tecnologias, etc.
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...Fabrízio Mello
Palestra apresentada em conjunto com @fernandoike falando sobre os novos desafios do DBA em uma cultura DevOps, onde o mesmo precisa sair se sua zona de conforto, interagir mais com outros times (não apenas times técnicos), aprender novas tecnologias, etc.
Refatoração Banco de Dados (Agileweekend2009)Fabrízio Mello
Apresentar conceitos e práticas de Refactoring de Banco de Dados, que consiste em diversas técnicas e práticas para se aplicar melhorias em banco de dados (legados ou não), fazendo uma passagem pelo Catálogo de Database Refactorings do Sr. Scott W. Ambler e demonstrando exemplos e cenários típicos de aplicação utilizando o PostgreSQL com suas facilidades e limitações na implementação de Refactorings.
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
1. NoSQL + SQL = PostgreSQL
timbira A empresa brasileira de PostgreSQL
TDC2014, Porto Alegre, 2014-10-17
2. Palestrante timbira
• Fabrízio de Royes Mello
• Desenvolvedor PostgreSQL
• Líder do PostgreSQL Brasil
• Pós-Graduando Uniritter (Agile)
• @fabriziomello
• http://fabriziomello.github.io
• Timbira
• Consultor/Mentor/Coach
• A empresa brasileira de PostgreSQL
• Consultoria
• Desenvolvimento
• Suporte 24x7
• Treinamento
Timbira - A empresa brasileira de PostgreSQL 2 / 38
3. Sobre este material timbira
• esta apresentação está disponível em:
http://www.timbira.com.br/material
• esta apresentação está sob licença Creative Commons
Atribuição 3.0 Brasil:
http://www.creativecommons.org/licenses/by/3.0/br
• Embora este material tenha sido elaborado com toda
precaução, os autores não assumem quaisquer
responsabilidades por erros, omissões ou danos resultantes da
utilização das informações aqui contidas.
• Se você encontrar qualquer erro, por favor reporte-o a
contato@timbira.com.br
4. Resumo timbira
1. Prelúdio
2. Teorema CAP
3. SQL
4. NoSQL
5. PostgreSQL
6. Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 1 / 38
5. Como tudo começou na minha vida... timbira
• 1993 - Basic
• 1994 - CLIPPER (e um pouco de C)
• 1996 - C e Pascal
• 1998 - SQL - mudou minha vida ;-)
• 1999 - Teoria Relacional / PostgreSQL 6.5
• 2000 - PostgreSQL 7.0
• ...
• 2008 - Comunidade PostgreSQL Brasil
• ...
• 2012 - Primeiro patch PostgreSQL :-)
• 2013 - Prêmio Comunidade Brasileira Colaboração
• 2014 - 21 patches PostgreSQL (2 patrocinados) :-)
Timbira - A empresa brasileira de PostgreSQL 2 / 38
6. Resumo timbira
1. Prelúdio
2. Teorema CAP
3. SQL
4. NoSQL
5. PostgreSQL
6. Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 3 / 38
7. Teorema CAP timbira
Em Ciências da Computação, o teorema CAP, também conhecido
como Teorema de Brewer, afirma que é impossível para um sistema
de computador distribuído fornecer simultaneamente todas as três
das seguintes garantias:
• Consistência (Consistency): todos nós enxergam os mesmos
dados ao mesmo tempo;
• Disponibilidade (Availability): garantia que todas requisições
recebem uma resposta de falha ou sucesso;
• Tolerância a Particionamento (Partition Tolerance): o
sistema continua operando apesar de perda de mensagem ou
falha em parte dele;
Timbira - A empresa brasileira de PostgreSQL 4 / 38
9. Resumo timbira
1. Prelúdio
2. Teorema CAP
3. SQL
4. NoSQL
5. PostgreSQL
6. Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 6 / 38
10. SQL timbira
• Structured Query Language
• Linguagem Declarativa
• DML, DDL, DCL
• Joins, Anti-Joins, Semi-Joins, ...
Timbira - A empresa brasileira de PostgreSQL 7 / 38
11. Resumo timbira
1. Prelúdio
2. Teorema CAP
3. SQL
4. NoSQL
5. PostgreSQL
6. Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 8 / 38
12. NoSQL timbira
”Um banco de dados NoSQL ou Not Only SQL fornece um
mecanismo para armazenamento e recuperação de dados que são
modelados de forma diferente das relações (tabular) dos bancos de
dados relacionais.
Motivações para essa abordagem incluem: design simples,
escalabilidade horizontal e controle mais fino sobre
disponibilidade.” (Wikipedia)
Timbira - A empresa brasileira de PostgreSQL 9 / 38
13. NoSQL: História timbira
• introduzido em 1998 por Carlos Strozzi como nome de um
banco de dados que não tinha interface SQL
• re-introduzido em 2009 por Eric Evans (Rackspace) quando
Johan Oskarsson (Last.fm) queria organizar um evento sobre
bancos de dados open-source distribuidos
Timbira - A empresa brasileira de PostgreSQL 10 / 38
15. NoSQL: ????? timbira
WTF, PostgreSQL em todas classificações NoSQL????
Timbira - A empresa brasileira de PostgreSQL 12 / 38
16. Resumo timbira
1. Prelúdio
2. Teorema CAP
3. SQL
4. NoSQL
5. PostgreSQL
6. Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 13 / 38
17. PostgreSQL: O que é? timbira
The world’s most advanced open source database.
Timbira - A empresa brasileira de PostgreSQL 14 / 38
18. PostgreSQL: História timbira
• Antes : Oriundo do INGRES
• 1986 : Início Projeto (Berkley)
• 1987 : Primeira versão do Postgres
• 1991 : versão 3 com principais funcionalidades atuais
• 1993 : versão 4.2, última lançada pela Berkley
• 1994 : Andrew Yu e Jolly Chen lançam Postgre95 com
interpretador para linguagem SQL
• 1997 : Nome muda para PostgreSQL, versão 6 lançada
• 2000 : versão 7 lançada com suporte a FK
• 2005 : versão 8 lançada com versão nativa Windows,
Tablespaces, Savepoints, Point-In-Time-Recovery
• 2005 : versão 8.1 Commit Tho Phases, Roles
• 2006 : versão 8.2 (Insert, Update, Delete) Returning, melhora
performance OLTP e BI
Timbira - A empresa brasileira de PostgreSQL 15 / 38
19. PostgreSQL: História (continuação) timbira
• 2008 : versão 8.3 debug PL/PgSQL, Tsearch2 (XML) no core
• 2009 : versão 8.4 Windowing Functions, Common Table
Expressions and Recursive Queries, Parallel Restore,
”pg_upgrade”
• 2010 : versão 9.0 Hot Standby and Streaming Replication
• 2011 : versão 9.1 Synchronous Replicacion, FDW
(SQL/MED), CREATE EXTENSION, Unlogged Tables
• 2012 : versão 9.2 Index-only Scans, Cascading Replication,
JSON, Range Types
• 2013 : versão 9.3 Materialized Views, Lateral Join, writable
FDW, Event Triggers, Background Workers
• 2014 : versão 9.4 JSONB, Logical Decoding, Dynamic
Background Workers
• 2015 : versão 9.5 Parallel Query??? BDR (Bi-directional
Replication)???
Timbira - A empresa brasileira de PostgreSQL 16 / 38
20. PostgreSQL: Key/Value Database timbira
Extensão HSTORE presente desde 8.2 (2006) - pacote
’contrib’
CREATE EXTENSION hstore;
CREATE TABLE users (
email VARCHAR(255) PRIMARY KEY,
data HSTORE
);
INSERT INTO
users (email, data)
VALUES
('fabriziomello@gmail.com','sex=>"M",birthdate=>"1979-08-08"'),
('fabio.telles@gmail.com','sex=>"M",state=>"SP"');
Timbira - A empresa brasileira de PostgreSQL 17 / 38
21. PostgreSQL: Key/Value Database timbira
SELECT * FROM users;
email | data
-------------------------+---------------------------------------
fabriziomello@gmail.com | "sex"=>"M", "birthdate"=>"1979-08-08"
fabio.telles@gmail.com | "sex"=>"M", "state"=>"SP"
(2 rows)
SELECT * FROM users WHERE data->'state' = 'SP';
email | data
------------------------+---------------------------
fabio.telles@gmail.com | "sex"=>"M", "state"=>"SP"
(1 row)
SELECT * FROM users WHERE data->'birthdate' = '1979-08-08';
email | data
-------------------------+---------------------------------------
fabriziomello@gmail.com | "sex"=>"M", "birthdate"=>"1979-08-08"
(1 row)
Timbira - A empresa brasileira de PostgreSQL 18 / 38
22. PostgreSQL: Key/Value Database timbira
Conseguimos transformar uma tupla inteira em HStore ;-)
SELECT hstore(users.*) FROM users;
hstore
----------------------------------------------------------
"data"=>""sex"=>"M", "birthdate"=>"1979-08-08"",
"email"=>"fabriziomello@gmail.com"
"data"=>""sex"=>"M", "state"=>"SP"",
"email"=>"fabio.telles@gmail.com"
(2 rows)
Timbira - A empresa brasileira de PostgreSQL 19 / 38
23. PostgreSQL: Key/Value Database timbira
E ainda um HStore em JSON ;-)
SELECT hstore_to_json(data) FROM users;
hstore_to_json
-----------------------------------------
{"sex": "M", "birthdate": "1979-08-08"}
{"sex": "M", "state": "SP"}
(2 rows)
Timbira - A empresa brasileira de PostgreSQL 20 / 38
24. PostgreSQL: Document Database timbira
Nativo apartir 9.2 (2012) e na 9.4 JSONB (2014)
CREATE TABLE users (
email VARCHAR(255) PRIMARY KEY,
data JSON
);
INSERT INTO
users (email, data)
VALUES
('fabriziomello@gmail.com','{"sex":"M", "birthdate": "1979-08-08"}'),
('fabio.telles@gmail.com','{"sex":"M", "state":"SP"}');
Timbira - A empresa brasileira de PostgreSQL 21 / 38
25. PostgreSQL: Document Database timbira
SELECT * FROM users;
email | data
-------------------------+----------------------------------------
fabriziomello@gmail.com | {"sex":"M", "birthdate": "1979-08-08"}
fabio.telles@gmail.com | {"sex":"M", "state":"SP"}
(2 rows)
SELECT * FROM users WHERE data->>'state' = 'SP';
email | data
------------------------+---------------------------
fabio.telles@gmail.com | {"sex":"M", "state":"SP"}
(1 row)
SELECT * FROM users WHERE data->>'birthdate' = '1979-08-08';
email | data
-------------------------+----------------------------------------
fabriziomello@gmail.com | {"sex":"M", "birthdate": "1979-08-08"}
(1 row)
Timbira - A empresa brasileira de PostgreSQL 22 / 38
26. PostgreSQL: Document Database timbira
Conseguimos transformar uma tupla inteira em
JSON/JSONB ;-)
SELECT row_to_json(users.*) FROM users;
row_to_json
-----------------------------------------------------
{"email":"fabriziomello@gmail.com",
"data":{"sex":"M", "birthdate": "1979-08-08"}}
{"email":"fabio.telles@gmail.com",
"data":{"sex":"M", "state":"SP"}}
(2 rows)
Timbira - A empresa brasileira de PostgreSQL 23 / 38
27. PostgreSQL: Column Database timbira
Através de FDW (Foreign Data Wrappers)
• cassandra_fdw: acessar cassandra dentro do PostgreSQL
(https://github.com/disqus/cassandra_fdw)
• cstore_fdw: columnar store for PostgreSQL
(https://github.com/citusdata/cstore_fdw)
• hadoop_fdw: acessar dados do Hadoop dentro do
PostgreSQL (http://www.bigsql.org/se/hadoopfdw)
Timbira - A empresa brasileira de PostgreSQL 24 / 38
28. PostgreSQL: Graph Database timbira
Até dá, é difícil, e conheço apenas 2 formas possíveis:
• Modelando + CTE
• modelar ”nodes” e ”edges” (nós e arestas)
• utilizar CTE (Common Table Expressions) recursivas (WITH
RECURSIVE ...)
• Utilizando neo4j_fdw
(https://github.com/nuko-yokohama/neo4j_fdw)
• Implementando o SEU FDW... OrientDB??
Timbira - A empresa brasileira de PostgreSQL 25 / 38
29. PostgreSQL: Graph Database timbira
Exemplo sequencia fibonacci
WITH RECURSIVE fibonacci(i, j) AS (
SELECT 0, 1
UNION ALL
SELECT GREATEST(i, j), (i + j) AS i
FROM fibonacci
WHERE j < 13
)
SELECT i FROM fibonacci;
i
---
0112358
(7 rows)
Timbira - A empresa brasileira de PostgreSQL 26 / 38
30. PostgreSQL: E tem mais... timbira
Stable:
• Extensão PL/V8 - funções em javascript e coffescript dentro
do seu banco (http://code.google.com/p/plv8js/wiki/PLV8)
• mongo_fdw - FDW (leitura e escrita - 9.3) para MongoDB
(https://github.com/EnterpriseDB/mongo_fdw)
Prototype:
• MongoLike - operações do mongodb no PostgreSQL
(https://github.com/JerrySievert/mongolike)
• Mongres - background worker que conversa com protocolo do
mongo (https://github.com/umitanuki/mongres)
Timbira - A empresa brasileira de PostgreSQL 27 / 38
31. PostgreSQL: PgREST timbira
PgREST (http://pgre.st)
• armazenamento de documentos JSON
• executando dentro do PostgreSQL
• trabalhando com seus dados relacionais
• capaz de carregar modulos Node.js
• compatível com REST API MongoLab e Firebase
Timbira - A empresa brasileira de PostgreSQL 28 / 38
32. PostgreSQL: PgREST timbira
Exemplo
(http://hychen.wuweig.org/blog/2013/08/11/pgrest-howto/)
$ pgrest --db tcp://postgres@localhost/mydb
Available collections:
users bookmarks webpages news tags inbox
Serving `tcp://postgres@localhost/mydb`
on http://0.0.0.0:3000/collections
$ curl localhost:3000/collections/users
{"paging":{"count":1,"l":30,"sk":0},"entries":[{"provider_name":
"facebook","provider_id":"1231795847","username":"hychen",
"display_name":null,"name":{"familyName":"Chen","givenName":"Hsin",
"middleName":"Yi"},"emails":[{}],"photos":null,"_id":1}]}%
Timbira - A empresa brasileira de PostgreSQL 29 / 38
33. PostgreSQL: Extensibilidade timbira
• Custom Data Types, Operators, Casts, Aggregate, Collation,
Encoding, Operator Class, Language Handlers
• Extensions (http://www.pgxn.org)
• Background Workers
• Hooks
• Foreign Data Wrappers (SQL/MED)
• Full Text Search (text search dictionary, text search parser)
Timbira - A empresa brasileira de PostgreSQL 30 / 38
34. PostgreSQL: Escalabilidade Horizontal timbira
• PL/Proxy - https://wiki.postgresql.org/wiki/PL/Proxy
• PostgresXC - https://wiki.postgresql.org/wiki/Postgres-XC
• BDR (Bidirectional Replication) -
http://wiki.postgresql.org/wiki/BDR_Project
• Custom - i.e. Instagram
(http://media.postgresql.org/sfpug/instagram_sfpug.pdf)
Timbira - A empresa brasileira de PostgreSQL 31 / 38
35. PostgreSQL: Consistência Eventual timbira
• Via UNLOGGED TABLES
• Escrita extremamente rápida
• Não geram registros no WAL (Write Ahead Log)
• Não são crash-safe, seu conteúdo é zerado após um crash
• Seu conteúdo não é replicado via Streaming Replication
Timbira - A empresa brasileira de PostgreSQL 32 / 38
36. PostgreSQL 9.4 (JSONB) vs MongoDB timbira
Timbira - A empresa brasileira de PostgreSQL 33 / 38
37. PostgreSQL 9.4 (JSONB) vs MongoDB timbira
Timbira - A empresa brasileira de PostgreSQL 34 / 38
38. PostgreSQL 9.4 (JSONB) vs MongoDB timbira
• Benchmark desenvolvido e executado pela EnterpriseDB
(www.enterprisedb.com.br)
• Scripts disponíveis em https:
//github.com/EnterpriseDB/pg_nosql_benchmark
• Post com mais detalhes publicado em
http://bit.ly/1t2jG1r
Timbira - A empresa brasileira de PostgreSQL 35 / 38
39. Resumo timbira
1. Prelúdio
2. Teorema CAP
3. SQL
4. NoSQL
5. PostgreSQL
6. Considerações Finais
Timbira - A empresa brasileira de PostgreSQL 36 / 38
40. Considerações Finais timbira
• O PostgreSQL tem o melhor dos 2 mundos, mas ...
• ... pense fora da ”caixinha”
• ... ”nem todo problema é prego para precisar usar martelo”
• ... quem sabe vc precisa é de persistência poliglota
Timbira - A empresa brasileira de PostgreSQL 37 / 38
41. Perguntas timbira
?
Fabrízio de Royes Mello
@fabriziomello
fabrizio@timbira.com.br
fabriziomello@gmail.com
http://www.timbira.com.br
http://slideshare.net/fabriziomello
Timbira - A empresa brasileira de PostgreSQL 38 / 38