Você está na página 1de 49

Funcionalidades PostgreSQL 9.

x
Novembro/2011
Agenda
A Dextra e o PostgreSQL
Histrico PostgreSQL
Recursos avanados
Por que utilizar PostgreSQL
Funcionalidades da vers!o 9."
Funcionalidades da vers!o 9.#
Funcionalidade da vers!o 9.$ %devel&
A Dextra
Solu'es de So(t)are
Transferncia de conhecimento
e aprimoramento de competncias
Resoluo de problemas tecnologicamente
desafiadores e implementao de
melhorias de forma prtica
ro!eto e "ustentao de
soft#are comple$os% com
alta criticidade para
os neg&cios
*lientes
A Dextra o(erece servios no +anco de dados PostgreSQL desde #999
,er-ncia de Servios PostgreSQL. (ocada na garantia de qualidade dos
servios o(erecidos
Pro/etos de grande 0orte co1 e10resas e governo
2qui0e es0ecializada de D3As PostgreSQL
Dextra e PostgreSQL
*onsultoria
Resolu!o e(etiva de 0ro+le1as desa(iadores e co10lexos
4s servios o(erecidos englo+a15
'nstalao e configurao de servidores ostgre"() para aplica*es
cr+ticas
,igrao de sistemas de outros bancos de dados -.racle% "() "erver%
'nformi$% ,/"() entre outros0 para ostgre"()
,odelagem de banco de dados
1dministrao preventiva
"olu*es de monitoramento
1!ustes de performance
Replicao de bancos de dados
"olu*es de alta disponibilidade e desempenho
2esenvolvimento de aplica*es com ostgre"()
Su0orte 67cnico
Segurana na i10lanta!o e ad1inistra!o de a1+ientes cr8ticos
,est!o voltada 9 garantia da qualidade dos servios
1cordos de N+vel de "ervio -")10
1umento do n+vel de satisfao dos usurios
,erencia1ento de a1+ientes PostgreSQL
:onitora1ento e(iciente do +anco de dados
Ad1inistra!o 0reventiva
6rans(er-ncia de con;eci1ento
:odelo (lex8vel5 $< x = ou > x ?
*asos de Sucesso @ *onsultoria e Su0orte
*a0acita!o
6rans(er-ncia de con;eci1ento e a0ri1ora1ento de co10et-ncias
6reina1entos co1 0ro(issionais que vivencia1 o diaAaAdia do
desenvolvi1ento de so(t)are e das rotinas do +anco de dados PostgreSQL
6ur1as a+ertas ou BnA*o10anC
*usto1iza!o de conteDdos
:ais de #? 1il alunos treinados
ostgre"() 3ssencial
)inguagem rocedural )/pg"()
1dministrao -2410
erformance Tuning
ostgre"() 1lta 2isponibilidade
ost5'"
ostgre"() para 4' e 2ata#arehouse
*asos de Sucesso @ 6reina1ento
PostgreSQL
Siste1a ,erenciador de 3anco de Dados %S,3D& o0ensource
3anco de dados 0adr!o 0ara a0lica'es do governo +rasileiro
Pro/eto dirigido 0ela co1unidade de so(t)are livre
2esenvolvedores ao redor do mundo
6ontrole de c&digo pelo 525 -ostgre"() 5lobal 2evelopment 5roup0
No h empresas proprietrias do c&digo
*o1unidade (or1ada 0or desenvolvedores e usuErios
2esenvolvedores fulltime% colaboradores de empresas 7ue investem no
ostgre"()
Li+erdade total 0ara o negcio
)icena 4"2
"em restri*es para uso% alterao e venda
PostgreSQL
~90%
PostgreSQL
Bancos de dados
proprietrios
PostgreSQL A Histria
#9>FA#99?5 3erGeleC
#99FA#99>5 3ugs. +ugs. +ugs. ...
#999A$""#5 Padr!o SQL
$""$A$""?5 Su0orte nativo 0ara Hindo)s
$""?A$"##5 Funcionalidades Avanadas
Derivados do PostgreSQL
Ro+ustez
3scalvel para altas necessidades de processamento
3stabilidade
*on(ia+ilidade
,ecanismo de log de transao avanado
2ados efetivados no so perdidos ap&s catstrofes
Segurana
N+veis de configurao -"ervidor% banco% usurio e sesso0
"")
6ontrole de acesso refinado
'ntegrao com )21% 1ctive 2irector/% 1, entre outros
Rpida divulgao e correo de bugs de segurana
Por que utilizar PostgreSQL
Alto dese10en;o
8elocidade em sistemas com grande concorrncia
articionamento de tabelas
3scalabilidade hori9ontal com )/ro$/
:erramentas de pool de cone$*es e balanceamento de carga -gbouncer e
gpool0
Alta dis0oni+ilidade
1r7uivamento de logs de transao
4ac;up 7uente e frio
Restaurao 'TR -oint in Time Recover/0
Replicao por flu$o -"treaming Replication0
Replicao nativa ,aster<"lave s+ncrona e ass+ncrona
Por que utilizar PostgreSQL
*onsist-ncia
,ecanismo ,866 -,ultiversion 6oncurrenc/ 6ontrol0
Transa*es 16'2 -1tomicidade% 6onsistncia% 'solamento e 2urabilidade0
Ra0idez
2iversos algoritmos de !un*es e +ndices
Recursos avanados para manuteno em ambientes concorrentes
ar=metros de tuning para adaptao aos diversos ambientes
:odelo 2xtens8vel
ossibilita o desenvolvimento de fun*es em 6 e novas linguagens procedurais
2esenvolvimento de e$tens*es como ost5'" e 2blin;
lugins :2> -:oreign 2ata >rapper0
2iversas ferramentas opensource dispon+veis
Por que utilizar PostgreSQL
*o10ati+ilidade
1companha o padro 1N"' "()% atualmente "()?200@
"uporte a A,)
3$press*es regulares
Iersatilidade
2iversidade de linguagens procedurais -)/pg"()% )/erl% )/Bava% )/C D0
2iversidade de drivers de acesso -B246% .246% C% ENet% erl EEE0
Facilidade de ad1inistra!o
1r7uitetura en$uta
:acilidade de configurao e manuteno
:erramentas de monitoramento -Nagios% Fabbi$% ,unin% 6acti D0
:erramentas opensource e proprietrias de administrao
Por que utilizar PostgreSQL
Redu!o de 6*4 %6otal *ost o( 4)ners;i0&
'nvestir no conhecimento
'nvestir em hard#are
Por que utilizar PostgreSQL
3uscas textuais co1 Full 6ext Searc; nativo
*onsultas recursivas
Hindo) (unctions 0ara (acilitar o desenvolvi1ento de relatrios
co10lexos
ArraCs
Herana entre ta+elas
Su0orte a 3L43s %3inarC Large 4+/ects&
6i0os de dados custo1izados
*o10ress!o trans0arente de dados co1 ti0o texto
2xtens!o 0ara dados es0aciais
COMMIT e1 $ (ases 0ara re0lica!o :asterA:aster
Recursos avanados
4L6P %4nline 6ransaction Processing&
4LAP %4nline AnalCtical Processing&
He+
,BS %,eogra0;ical Bn(or1ation SCste1s&
2Aco11erce
6eleco1unica'es
Redes sociais
:onitora1ento de dis0ositivos eletrJnicos
Siste1as de +usca
...
Adequado 0ara diversos a1+ientes
$"#"KSete1+ro
8erso GE0 lanada
Release intermediria atual GE0EH
$"##KSete1+ro
8erso GE1 lanada
21 17dia $"" 1el;orias a cada nova vers!o
Releases inter1ediErias 0ara corre'es de +ugs
? vers'es e1 ? anos
Releases PostgreSQL
PostgreSQL
9."
6rans(er-ncia de (rag1entos de logs de transa!o.
Servidor slave e1 1odo read-only
Failover atrav7s da cria!o de arquivo gatil;o
PostgreSQL 9."5 Hot stand+C
Servidor standby dis0on8vel e1 1odo read-only5
UPDATE actor SET last_update = now();
ERROR: cannot execute UPDATE in a readonl! transaction
Restaura!o ocorre 0aralela1ente as consultas
21 caso de failover5
6one$*es ativas so mantidas e autori9adas a alterar a base de dados sem a
necessidade de recone$o
PostgreSQL 9."5 Hot stand+C
PostgreSQL 9."5 Strea1ing Re0lication
*ria!o de u1 canal de co1unica!o via 6*PKBP
*o1unica!o constante entre os servidores 1aster e slaves. agilizando a
trans(er-ncia de (rag1entos dos logs de transa!o
*ria!o de 0rocessos walsender e walreceiver. iniciados nos servidores
1aster e slaves res0ectiva1ente
FileA+ased Re0lication RecordA+ased Re0lication
*a0acidade de executar (unc'es se1 a necessidade de criEAlas
6odas as linguagens 0rocedurais 0ode1 ser utilizadas e1 lin;a de
co1ando
Sintaxe5
DO " #A$%UA%E no&e_lin'ua'e& ( c)di'o
Facilita tare(as de ad1inistra!o
L!o ;E necessidade de CREATEKDROP FUNCTION
A estrutura das (un'es s!o 1antidas5
" DE*#ARE (
+E%,$
E$D
PostgreSQL 9."5 3locos anJni1os e1 PLK0gSQL
-anco=. DO //
DE*#ARE
st&t text;
+E%,$
0OR st&t ,$ SE#E*T 1A#TER TA+#E 1 22ta-lena&e22 1 ADD
*O#U3$
ulti&a_&odi4icacao ti&esta&p;1 0RO3 p'_ta-les 56ERE
sc7e&ana&e = 1dextra1
A$D ta-lena&e $OT #,8E 1pa!&ent_91
#OOP
E:E*UTE st&t;
E$D #OOP;
E$D
// #A$%UA%E plp's;l;
PostgreSQL 9."5 3locos anJni1os e1 PLK0gSQL
6riggers dis0aradas co1 eventos de UPDATE e1 colunas
2vita condi'es lgicas e co10ara!o de valores no cdigo da (un!o
L!o dis0ara e1 caso de atualiza!o da coluna 0ara o valor 0adr!o
*REATE TR,%%ER t'_lo'_ati<o +E0ORE UPDATE OF activebool O$ custo&er 0OR
EA*6 RO5 E:E*UTE PRO*EDURE lo'_ati<o();
UPDATE custo&er SET acti<e-ool = 4alse 56ERE custo&er_id = =>>;
SE#E*T ? 0RO3 lo'_ati<o 56ERE custo&er_id = =>>;
id 2 custo&er_id 2 4irst_na&e 2 acti<e-ool 2 last_&odi4ied
@AA2 =>> 2 AUST,$ 2 4 2 BACAADBD
PostgreSQL 9."5 6riggers 0or colunas
*o10ara!o que de(ine se a trigger sera executada
Reduz o nD1ero de execu'es das (un'es de trigger
2li1ina estruturas de condi!o do cdigo da (un!o
*REATE TR,%%ER t'_lo'_ati<o +E0ORE UPDATE O0 acti<e-ool O$ custo&er 0OR
EA*6 RO5 WHEN (OLD.activebool IS DISTINCT FROM NEW.activebool) E:E*UTE
PRO*EDURE lo'_ati<o();
UPDATE custo&er SET acti<e-ool = true 56ERE custo&er_id = =>>;
UPDATE custo&er SET acti<e-ool = true 56ERE custo&er_id = =>>;
SE#E*T ? 0RO3 lo'_ati<o 56ERE custo&er_id = =>>;
id 2 custo&er_id 2 4irst_na&e 2 acti<e-ool 2 last_&odi4ied
@A@2 =>> 2 AUST,$ 2 t 2 BACAADBD
PostgreSQL 9."5 6riggers condicionais
Facilidade 0ara altera'es de 0rivil7gios e1 1assa
6oncedendo permisso de consulta para todas as tabelas do schema dextra ao
usurio foobar?
%RA$T SE#E*T O$ ALL TABLES IN SCHEMA dextra TO 4oo-ar;
De(ini!o de 0rivil7gios 0adr'es 0ara (uturos o+/eto
2xe10lo5
6oncedendo permisso de consulta para todas as futuras tabelas do schema dextra
ao usurio foobar?
A#TER DE0AU#T PR,E,#E%ES 0OR RO#E dextra ,$ S*6E3A dextra %RA$T SE#E*T
O$ TA+#ES TO 4oo-ar;
PostgreSQL 9."5 Privil7gios de usuErios
PostgreSQL 9."5 Lovo ACUUM FULL
4 0rocesso de ACUUM FULL 7 1ais rE0ido. 0ois du0lica a ta+ela.
eli1inando a original e recriando os 8ndices
No I mais necessria a e$ecuo do RE,$DE: ap&s o EA*UU3 0U##
,ais espao em disco
ACUUM FULL >.<
pa'ila=F EA*UU3 0U## actor;
Ti&e: !"#$"%.%## &'
pa'ila=F RE,$DE: TA+#E actor;
Ti&e: (")$#.!## &'
ACUUM FULL 9."
pa'ila=F EA*UU3 0U## actor;
Ti&e: *(!*).+#* &'
A (erra1enta pg_migrator esta 0resente no contri+ co1 o no1e de
pg_upgrade
ermite a migrao atravIs dos datafiles% sem a necessidade dump/restore
Torna o processo de migrao muito rpido% redu9indo a indisponibilidade
do sistema
export O#DDATAD,R=GdadosGpost'res;l>HAG
export $E5DATAD,R=GdadosGpost'res;l>HCG
export O#D+,$D,R=GusrGlocalGp's;lG-inG
export $E5+,$D,R=GusrGlocalG-inG
p'_up'rade . up'radeHlo'
PostgreSQL 9."5 Ferra1enta de 1igra!o
Restri'es UNI,UE 0ostergEveis
E-PLAIN
8isuali9ao das informa*es de uso de buffer pela consulta
2efinio de outros formatos para o resultado
Su0orte co10leto 0ara Hindo)s F<+its
Su0orte 0ara autentica!o co1 RADBMS %Remote Authentication Dial In
User Service&
*ontri+ pg_archivecleanup 0ara li10eza de arquivos de log de transa!o
PostgreSQL 9."5 4utras 1el;orias
PostgreSQL
9.#
PostgreSQL 9.#5 Re0lica!o s8ncrona
2ste recurso 0er1ite a atualiza!o dos servidores slaves de (or1a
sincronizada co1 o servidor 1aster
"imples configurao
ode ser controlado por sesso
6onsistncia de dados entre servidor master e slaves
ossibilidade de definio de prioridades para replicao dos dados
SET s!nc7ronous_co&&it = on;
Feedback
Iie) pg_stat_replication
SE#E*T application_na&e AS
appna&eIstateIsent_locationIwrite_locationI4lus7_locationI
repla!_locationIs!nc_priorit!Is!nc_state 0RO3 p'_stat_replication;
appna&e2state2sent_location2write_location24lus7_location2repla!_location2s!nc_state
JJJJJJ
sla<eAB 2 strea&in' 2 AGK>AAAA0A 2 AGK>AAAA0A 2 AGK>AAAA0A 2 AGK>AAAA0A 2 as!nc
sla<eAC 2 strea&in' 2 AGK>AAAA0A 2 AGK>AAAA0A 2 AGK>AAAA0A 2 AGK>AAAA0A 2 s!nc
Iie) pg_stat_database_conflicts
SE#E*T ? 0RO3 p'_stat_data-ase_con4licts;
Iie) pg_stat_database. ca10o conflicts
SE#E*T datna&eI con4licts 0RO3 p'_stat_data-ase;
PostgreSQL 9.#5 :onitora1ento da re0lica!o
Funcionalidade que 0ossi+ilita o desenvolvi1ento de 0lugins 0ara acessar
qualquer (onte de dados a 0artir do PostgreSQL
adro "()/,32
ossibilita a integrao de sistemas
'mportao de dados facilitada para data#arehouses
*REATE E:TE$S,O$ &!s;l_4dw;
*REATE SEREER &.'/l0'v1 0ORE,%$ DATA 5RAPPER &!s;l_4dw
OPT,O$S (address 1CBLHAHAHC1I port 1KKA@1);
*REATE USER 3APP,$% 0OR PU+#,* SEREER &!s;l_s<r
OPT,O$S (userna&e 1&!s;l_user1I password 1sen7a1);
*REATE 0ORE,%$ TA+#E c2'to&e10&.'/l (
custo&er_id S3A##,$TI
store_id +,%,$TI
4irst_na&e EAR*6AR(M=)I
last_na&e EAR*6AR(M=)I
SERER &.'/l0'v1 OPTIONS (table 3'a4ila.c2'to&e13)5
SE#E*T ? 0RO3 custo&er NO,$ c2'to&e10&.'/l US,$% (custo&er_id);
PostgreSQL 9.#5 Fontes de dados externas
Funcionalidade que 0ossi+ilita a altera!o de ta+elas se1 a grava!o nos
logs de transa!o
,aior performance para opera*es de escrita na tabela
No so recuperadas ap&s um crash e no so replicadas
*REATE TA+#E 4oo(id int);
*REATE U$#O%%ED TA+#E -ar(id int);
100E000 registros com ,$SERT
ti&e ps;l 4 inserts_4ooHs;l
"&+6."))'
ti&e ps;l 4 inserts_-arHs;l
6&"$.$%"'
100E000 registros com *OPO
ti&e ps;l 4 inserts_4ooHs;l
6&!.!6+'
ti&e ps;l 4 inserts_-arHs;l
6&6.#%('
PostgreSQL 9.#5 6a+elas n!o logadas
Facilita o gerencia1ento de (erra1entas do diretrio contri+ do PostgreSQL
6omando *REATE E:TE$S,O$ e A#TER E:TE$S,O$
'nstalao
cd GusrGlocalGsrcGpost'res;l>HCHCGcontri-Gd-linP
&aPe
&aPe install
6riao da e$tenso
7o't81e'9: CREATE E-TENSION ;bli<4 5
*REATE E:TE$S,O$
8isuali9ao das e$tens*es instaladas
7o't81e'9: SELECT e=t<a&e>e=tve1'io< FROM 780e=te<'io< 5
extna&e 2 ext<ersion
J
plp's;l 2 CHA
d-linP 2 CHA
PostgreSQL 9.#5 2xtens'es
2xtens!o 0ara novas classes de o0eradores
1ntes
*REATE ,$DE: 4oo-ar_-tree_idx O$ 4oo-ar(no&e);
E:P#A,$ SE#E*T count(?) 0RO3 4oo-ar 56ERE no&e #,8E 193AT91;
QUERO P#A$

A''re'ate (cost=CLMCHAKHHCLMCHAM rows=C widt7=A)


. Se/ Sca< o< ?ooba1 (cost=AHAAHHCLMCHAA rows=CA widt7=A)
0ilter: (no&e RR 193AT91::text)
2epois
*REATE E:TE$S,O$ p'_tr'& ;
*REATE ,$DE: 4oo-ar_'in_idx O$ 4oo-ar US,$% 'in (no&e 'in_tr'&_ops);
E:P#A,$ SE#E*T count(?) 0RO3 4oo-ar 56ERE no&e #,8E 193AT91;
QUERO P#A$

A''re'ate (cost==CH>=HH=CH>@ rows=C widt7=A)
. +it&ap 6eap Scan on 4oo-ar (cost=C@HADHH=CH>B rows=CA widt7=A)
Rec7ecP *ond: (no&e RR 193AT91::text)
. Bit&a7 I<;e= Sca< o< ?ooba108i<0i;= (cost=AHAAHHC@HAL
rows=CA widt7=A)
,ndex *ond: (no&e RR 193AT91::text)
PostgreSQL 9.#5 4ti1iza!o de +usca %LBN2KBLBN2&
6riggers e1 vis'es
MtilitErio 0ara executar +acGu0 online %pg_basebacup&
De(ini!o de collation 0or coluna
B10le1enta!o do verdadeiro n8vel de isola1ento serializa+le
B10le1enta!o do algorit1o nearest-neighbor 0ara 8ndices ,iS6
Processo de valida!o 0ara c;aves estrangeiras
Recursividade 0ara o0era'es de escrita
S2PostgreSQL
PostgreSQL 9.#5 4utras 1el;orias
PostgreSQL
9.$ %devel&
PostgreSQL 9.$5 Re0lica!o e1 cascata
Possi+ilita que servidores slaves se/a1 re0licados a 0artir de outro slave
Reduo do impacto de vrios processos wal sender em produo
4 +acGu0 +ase online 0oderE ser executado a 0artir de servidores read-only
PostgreSQL 9.$5 Dados direta1ente de 8ndices
*onsulta 0oderE varrer a0enas o 8ndice
No ser necessrio buscar dados na tabela
lanos de e$ecu*es melhores para consultas 7ue retornam as colunas
dispon+veis em algum +ndice
*REATE ,$DE: 4oo-ar_idx O$ 4oo-ar(idIno&e);
E:P#A,$ SE#E*T idI no&e 0RO3 4oo-ar 56ERE id = CA;
QUERO P#A$

I<;e= O<l. Sca< 2'i<8 ?ooba10i;= o< ?ooba1 (cost=AHAAHHDHBD rows=C


widt7=CC)
,ndex *ond: (id = CA)
Su0orte a ti0os de dados te10orais %range types&
:el;oria de 0er(or1ance 0ara COUNT(@)
Processo de valida!o 0ara restri'es CHECA
Altera!o de ti0os e1 coluna indexada se1 necessidade de REINDE-
:el;oria no trata1ento de erros e1 PLK0gSQL
PostgreSQL 9.$5 4utras 1el;orias
*onclus!o
Funcionalidades i10ortantes 0ara a1+ientes de 1iss!o cr8tica
2volu!o constante
*o1unidade ativa
4 +anco de dados o0ensource 1ais avanado do 1undo
Fale conosco
:at;eus Ricardo 2s0an;ol
matheusEespanholJde$traEcomEbr
))).dextra.co1.+r
"o aulo 11 K0L1EMM11
6ampinas 1G K2LNENM22
Treinamento ###Efaceboo;EcomEbr/de$tratreinamentos
"istemas ###Efaceboo;EcomEbr/de$trasis
Treinamento Jde$tracursos
"istemas Jde$trasistemas

Você também pode gostar