por que postgresql?

Download Por que PostgreSQL?

Post on 14-Apr-2017

957 views

Category:

Technology

4 download

Embed Size (px)

TRANSCRIPT

  • Por que PostgreSQL?

    Juliano Atanazio

  • 2/52

    O que

    um sistema gerenciador de banco de dados objeto-relacional originalmente desenvolvido na Universidade da Califrnia no Departamento de Cincias da Computao em Berkeley.

    Hoje desenvolvido e mantido pelo PGDG (PostgreSQL Global Development Group Grupo de Desenvolvimento Global do PostgreSQL).

  • 3/52

    O que

    Seu nome vem do Ingres, que seu cdigo-fonte originalmente era descendente. Por isso do nome Postgres.

    Seu cdigo-fonte aberto.

    O PostgreSQL Software Livre :)

  • 4/52

    Links

    Site oficial: www.postgresql.org

    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/

    http://www.postgresql.org/http://planet.postgresql.org/https://wiki.postgresql.org/http://www.postgresql.org.br/http://planeta.postgresql.org.br/

  • 5/52

    Como se Fala e Como se Escreve

    Uma dvida comum ao PostgreSQL seu nome. As formas corretas so as duas seguintes:

    Postgres, pronuncia-se postgres (sim, o s pronunciado!);PostgreSQL, pronuncia-se postgres s quiu el.

    Nunca, jamais, em hiptese nenhuma escrever postgree ou dizer postgr.

    Infelizmente ainda h fontes na Internet com o nome do Postgres escrito erroneamente, o que leva muita gente tambm a falar errado.

  • 6/52

    Multi Plataforma

    Linux BSDs Solaris HPUX Irix AIX Unix MacOS Windows

    etc...

  • 7/52

    Licena

    A licena utilizada uma licena prpria similar licena BSD (herana de Berkeley).

    Essa licena mais flexvel do que a GPL, permitindo inclusive que qualquer um possa pegar seu cdigo-fonte, alter-lo e at fech-lo para fins comerciais.

    Um grande exemplo disso o derivado do PostgreSQL mais famoso, o EDB Postgres, da EnterpriseDB [1], empresa que uma das grandes contribuidoras para o desenvolvimento do projeto PostgreSQL original.

    [1] https://www.enterprisedb.com/

    https://www.enterprisedb.com/

  • 8/52

    Suporte

    Comunidade:

    Brasil: https://listas.postgresql.org.br/cgi-bin/mailman/listinfo

    Internacional: https://lists.postgresql.org

    Comercial:

    H vrias empresas ao redor do mundo (inclusive no Brasil) que prestam consultoria em PostgreSQL.

    https://listas.postgresql.org.br/cgi-bin/mailman/listinfohttps://lists.postgresql.org/

  • 9/52

    Suporte

    Documentao oficial:

    http://www.postgresql.org/docs/

    http://www.postgresql.org/docs/

  • 10/52

    Liberdade

    O PostgreSQL Software Livre! :)

    Voc pode baixar, usar e / ou alterar o cdigo-fonte como bem entender.

    No precisa se preocupar com quantos ncleos tem seu servidor.

    Totalmente livre! Livre!

    O PostgreSQL um s! No existem verses Light, Standard, Advanced Server ou mesmo Express Uma nica verso e sem cortes de funcionalidades.

    Todo poder do grande elefante dos dados disposio do usurio!

  • 11/52

    Imune a Over-Deployment

    Over-deployment o que alguns fornecedores de banco de dados proprietrios consideram como problema de inconformidade de sua licena.

    Com PostgreSQL, ningum pode process-lo por quebra de acordos de licenciamento, devido a no haver nenhum custo de licenciamento associado para o software.

    Seu servidor de banco de dados PostgreSQL pode ter quantos ncleos de processador desejar.

  • 12/52

    Imune a Over-Deployment

    Algumas vantagens adicionais:

    Modelos de negcios mais lucrativos com implantaes em larga escala;

    Sem possibilidade de ser auditado por inconformidade de licena em qualquer fase;

    Flexibilidade para conceituar pesquisar e tentar implantaes sem necessidade de incluir custos adicionais de licena;

    Foco em detalhes tcnicos, sem a necessidade de lidar com inconvenientes de licena.

  • 13/52

    Reduo de Custos de Pessoal

    O PostgreSQL foi projetado e criado para ter requisitos muito mais baixos de manuteno e ajustes do que os principais bancos de dados proprietrios, mas ainda manter todas as caractersticas, estabilidade e desempenho.

  • 14/52

    Confiabilidade e Estabilidade Lendrias

    Diferente de muitos sistemas gerenciadores de banco de dados proprietrios, muito comum organizaes reportarem que o PostgreSQL nunca falhou em anos de operao.

    Nem uma nica vez, ele simplesmente funciona!

  • 15/52

    Extensibilidade e PGXN

    possvel desenvolver extenses para o PostgreSQL de forma a ampliar o leque de funcionalidades oferecidas.

    A PGXN [1], the PostgreSQL Extension Network, um sistema de distribuio central para bibliotecas open-source de extenso para o PostgresQL.

    [1] http://pgxn.org/

    http://pgxn.org/

  • 16/52

    Projetos e Aplicativos: pgFoundry

    De forma similar ao PGXN, existe o pgFoundry [1].

    um site que rene vrios projetos relativos ao PostgreSQL.

    [1] http://pgfoundry.org

    http://pgfoundry.org/

  • 17/52

    Aplicativos Clientes

    psql: Cliente padro em modo texto;

    pgcli [1]: Cliente em modo texto, escrito em Python com auto-complete mais avanado do que o psql.

    pgAdmin3 [2]: Aplicativo grfico;

    phpPgAdmin [3]: Interface web;

    EMS SQL Management Studio para PostgreSQL [4]: Grfico, proprietrio e disponvel apenas para Windows.

    DBeaver [5]: Aplicativo grfico multi-plataforma escrito em Java, depende do driver JDBC PostgreSQL.

  • 18/52

    Aplicativos Clientes

    [1] http://pgcli.com/

    [2] http://pgadmin.org/

    [3] http://phppgadmin.sourceforge.net/

    [4] http://www.sqlmanager.com.br/html/studio_postgresql.html

    [5] http://dbeaver.jkiss.org/

    http://pgcli.com/http://pgadmin.org/http://phppgadmin.sourceforge.net/http://www.sqlmanager.com.br/html/studio_postgresql.htmlhttp://dbeaver.jkiss.org/

  • 19/52

    Limites do PostgreSQL

    Tamanho mximo de um banco de dados: Ilimitado

    Tamanho mximo de uma tabela: 32 TB

    Tamanho mximo de uma linha (registro): 1.6 TB

    Tamanho mximo de um campo (coluna): 1 GB

    Nmero mximo de linhas por tabela: Ilimitado

    Nmero mximo de colunas por tabela: 250 - 1600 dependendo do tipo de coluna

    Nmero mximo de ndices por tabela: Ilimitado

  • 20/52

    Tipos de Dados

    Numricos;

    De Tempo;

    De Texto;

    Nulo;

    JSON;

    XML;

    Tipos de dados de endereos IP (IPv4 e Ipv6) e mac address;

    UUID;

  • 21/52

    Tipos de Dados

    Boolean;

    Enumerados;

    Geomtricos;

    Busca Textual;

    Compostos;

    De Faixa (Range Types);

    Suporte a arrays...

    A variedade muito grande e o usurio pode tambm criar um tipo de dados personalizado.

  • 22/52

    Funes e Procedures

    Diferente de outros SGBDs, no PostgreSQL no h uma separao entre Functions e Procedures.

    tudo Function!

    Para invocar uma funo bem simples:

    SELECT funcao();

  • 23/52

    Funes e Procedures

    Triggers: Diferente de outros SGBDs a funo que o trigger chama definida externa a ele. E depois, na definio do trigger feita a chamada a essa funo.Isso permite reaproveitamento de cdigo de forma que uma mesma funo possa atender a mais de um trigger.

    A linguagem procedural padro do PostgreSQL a PL/pgSQL (muito similar PL/SQL do Oracle, porm mais amigvel).

  • 24/52

    Padres SQL ISO

    O core team de desenvolvimento, tambm conhecido como PGDG (PostgreSQL Global Development Group) tem como premissa a maior compatibilidade possvel com os padres SQL ISO.

    https://www.postgresql.org/docs/current/static/features.html

    https://www.postgresql.org/docs/current/static/features.html

  • 25/52

    O Elefante Poliglota

    Alm da linguagem procedural padro, PL/pgSQL, temos tambm opes nativas para fazermos funes em Python (PL/Python) ou em Perl (PL/Perl), de forma nativa.

    Devido caracterstica de extensibilidade do PostgreSQL podemos tambm programar funes em Java e PHP (PL/Java e PL/PHP, respectivamente) e outras linguagens de programao que podemos instalar em forma de extenso.

  • 26/52

    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]Lua: LuaPgSQL [8]Ruby: Ruby pg [9]Go: pq [10]Node.js: node-postgres [11] Rust: Rust-Postgres [12]

  • 27/52

    Drivers para Linguagens

    [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/[8] https://github.com/arcapos/luapgsql[9] https://github.com/ged/ruby-pg[10] https://github.com/lib/pq[11] https://github.com/brianc/node-postgres[12] https://github.com/sfackler/rust-postgres

    http://initd.org/psycopg/https://jdbc.postgresql.org/https://metacpan.org/pod/DBD::Pghttp://www.postgresql.org/docs/current/static/libpq.htmlhttp://php.net/manual/pt_BR/ref.pdo-pgsql.connection.phphttp://www.npgsql.org/http://pqxx.org/development/libpqxx/https://github.com/arcapos/luapgsqlhttps://github.com/ged/ruby-pghttps://github.com/lib/pqhttps://github.com/brianc/node-postgreshttps://github.com/sfackler/rust-postgres

  • 28/52

    Common Table Expressions - Expresses Comuns de Tabela

    Com a clusula WITH fornece uma forma de escrever comandos auxiliares para uso em uma consulta muito grande.

    Esses comandos tambm so conhecidos como Common Table Expressions ou CTEs, que podemos pensar como se fosse uma definio de