PostgreSQL: O Grande Elefante dos Dados

633 visualizações

Publicada em

Uma breve apresentação sobre este fantástico Sistema Gerenciador de Banco de Dados Objeto-Relacional.
Razões para adotá-lo, curiosidades e características.

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
633
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
49
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

PostgreSQL: O Grande Elefante dos Dados

  1. 1. PostgreSQL O Grande Elefante dos Dados Juliano Atanazio
  2. 2. 2/41 O que é É um sistema gerenciador de banco de dados objeto-relacional originalmente desenvolvido na Universidade da Califórnia no Departamento de Ciências da Computação em Berkeley. Seu nome vem do Ingres, que seu código-fonte originalmente era descendente. Por isso do nome Postgres. Seu código-fonte é aberto. O PostgreSQL é Software Livre :)
  3. 3. 3/41 Links Site oficial: www.postgresql.org.br Planet PostgreSQL: http://planet.postgresql.org/ Wiki: https://wiki.postgresql.org Site da comunidade brasileira: www.postgresql.org.br Planet PostgreSQL BR: http://planeta.postgresql.org.br/
  4. 4. 4/41 Como se Fala e Como se Escreve Uma dúvida comum ao PostgreSQL é seu nome. As formas corretas são as duas seguintes: Postgres, pronuncia-se “postígres” (sim, o “s” é pronunciado!); PostgreSQL, pronuncia-se “postgres és quiu el”. Nunca, jamais, em hipótese nenhuma escrever “postgree” ou dizer “postgrí”. Infelizmente ainda há fontes na Internet com o nome do Postgres escrito erroneamente, o que leva muita gente também a falar errado.
  5. 5. 5/41 Licença A licença utilizada é uma licença própria similar à licença BSD (herança de Berkeley). Essa licença é mais flexível do que a GPL, permitindo inclusive que qualquer um possa pegar o código-fonte do PostgreSQL, alterá-lo, fechá-lo para fins comerciais. Um grande exemplo disso é o derivado do PostgreSQL mais famoso, o Postgres Plus, da EnterpriseDB, empresa que é uma das grandes contribuidoras para o desenvolvimento do projeto PostgreSQL original.
  6. 6. 6/41 Licença Seu produto além das funcionalidades originais do PostgreSQL oferece algumas outras exclusivas [1]. [1] http://www.enterprisedb.com/products-services-training/products/postgres-plus-advanced-server?quicktabs_advanceservertab=3#quicktabs-advanceservertab
  7. 7. 7/41 Suporte Comunidade: Brasil: https://listas.postgresql.org.br/cgi-bin/mailman/listinfo Internacional: https://lists.postgresql.org Comercial: Há várias empresas ao redor do mundo (inclusive no Brasil) que prestam consultoria em PostgreSQL.
  8. 8. 8/41 Suporte Documentação oficial: http://www.postgresql.org/docs/
  9. 9. 9/41 Liberdade O PostgreSQL é Software Livre! :) Você pode baixar, usar e / ou alterar o código-fonte como bem entender. Não precisa se preocupar com quantos núcleos tem seu servidor. Totalmente livre! Livre! O PostgreSQL é um só! Não existem versões “Light”, “Standard”, “Advanced Server” ou mesmo “Express”… Uma única versão e sem cortes de funcionalidades. Todo poder do grande elefante dos dados à disposição do usuário!
  10. 10. 10/41 Imune a Over-Deployment Over-deployment é que alguns fornecedores de banco de dados proprietário consideram como problema de inconformidade de sua licença. Com PostgreSQL, ninguém pode processá-lo por quebra de acordos de licenciamento, devido a não haver nenhum custo de licenciamento associado para o software.
  11. 11. 11/41 Imune a Over-Deployment Algumas vantagens adicionais: ● Modelos de negócios mais lucrativos com implantações em larga escala; ● Sem possibilidade de ser auditado por inconformidade de licença em qualquer fase; ● Flexibilidade para conceituar pesquisar e tentar implantações sem necessidade de incluir custos adicionais de licença.
  12. 12. 12/41 Redução Significativa de Custos de Pessoal O PostgreSQL foi projetado e criado para ter requisitos muito mais baixos de manutenção e ajustes do que os principais bancos de dados proprietários, mas ainda manter todas as características, estabilidade e desempenho.
  13. 13. 13/41 Confiabilidade e Estabilidade Lendárias Diferente de muitos sistemas gerenciadores de banco de dados proprietários, é muito comum organizações reportarem que o PostgreSQL nunca falhou em anos de operação. Nem uma única vez, ele simplesmente funciona!
  14. 14. 14/41 Extensibilidade e PGXN É possível desenvolver extensões para o PostgreSQL de forma a ampliar o leque de funcionalidades oferecidas. A PGXN [1], “the PostgreSQL Extension Network”, é um sistema de distribuição central para bibliotecas open-source de extensão para o PostgresQL. [1] http://pgxn.org/
  15. 15. 15/41 Projetos e Aplicativos para PostgreSQL: pgFoundry De forma similar ao PGXN, existe o pgFoundry [1]. É um site que reúne vários projetos relativos ao PostgreSQL. [1] http://pgfoundry.org
  16. 16. 16/41 Aplicativos Clientes psql: padrão, modo texto; pgAdmin3 [1]: aplicativo gráfico; phpPgAdmin [2]: interface web; EMS SQL Management Studio para PostgreSQL [3]: gráfico, proprietário e disponível apenas para Windows. [1] http://pgadmin.org/ [2] http://phppgadmin.sourceforge.net/ [3] http://www.sqlmanager.com.br/html/studio_postgresql.html
  17. 17. 17/41 Funções e Procedures Diferente de outros SGBDs, no PostgreSQL não há uma separação entre Functions e Procedures. É tudo Function! Triggers: Diferente de outros SGBDs a função que o trigger chama é definida externa a ele. E depois, na definição do trigger é feita a chamada a essa função. Isso permite reaproveitamento de código de forma que uma mesma função possa atender a mais de um trigger. A linguagem procedural padrão do PostgreSQL é a PL/pgSQL (muito similar à PL/SQL do Oracle, porém mais amigável).
  18. 18. 18/41 O Elefante é Poliglota Além da linguagem procedural padrão, PL/pgSQL, temos também opções nativas para fazermos funções em Python 2 e Python 3 (PL/Python2U e PL/Python3U) ou em Perl (PL/Perl). Devido à característica de extensibilidade do PostgreSQL podemos também programar funções em Java e PHP (PL/Java e PL/PHP, respectivamente) e outras linguagens de programação que podemos instalar em forma de extensão.
  19. 19. 19/41 Drivers para Linguagens Python: psycopg2 [1] Java: JDBC [2] Perl: DBI:Pg [3] C: libpq [4] PHP: PDO [5] C#: Npgsql [6] C++: libpqxx [7] [1] http://initd.org/psycopg/ [2] https://jdbc.postgresql.org/ [3] https://metacpan.org/pod/DBD::Pg [4] http://www.postgresql.org/docs/current/static/libpq.html [5] http://php.net/manual/pt_BR/ref.pdo-pgsql.connection.php [6] http://www.npgsql.org/ [7] http://pqxx.org/development/libpqxx/
  20. 20. 20/41 O PostgreSQL não é somente relacional. Ele agrega também funcionalidades NoSQL: ● extensão hstore [1] que implementa funcionalidades de SGBDs NoSQL do tipo chave- valor (como HBase, Redis, por exemplo). ● tipo de dado jsonb [2] o que implementa funcionalidades NoSQL do tipo documento (como MongoDB por exemplo). Continua → Multi Paradigma – Relacional e NoSQL
  21. 21. 21/41 Obs.: Há comparativos pela Internet fazendo comparativos interessantes PostgreSQL vs MongoDB, dentre eles tem um estudo muito interessante feito pela EnterpriseDB [3]. [1] http://www.postgresql.org/docs/current/static/hstore.html [2] http://www.postgresql.org/docs/current/static/datatype-json.html [3] http://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-o utperforms-mongodb-and-ushers-new-developer-reality Multi Paradigma – Relacional e NoSQL
  22. 22. 22/41 Common Table Expressions - Expressões Comuns de Tabela Com a cláusula WITH fornece uma forma de escrever comandos auxiliares para uso em uma consulta muito grande. Esses comandos também são conhecidos como Common Table Expressions ou CTEs, que podemos pensar como se fosse uma definição de tabelas temporárias que existem para apenas uma consulta. Continua → Além do SQL Básico
  23. 23. 23/41 Cada comando auxiliar em uma cláusula WITH pode ser um SELECT, INSERT, UPDATE ou DELETE e a própria cláusula WITH é anexada ao comando principal que pode também se um SELECT, INSERT, UPDATE, ou DELETE. http://www.postgresql.org/docs/current/static/queries-with.html Além do SQL Básico
  24. 24. 24/41 Window Functions - Funções de Janela Permitem executar cálculos através de conjuntos de linhas que são relacionadas à linha de consulta atual. Similar ao tipo de cálculo que pode ser feito com funções de agregação, mas o uso de funções de janela não faz as linhas serem agrupadas em uma única linha de saída, as linhas mantêm suas identidades separadas. Continua → Além do SQL Básico
  25. 25. 25/41 Internamente, uma função de janela é capaz de acessar mais do que apenas linha atual de um resultado de uma consulta. Funções de janela devem ser invocadas usando sua própria sintaxe em que a cláusula OVER é necessária. http://www.postgresql.org/docs/current/static/functions-window.htm l Além do SQL Básico
  26. 26. 26/41 Full Text Search - Busca Textual Capacida identificar uma linguagem em documentos que satisfaçam critérios de buscas de uma consulta e opcionalmente ordená-las por relevância. Tem suporte linguístico e baseado no idioma que o usuário definir. http://www.postgresql.org/docs/current/static/textsearch.html Além do SQL Básico
  27. 27. 27/41 Multi Plataforma ● Linux ● BSDs ● Solaris ● HPUX ● Irix ● AIX ● Unix ● MacOS ● Windows etc...
  28. 28. 28/41 Foreign Data-Wrappers: Comunicação com Outros Bancos... Podemos acessar dados vindos de outros servidores PostgreSQL ou até mesmo outros SGBDs, além de outras coisas mais. Graças ao recurso chamado Foreign Data-Wrapper [1]. [1] https://wiki.postgresql.org/wiki/Foreign_data_wrappers
  29. 29. 29/41 Limites do PostgreSQL Tamanho máximo de um banco de dados: Ilimitado Tamanho máximo de uma tabela: 32 TB Tamanho máximo de uma linha (registro): 1.6 TB Tamanho máximo de um campo (coluna): 1 GB Número máximo de linhas por tabela: Ilimitado Número máximo de colunas por tabela: 250 - 1600 dependendo do tipo de coluna Número máximo de índices por tabela: Ilimitado
  30. 30. 30/41 Tipos de Dados ● Numéricos ● De Tempo ● De Texto ● Nulo ● Monetário . . . A variedade é muito grande, cujas categorias também têm: binários, enumerados, geométricos, de rede, busca textual, UUID, XML, JSON, arrays, compostos, de faixa e etc. O usuário pode também criar um tipo de dados personalizado.
  31. 31. 31/41 WAL - Write Ahead Log Mecanismo que assegura a integridade dos dados. Qualquer escrita em banco antes de ser gravada nos arquivos de dados é gravada nos logs de transação (xlogs). Isso permite que se houver uma falha (crash) do servidor, ao reinicializá-lo, o servidor lerá primeiro os logs de transação e então aplicará aos arquivos de dados (também conhecidos como arquivos físicos) todas modificações não feitas ainda. O log existe primariamente para propósitos de segurança contra falhas: se o sistema falha (crash), a base de dados pode ser restaurada consistentemente pela aplicação das entradas de log feitas desde o último checkpoint*. * chepoint é quando os dados que estão em memória e nos logs de transação são efetivados nos arquivos físicos.
  32. 32. 32/41 PITR - Point In Time Recovery: A Máquina do Tempo Pode-se estipular um ponto anterior no tempo e fazer o servidor voltar seus dados como estavam nesse dado momento caso houver necessidade.
  33. 33. 33/41 Replicação Nativa via Streaming ● Um Master n Slaves ● Assíncrona ● Síncrona ● Escrita somente no Master ● Slaves podem ser colocados como somente leitura.
  34. 34. 34/41 Desenvolvimento O PostgreSQL é desenvolvido em conjunto pela comunidade e por empresas que o apoiam. A cada ano uma versão nova é liberada trazendo novos recursos, melhora de performance e correções de eventuais bugs.
  35. 35. 35/41 Versões e Ciclo de Desenvolvimento Versão Majoritária (X.Y) É a parte significativa do número da versão, composta apenas pelos dois primeiros números (X.Y). São lançamentos de versões que trazem novidades como novos recursos, e. g.: 9.4; Cada versão lançada tem suporte de até cinco anos, após isso não são mais lançados quaisquer patches para a mesma. Versão Minoritária (X.Y.Z) São considerados os três números que compõem a versão, no entanto, o último número (Z) diz respeito a apenas correções de bugs e de segurança.
  36. 36. 36/41 Eventos Internacional: PgCon [1] Nacional: PgBr [2] Regional: PgDay [3] [1] https://www.pgcon.org [2] http://pgbr.postgresql.org.br/ [3] http://www.postgresql.org.br/eventos/pgday
  37. 37. 37/41 Recursos Técnicos Veja no link abaixo a Matriz de Recursos conforme a versão do PostgreSQL: http://www.postgresql.org/about/featurematrix/
  38. 38. 38/41 Quem Utiliza o PostgreSQL
  39. 39. 39/41 Doe! O Elefante precisa de você! Contribua! :) http://www.postgresql.org/about/donate/
  40. 40. 40/41 Save our planet!
  41. 41. 41/41 Até a próxima!!! :) Juliano Atanazio http://www.slideshare.net/spjuliano https://speakerdeck.com/julianometalsp juliano777@gmail.com https://juliano777.wordpress.com

×