Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Postgres e a história dos bancos de dados relacionais

Postgres e a história dos bancos de dados relacionais

Sobre a história do surgimento dos bancos de dados, a teoria relacional e o surgimento do PostgreSQL.

Palestra realizada no PGConf.Brasil 2019: https://pgconf.com.br/2019/

Fábio Telles Rodriguez

August 03, 2019
Tweet

More Decks by Fábio Telles Rodriguez

Other Decks in Programming

Transcript

  1. Postgres
    e a história dos bancos de
    dados relacionais
    Por Fábio Telles Rodriguez

    View full-size slide

  2. Fábio Telles Rodriguez
    • Consultor pela Timbira
    • DBA Oracle e PostgreSQL + 15 anos
    • Colaborador da Comunidade Brasileira de PostgreSQL
    • Blog: savepoint.blog.br
    • email: [email protected]
    • Twitter: @telles
    • Telegram: @fabio_telles

    View full-size slide

  3. Agenda
    60’s - Os primeiros bancos de dados
    70’s - A Teoria Relacional
    80’s - O surgimento do Postgres
    90’s - De Berkeley para o mundo
    00’s - O fortalecimento da comunidade
    10’s - Brigando com gigantes

    View full-size slide

  4. Há muito tempo… surge a IBM

    View full-size slide

  5. Surge a IBM
    • 1884 - Herman Hollerith cria a “Tabulating Machine
    Company”, com uma máquina de tabular dados para
    o censo demográfico de 1890 nos EUA usando
    cartões perfurados
    • 1911 - É criada a Computing-Tabulating-Recording
    Company (CTR)
    • 1924 - A CTR muda o nome para International
    Business Machine

    View full-size slide

  6. Os anos 60
    • A era dos mainframes e supercomputadores
    • Computadores passar a ter uso civil além de militar
    • Surgimento dos primeiros HD’s na IBM
    • Surgimento dos primeiros SGDBs
    • Surgimento da cultura Hacker, particularmente no
    MIT

    View full-size slide

  7. Onde guardar os dados
    Antes dos anos 60
    • Cartões perfurados
    • Tambor magnético
    • Fitas magnéticas (acesso sequencial)
    A partir dos anos 60
    • Discos magnéticos (acesso aleatório)

    View full-size slide

  8. IBM 350
    ● Lançado em 1956
    ● 4,4MB
    ● 50 discos de 61cm
    ● 2 cabeças de leitura
    ● 1200rpm
    ● 8,8KB/s
    ● seek time 600ms
    ● 971Kg
    ● 5KVA
    ● 150cm X 170cm X 70cm
    ● USD 9.200 em 1956 ou
    USD 88.000 em 2019

    View full-size slide

  9. Como guardar os dados
    Antes do anos 60
    • Arquivos texto com campos de tamanho fixo
    • Acesso a dados feitos 100% via código na aplicação
    A partir dos anos 60
    • Modelo em rede ou navegacional
    • Modelo hierárquico
    • (COBOL -> CODASYL)
    • Primeiros SGDBs (Sistemas Gerenciadores de Bancos
    de Dados)

    View full-size slide

  10. IBM Information Management System
    • Criado pela IBM para o
    projeto Apolo da NASA em
    1966
    • Seu maior legado foi ter
    atrasado os planos da IBM
    em adotar o modelo
    relacional

    View full-size slide

  11. Edgar Frank “Ted” Codd

    View full-size slide

  12. Edgar Frank “Ted” Codd
    Algumas publicações na IBM:
    • 1969 - Derivability, Redundancy and Consistency of Relations Stored in
    Large Data Banks. (publicação interna na IBM)
    • 1970 - A Relational Model of Data for Large Shared Data Banks
    • 1971 - A Data Base Sublanguage Founded on the Relational Calculus
    • 1972 - Relational Completeness of Data Base Sublanguages
    • 1974 - Interactive Support for Non-Programmers: The Relational and
    Network Approaches (c/ C. J. Date)
    • 1981 - The Capabilities of Relational Database Management Systems
    https://dblp.org/pers/hd/c/Codd:E=_F=

    View full-size slide

  13. Michael Ralph Stonebraker

    View full-size slide

  14. MIchael Ralph Stonebraker
    • 1971 - Professor na Universidade de Berkeley
    • 1973 - Interactive Graphics and Retrieval System ou INGRES
    • 1980 - Relational Technology Incorporated
    ⇒ Ingres ⇒ ASK Computer Systems ⇒ Computer Associates
    ⇒ Ingres Corporation ⇒ Actian ⇒ ParAccel ⇒ Actian X
    • 1986 - POST inGRES
    • 1992 - Illustra Information Technologies ⇒ Informix ⇒ IBM
    • 1996 - Cohera (Mariposa) ⇒ PeopleSoft ⇒ Oracle

    View full-size slide

  15. MIchael Ralph Stonebraker
    • 2001 - Professor no MIT
    • 2003 - StreamBase Systems ⇒ TIBCO Software
    • 2005 - Vertica (C-Store) ⇒ HP
    • 2006 - Morpheus
    • 2008 - Paradigm4 (SciDB)
    • 2009 - VoltDB (H-Store)
    • 2013 - Tamr

    View full-size slide

  16. Os anos 70
    Projeto Ingres System-R (DB2) Oracle
    Mantenedor Berkeley University IBM Software
    Development
    Laboratories (SDL)
    Início 1973 1981 1977
    Primeira versão 1974 1981 1979
    Linguagem QUEL SEQUEL (SQL) SEQUEL (SQL)
    Plataforma Mini Mainframe Mini

    View full-size slide

  17. SQL x QUEL
    "Along those lines, there was this whole other development, which was the
    INGRES project at U.C. Berkeley. The INGRES project had a language called
    QUEL. They started a company that implemented QUEL.
    QUEL fought SQL tooth-and-nail, and explained how QUEL was better than
    SQL in many different ways, and in fact it is better at doing aggregates.
    There are lots of areas where QUEL is better. Some people at Ingres now
    feel that the reason that they were less than successful is because they
    fought SQL rather than embraced it, so this gave Oracle a chance to
    differentiate themselves. "
    Jim Gray, em “The 1995 SQL Reunion: People, Projects, and Politics”
    https://www.mcjones.org/System_R/SQL_Reunion_95/SRC-1997-018.pdf

    View full-size slide

  18. INGRES
    Os herdeiros do INGRES:
    ● Informix
    ● Sybase
    ● SQL Server
    ● NonStop SQL
    ● Postgres

    View full-size slide

  19. Fases do PostgreSQL
    1973 a 1985: Ingres (Berkeley)
    1986 a 1994: Postgres (Berkeley)
    1994 a 1995: Postgres95 (Jolly Chen e Andrew Yu)
    1996 em diante: PostgreSQL (PGDG)

    View full-size slide

  20. POSTGRES
    Um projeto ambicioso:
    ● Supporting ADTs in a Database System
    ○ Complex Objects (i.e., nested or non-first-normal form data)*
    ○ User-Defined Abstract Data Types and Functions*
    ○ Extensible Access Methods for New Data Types*
    ○ Optimizer Handling of Queries with Expensive User-Defined Functions
    ● Active Databases and Rules Systems (Triggers, Alerts)*
    ○ Rules implemented as query rewrites+
    ○ Rules implemented as record-level triggers+
    ● Log-centric Storage and Recovery
    ○ Reduced-complexity recovery code by treating the log as data,* using
    non-volatile memory for commit status+
    ○ No-overwrite storage and time travel queries+

    View full-size slide

  21. POSTGRES
    ● Support for querying data on new deep storage technologies, notably optical
    disks*
    ● Support for multiprocessors or custom processors*
    ● Support for a variety of language models
    ○ Minimal changes to the relational model and support for declarative
    queries*
    ○ Exposure of “fast path” access to internal APIs, bypassing the query
    language+
    ○ Multi-lingual support+
    * 1986 - The design of Postgres, M. Stonebraker and L. A. Rowe
    + 1991 - The Postgres next generation database management system, M.
    Stonebraker and G. Kemnitz

    View full-size slide

  22. Postgres + SQL
    SQL se torna um padrão ANSI e ISO
    DB2, Oracle e outros bancos de dados adotam o SQL
    Em 1994, o projeto Postgres se encerra em Berkeley
    2 alunos recém formados decidem implementar a
    linguagem SQL no Postgres

    View full-size slide

  23. Postgres95
    Sem constraints (FKs, PKs, CHECKs)
    Sem INNER JOINs
    Sem NULL
    Sem MVCC
    Sem Window Functions

    View full-size slide

  24. A escolha do novo nome...

    View full-size slide

  25. A escolha do novo nome...
    From: Tom Lane
    Subject: The name of the game
    Date: 2006-07-13 03:42:54
    It might help to explain that the pronunciation is
    "post-gres" or "post-gres-cue-ell", not
    "post-gray-something".
    I heard people making this same mistake in presentations
    at this past weekend's Postgres Anniversary Conference
    :-( Arguably, the 1996 decision to call it PostgreSQL
    instead of reverting to plain Postgres was the single
    worst mistake this project ever made.
    It seems far too late to change now, though.
    regards, tom lane

    View full-size slide

  26. Postgres Global Development Team
    (1997)
    Thomas Lockhart
    Jolly Chen
    Vadim Mikheev
    Andrew Yu
    Tom Lane
    Bruce Momjian
    Marc Fournier

    View full-size slide

  27. Postgres Global Development Team
    (2006)

    View full-size slide

  28. Versões do PostgreSQL
    6.0 (1.09) em 1996
    6.1 e 6.2 em 1997
    6.3 e 6.4 em 1998
    6.5 em 1999
    7.0 em 2000
    7.1 em 2001
    7.2 e 7.3 em 2002
    7.4 em 2003
    8.0 em 2005
    Crash
    Aderência ao padrão SQL
    Melhoria na performance,
    administração e
    manutenção
    Versão nativa para Windows

    View full-size slide

  29. Versões do PostgreSQL

    View full-size slide

  30. No Brasil (PGCon.Brasil 2007)

    View full-size slide

  31. No Brasil (PGConf.Brasil 2018)

    View full-size slide

  32. No Brasil
    ★ Listas por email a partir de 1999

    pgsql-pt-geral em https://www.postgresql.org/list/
    ★ Grupo no telegram c/ 1817 inscritos
    ○ https://t.me/postgresqlbr
    ★ PGCon Brasil 2007 - São Paulo / SP
    ★ PGCon Brasil 2008 e 2009 - Campinas / SP
    ★ PGBR Brasil 2011 - São Paulo / SP
    ★ PGBR Brasil 2013 - Porto Velho / RO
    ★ PGBR Brasil 2015 e 2017 - Porto Alegre / RS
    ★ PGConf BRasil 2018 - São Paulo / SP
    ★ PGDays em todo país!

    View full-size slide

  33. Why Postgres is so cool?
    Comunidade
    Liberdade
    Qualidade
    Bacon

    View full-size slide

  34. Comunidade
    1996-04-23 Jolly Chen wrote:
    I’ve posted a TODO list on the postgres95 web site
    (http://s2k-ftp.CS.Berkeley.EDU:8000/postgres95/www/todo.html)
    I’ve casually sorted the list by priority and I have some editorial comments
    on some of them. If all the items on the TODO list were completed,
    postgres95 would be much improved, and would really be a viable
    replacement for commercial RDBMSs in some settings. Some of the items
    require quite a bit of work and deep knowledge of postgres95 internals,
    though. We would need a few contributors with quite a lot of
    volunteer hours to make this happen anytime soon. (A large number
    of contributors each with only a little bit of time to contribute would not be
    equivalent)

    View full-size slide

  35. Cultura e a ética Hacker
    ● Acesso a tecnologia deve ser ilimitado
    ● O conhecimento deve ser livre
    ● Promover a descentralização
    ● Meritocracia (julgamento independente de
    cor, credo, raça, sexo, etc)
    ● Você deve criar arte e beleza ao resolver
    problemas técnicos
    ● A tecnologia deve promover a liberdade e o
    bem estar das pessoas

    View full-size slide

  36. Liberdade
    ● Código aberto com licença aberta e permissiva
    (BSD Like)
    ● Não existe um “dono”
    ● Comunicação aberta
    ● Ferramentas abertas
    ● Aberto para novos desenvolvedores
    ● Regras claras e objetivas para todos (commitfest)

    View full-size slide

  37. Postgres middle circle (how)

    View full-size slide

  38. Forks
    https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases
    • AgensGraph (orientado a grafos)
    • Aurora (AWS)
    • BDR (replicação multimaster)
    • CitusDB (BI)
    • EnterpriseDB (compatibilidade com Oracle)
    • HadoopDB (cluster shared nothing)
    • PipelineDB (streaming)
    • PostgresX2 (cluster)
    • Pivotal (BI)
    • Redshift (BI)
    • ToroDB (document model)

    View full-size slide

  39. Desenvolvimento aberto
    Empresas que patrocinam o PostgreSQL:

    View full-size slide

  40. Qualidade
    ● Projeto visionário
    ● Fazer a coisa certa
    ● Código limpo e bem escrito
    ● Foco na confiabilidade e capacidade de
    manutenção
    ● Rock Solid Database

    View full-size slide

  41. Cenário atual

    View full-size slide

  42. O futuro é livre!

    View full-size slide