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

Passado, Presente e Futuro, uma visão hstórica do PostgreSQL

Passado, Presente e Futuro, uma visão hstórica do PostgreSQL

Fábio Telles Rodriguez

October 20, 2023
Tweet

More Decks by Fábio Telles Rodriguez

Other Decks in Technology

Transcript

  1. Passado, Presente e Futuro
    Uma visão histórica do PostgreSQL

    View full-size slide

  2. 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
    ● 20's - Novos modelos de negócio
    ● E o futuro?

    View full-size slide

  3. Num passado muito muito distante…. surge a IBM

    View full-size slide

  4. 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

  5. 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

  6. 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

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

    View full-size slide

  8. 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

  9. 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

  10. Edgar Frank “Ted” Codd

    View full-size slide

  11. 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

  12. Michael Ralph Stonebraker

    View full-size slide

  13. 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

  14. Michael Ralph Stonebraker
    ● 2001 - Professor no MIT
    ● 2003 - StreamBase Systems ⇒ TIBCO Software
    ● 2005 - Vertica (C-Store) ⇒ HP
    ● 2006 - Morpheus
    ● 2007 - H-Store and VoltDB
    ● 2008 - Paradigm4 (SciDB)
    ● 2009 - VoltDB (H-Store)
    ● 2013 - Tamr

    View full-size slide

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

    View full-size slide

  16. 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

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

    View full-size slide

  18. Fases do INGRES / Postgres
    ● 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

  19. 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

  20. 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

  21. 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

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

    View full-size slide

  23. A escolha do novo nome…

    View full-size slide

  24. 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

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

    View full-size slide

  26. PGDG - Postgres Global Development
    Team
    (2006)

    View full-size slide

  27. Evolução do PostgreSQL

    View full-size slide

  28. Versões do PostgreSQL

    View full-size slide

  29. No Brasil (PGCon.Brasil 2007)

    View full-size slide

  30. No Brasil (PGConf.Brasil 2022)

    View full-size slide

  31. Brasil
    ● Listas por email a partir de 1999 pgsql-pt-geral em
    https://www.postgresql.org/list/
    ● Grupo no telegram c/ ~3800 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
    ● PGConf Brasil 2019
    ● PGConf Brasil 2022
    ● PGDays em todo país!

    View full-size slide

  32. Why Postgres is so cool?

    Comunidade

    Liberdade

    Qualidade

    Bacon

    View full-size slide

  33. 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

  34. Ética Hacker
    ● Acesso à 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

  35. 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

  36. Forks
    • 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)
    https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases

    View full-size slide

  37. Desenvolvimento aberto
    Empresas que patrocinam o PostgreSQL:
    https://www.postgresql.org/about/sponsors

    View full-size slide

  38. 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
    ● Flexibilidade e extensibilidade

    View full-size slide

  39. PostgreSQL hoje

    View full-size slide

  40. ● 35+ anos de desenvolvimento
    ● 25+ anos de versões novas
    ● ~180 novas funcionalidades por versão
    ● Correções de erro e segurança lançadas 4x ao ano

    View full-size slide

  41. Most Popular Database
    https://survey.stackoverflow.co/2023/#technology

    View full-size slide

  42. Most growing database
    https://db-engines.com

    View full-size slide

  43. Open Source X Commercial Licence
    https://db-engines.com/en/ranking_trend

    View full-size slide

  44. Desafios atuais

    View full-size slide

  45. Desafios
    ● Liderança dentro do PGDG
    https://www.postgresql.org/community/contributors
    ● FUD: Fear, uncertainty, and doubt
    ● Guerra de patentes
    ● A era dos serviços em nuvem
    ● Novos modelos além do relacional
    ● Forks

    View full-size slide

  46. Desafios técnicos
    ● Write Amplification
    ○ Non-HOT updates
    ○ Vacuum dead tuples
    ○ Wraparound
    ● Encriptação de arquivos
    ● Guerra de patentes
    ● Escalabilidade horizontal
    ● Novas tecnologias

    View full-size slide

  47. Perguntas?
    Fábio Telles Rodriguez
    ● email: [email protected]
    ● telegram: @fabio_telles
    ● LinkedIn: www.linkedin.com/in/telles
    ● Blog: savepoint.blog.br

    View full-size slide