33 pontos por xguru 2023-08-14 | 11 comentários | Compartilhar no WhatsApp
  • Evoluiu lentamente por 25 anos, sem funding de VC nem equipe de DevRel
  • Ingres (UC Berkeley, 1970~1985) —> Postgres95 —> PostgreSQL
    • Postgres = "Post Ingres"
  • A primeira linguagem nem era SQL, e sim QUEL. O suporte a SQL foi adicionado em 1995, quando o Postgres95 foi lançado
  • Em 1996, com o lançamento do PostgreSQL 6.0, a equipe de desenvolvimento foi formada e o projeto saiu do meio acadêmico
  • A partir de 2000, o Postgres começou a crescer ao introduzir diversos recursos
    • Write-Ahead-Log (WAL), Outer JOIN, TOAST, drop column, IPv6,..
  • Em 2005, começou a ser visto como um banco de dados mais maduro e bastante estável
    • Suporte rico a transações, ampla compatibilidade com SQL e melhorias em Write-Ahead-Log (WAL) e VACUUM
    • Criação concorrente de índices, servidores warm standby, tipos de dados Arrays/UUID/ENUM/XML, commit em duas fases etc.
  • Em 2009, a partir do Postgres 8.4, passaram a ser suportadas funções de janela e CTE
  • Foi nessa época que o Postgres começou a influenciar amplamente o ecossistema de dados
    • Graças à base de código sólida e à licença, muitas empresas adotaram o Postgres e começaram a criar forks
    • Hoje quase nenhum desses forks permanece: a Aster Data foi adquirida pela Teradata, a Truviso pela Cisco, a Netezza pela IBM...
  • Muitos forks surgiram, mas o Postgres continuou avançando
  • O Postgres começou a ficar legal de verdade com os lançamentos do Postgres 9.0 e 9.1, em 2010
    • suporte a listen/notify (pub-sub para o banco de dados)
    • hstore (tipo de dados chave/valor)
    • upgrades fáceis com pg_upgrade
    • lançamento dos índices GIN/GiST, indo além do índice B-Tree padrão
  • Extensões sempre fizeram parte do Postgres, mas refatorações tornaram seu uso mais fácil
  • Foram desenvolvidos wrappers de dados externos capazes de conectar diferentes bancos Postgres
  • Em 2012, veio a introdução do JSON
    • ascensão dos bancos NoSQL (Mongo & Couchbase)
    • desenvolvedores começaram a querer outras formas de usar seus dados
    • no início o suporte era meio improvisado, e só foi ficar realmente adequado dois anos depois. Ainda assim, foi suficiente para chamar a atenção
    • com a ascensão do Heroku, o Postgres foi escolhido como banco padrão
  • Em 2014, a partir do Postgres 9.4, o suporte de verdade a JSON começou com o tipo de dados JSONB
    • como representação binária de JSON, ficou fácil indexar com índices GIN
    • JSONB ainda é um dos tipos de dados que mais surpreende as pessoas quando ouvem falar dele
  • O logical decoding criou a base para facilitar CDC (captura de dados de mudança) nos anos seguintes
  • Por volta do 9.3, a Amazon anunciou no Re:Invent o suporte a PostgreSQL no RDS
    • o autor participou do re:Invent várias vezes, e diz que foi a única apresentação em que viu o público aplaudir de pé
  • Em 2016, nas versões 9.5, 9.6 e 10
    • foram introduzidos Row Level Security, Logical Replication, Table Partitioning etc.
    • esses recursos vieram de contribuições de colaboradores individuais
  • Então, quando foi?
    • na minha opinião, sem a combinação de Heroku e JSON, os hyperscalers não teriam adicionado suporte
    • mas sem a cadência consistente de releases e as melhorias contínuas de desempenho e funcionalidades com foco em qualidade, a oportunidade não teria existido

11 comentários

 
cosine20 2023-08-16

Ah, Pub/Sub para banco de dados é interessante.

 
inthelife 2023-08-16

Binggrae Janggrae Postgrae!

 
llmrocks 2023-08-15

Mas o supabase é mais legal ainda

 
ggg213 2023-08-15

Por favor, permitam alterar a posição das colunas.

 
ruinnel 2023-08-14

Relato de erro de digitação: 라이선스 벅분에 -> 라이선스 덕분에

 
n1ghtc4t 2023-08-14

Maaassa! É isso aí!!!

 
jujumilk3 2023-08-14

Dá até a impressão de ser um exemplo clássico de OSS em um ciclo virtuoso.

 
qurare 2023-08-14

Como o LK-99, há um romantismo construído ao longo de décadas de acúmulo...

 
jujumilk3 2023-08-14

Romantismo aprovado....

 
bbulbum 2023-08-14

Força, Postgres!

 
pkj3186 2023-08-14

Você é demais, Postgres.