SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
NoSQL + SQL = PostgreSQL 
timbira A empresa brasileira de PostgreSQL 
PGDay, Campinas/SP, 2014-09-10
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 / 34
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
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 / 34
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 - 20 patches PostgreSQL (2 patrocinados) :-) 
Timbira - A empresa brasileira de PostgreSQL 2 / 34
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 / 34
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 / 34
Teorema CAP timbira 
Timbira - A empresa brasileira de PostgreSQL 5 / 34
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 / 34
SQL timbira 
• Structured Query Language 
• Linguagem Declarativa 
• DML, DDL, DCL 
• Joins, Anti-Joins, Semi-Joins, ... 
Timbira - A empresa brasileira de PostgreSQL 7 / 34
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 / 34
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 / 34
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 / 34
NoSQL: Classificação timbira 
• Key-Value (PostgreSQL, Dynamo, FoundationDB, 
MemcacheDB, Redis, Riak, ...) 
• Document (PostgreSQL, CouchDB, MongoDB, ...) 
• Column (PostgreSQL, Cassandra, HBase, ...) 
• Graph (PostgreSQL, Allegro, Neo4j, OrientDB, ...) 
Timbira - A empresa brasileira de PostgreSQL 11 / 34
NoSQL: ????? timbira 
WTF, PostgreSQL em todas classificações NoSQL???? 
Timbira - A empresa brasileira de PostgreSQL 12 / 34
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 / 34
PostgreSQL: O que é? timbira 
The world’s most advanced open source database. 
Timbira - A empresa brasileira de PostgreSQL 14 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 34
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 / 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 / 34
Resumo timbira 
1. Prelúdio 
2. Teorema CAP 
3. SQL 
4. NoSQL 
5. PostgreSQL 
6. Considerações Finais 
Timbira - A empresa brasileira de PostgreSQL 32 / 34
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 33 / 34
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 34 / 34

Mais conteúdo relacionado

Mais procurados

Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open sourceMatheus Espanhol
 
Arquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceArquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceFelipe RENZ - MBA TI / Big
 
Hive vs impala vs spark - tuning
Hive vs impala vs spark - tuningHive vs impala vs spark - tuning
Hive vs impala vs spark - tuningTiago Simões
 
BIGDATA: Da teoria à Pratica
BIGDATA: Da teoria à PraticaBIGDATA: Da teoria à Pratica
BIGDATA: Da teoria à PraticaDaniel Checchia
 
TDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ONTDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ONThiago Santiago
 
[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQLKingHost - Hospedagem de sites
 
Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Thiago Santiago
 
Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passosSensedia
 
Bigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoopBigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadooptdc-globalcode
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big DataDeep Tech Brasil
 
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em NuvemAnálise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em NuvemOtávio Carvalho
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 

Mais procurados (20)

Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 
Arquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceArquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open source
 
Pgday campinas 2015
Pgday campinas 2015Pgday campinas 2015
Pgday campinas 2015
 
Hive vs impala vs spark - tuning
Hive vs impala vs spark - tuningHive vs impala vs spark - tuning
Hive vs impala vs spark - tuning
 
pgDay Campinas – 2015
pgDay Campinas – 2015pgDay Campinas – 2015
pgDay Campinas – 2015
 
BIGDATA: Da teoria à Pratica
BIGDATA: Da teoria à PraticaBIGDATA: Da teoria à Pratica
BIGDATA: Da teoria à Pratica
 
Bi ferramentas olap 1
Bi   ferramentas olap 1Bi   ferramentas olap 1
Bi ferramentas olap 1
 
TDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ONTDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ON
 
Oficina Pentaho
Oficina PentahoOficina Pentaho
Oficina Pentaho
 
Treinamento Hadoop - dia2
Treinamento Hadoop - dia2Treinamento Hadoop - dia2
Treinamento Hadoop - dia2
 
[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL
 
Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014
 
Hadoop
HadoopHadoop
Hadoop
 
Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passos
 
Bigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoopBigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoop
 
Seminário Hadoop
Seminário HadoopSeminário Hadoop
Seminário Hadoop
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
 
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em NuvemAnálise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Treinamento hadoop - dia3
Treinamento hadoop - dia3Treinamento hadoop - dia3
Treinamento hadoop - dia3
 

Destaque

Gerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanGerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanCaio Oliveira
 
Jaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónJaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónPGDay Campinas
 
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas
 
PGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas
 
Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Diogo L. V. G. Rubert
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas
 
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...PGDay Campinas
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
PGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textual
PGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textualPGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textual
PGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textualPGDay Campinas
 
PGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ CloudPGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ CloudPGDay Campinas
 
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do ParanáPGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do ParanáPGDay Campinas
 
DevOps & PostgreSQL - Provisionamento Ágil
DevOps & PostgreSQL - Provisionamento ÁgilDevOps & PostgreSQL - Provisionamento Ágil
DevOps & PostgreSQL - Provisionamento Ágilinstructbr
 
PGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingPGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingJairo de Almeida
 
Ux na vida real deedz
Ux na vida real  deedzUx na vida real  deedz
Ux na vida real deedzDextra
 
PostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords SafelyPostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords SafelyJuliano Atanazio
 
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...PGDay Campinas
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Matheus Espanhol
 
PgBouncer: Pool, Segurança e Disaster Recovery | Felipe Pereira
PgBouncer: Pool, Segurança e Disaster Recovery | Felipe PereiraPgBouncer: Pool, Segurança e Disaster Recovery | Felipe Pereira
PgBouncer: Pool, Segurança e Disaster Recovery | Felipe PereiraPGDay Campinas
 
DevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di Ciurcio
DevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di CiurcioDevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di Ciurcio
DevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di CiurcioPGDay Campinas
 

Destaque (19)

Gerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanGerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o Barman
 
Jaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónJaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia Replicación
 
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
 
PGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlib
 
Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
 
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
PGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textual
PGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textualPGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textual
PGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textual
 
PGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ CloudPGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ Cloud
 
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do ParanáPGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
 
DevOps & PostgreSQL - Provisionamento Ágil
DevOps & PostgreSQL - Provisionamento ÁgilDevOps & PostgreSQL - Provisionamento Ágil
DevOps & PostgreSQL - Provisionamento Ágil
 
PGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingPGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRouting
 
Ux na vida real deedz
Ux na vida real  deedzUx na vida real  deedz
Ux na vida real deedz
 
PostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords SafelyPostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords Safely
 
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
 
PgBouncer: Pool, Segurança e Disaster Recovery | Felipe Pereira
PgBouncer: Pool, Segurança e Disaster Recovery | Felipe PereiraPgBouncer: Pool, Segurança e Disaster Recovery | Felipe Pereira
PgBouncer: Pool, Segurança e Disaster Recovery | Felipe Pereira
 
DevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di Ciurcio
DevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di CiurcioDevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di Ciurcio
DevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di Ciurcio
 

Semelhante a NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)

NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)Fabrízio Mello
 
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) Fabrízio Mello
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQLEuler Taveira
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfArleiEvaristo
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
 
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosPROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosFabrízio Mello
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
 
Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Euler Taveira
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
 
Desmistificando Replicação no PostgreSQL
Desmistificando Replicação no PostgreSQLDesmistificando Replicação no PostgreSQL
Desmistificando Replicação no PostgreSQLEuler Taveira
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Fabrízio Mello
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 
Introdução ao Nosql
Introdução ao NosqlIntrodução ao Nosql
Introdução ao NosqlJosé Silva
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceLuis Borges Gouveia
 

Semelhante a NoSQL + SQL = PostgreSQL (PGDay Campinas 2014) (20)

NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
 
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQL
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de Dados
 
KrahoDB
KrahoDBKrahoDB
KrahoDB
 
Pgquarrel
PgquarrelPgquarrel
Pgquarrel
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de Dados
 
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosPROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de Dados
 
Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
 
Desmistificando Replicação no PostgreSQL
Desmistificando Replicação no PostgreSQLDesmistificando Replicação no PostgreSQL
Desmistificando Replicação no PostgreSQL
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010
 
Apostila Oracle
Apostila OracleApostila Oracle
Apostila Oracle
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Introdução ao Nosql
Introdução ao NosqlIntrodução ao Nosql
Introdução ao Nosql
 
FLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no LinuxFLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no Linux
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open source
 

Mais de Fabrízio Mello

PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
 
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...Fabrízio Mello
 
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...Fabrízio Mello
 
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 Fabrízio Mello
 
Como posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLComo posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLFabrízio Mello
 
Keep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentKeep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentFabrízio Mello
 
GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015Fabrízio Mello
 
GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015Fabrízio Mello
 
Bad Smells em Bancos de Dados
Bad Smells em Bancos de DadosBad Smells em Bancos de Dados
Bad Smells em Bancos de DadosFabrízio Mello
 
Tutorial Database Refactoring
Tutorial Database RefactoringTutorial Database Refactoring
Tutorial Database RefactoringFabrízio Mello
 
Sharing Code and Experiences
Sharing Code and ExperiencesSharing Code and Experiences
Sharing Code and ExperiencesFabrízio Mello
 
Software Delivery Like a Boss
Software Delivery Like a BossSoftware Delivery Like a Boss
Software Delivery Like a BossFabrízio Mello
 
Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)Fabrízio Mello
 
EXPLicando o Explain no PostgreSQL
EXPLicando o Explain no PostgreSQLEXPLicando o Explain no PostgreSQL
EXPLicando o Explain no PostgreSQLFabrízio Mello
 
Planejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQLPlanejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQLFabrízio Mello
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Fabrízio Mello
 
Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Fabrízio Mello
 
Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009Fabrízio Mello
 
Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Fabrízio Mello
 

Mais de Fabrízio Mello (20)

PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
 
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
 
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
 
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
 
Como posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLComo posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQL
 
Keep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentKeep calm and Database Continuous Deployment
Keep calm and Database Continuous Deployment
 
GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015
 
GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015
 
Bad Smells em Bancos de Dados
Bad Smells em Bancos de DadosBad Smells em Bancos de Dados
Bad Smells em Bancos de Dados
 
Tutorial Database Refactoring
Tutorial Database RefactoringTutorial Database Refactoring
Tutorial Database Refactoring
 
Sharing Code and Experiences
Sharing Code and ExperiencesSharing Code and Experiences
Sharing Code and Experiences
 
Software Delivery Like a Boss
Software Delivery Like a BossSoftware Delivery Like a Boss
Software Delivery Like a Boss
 
Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)
 
Dojo plpgsql
Dojo plpgsqlDojo plpgsql
Dojo plpgsql
 
EXPLicando o Explain no PostgreSQL
EXPLicando o Explain no PostgreSQLEXPLicando o Explain no PostgreSQL
EXPLicando o Explain no PostgreSQL
 
Planejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQLPlanejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQL
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010
 
Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010
 
Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009
 
Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009
 

NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)

  • 1. NoSQL + SQL = PostgreSQL timbira A empresa brasileira de PostgreSQL PGDay, Campinas/SP, 2014-09-10
  • 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 / 34
  • 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 / 34
  • 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 - 20 patches PostgreSQL (2 patrocinados) :-) Timbira - A empresa brasileira de PostgreSQL 2 / 34
  • 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 / 34
  • 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 / 34
  • 8. Teorema CAP timbira Timbira - A empresa brasileira de PostgreSQL 5 / 34
  • 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 / 34
  • 10. SQL timbira • Structured Query Language • Linguagem Declarativa • DML, DDL, DCL • Joins, Anti-Joins, Semi-Joins, ... Timbira - A empresa brasileira de PostgreSQL 7 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 14. NoSQL: Classificação timbira • Key-Value (PostgreSQL, Dynamo, FoundationDB, MemcacheDB, Redis, Riak, ...) • Document (PostgreSQL, CouchDB, MongoDB, ...) • Column (PostgreSQL, Cassandra, HBase, ...) • Graph (PostgreSQL, Allegro, Neo4j, OrientDB, ...) Timbira - A empresa brasileira de PostgreSQL 11 / 34
  • 15. NoSQL: ????? timbira WTF, PostgreSQL em todas classificações NoSQL???? Timbira - A empresa brasileira de PostgreSQL 12 / 34
  • 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 / 34
  • 17. PostgreSQL: O que é? timbira The world’s most advanced open source database. Timbira - A empresa brasileira de PostgreSQL 14 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 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 / 34
  • 35. Resumo timbira 1. Prelúdio 2. Teorema CAP 3. SQL 4. NoSQL 5. PostgreSQL 6. Considerações Finais Timbira - A empresa brasileira de PostgreSQL 32 / 34
  • 36. 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 33 / 34
  • 37. 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 34 / 34