33 điểm bởi xguru 2023-08-14 | 11 bình luận | Chia sẻ qua WhatsApp
  • Trong 25 năm, nó tiến hóa chậm rãi mà không có vốn đầu tư VC hay đội DevRel
  • Ingres (UC Berkeley, 1970~1985) —> Postgres95 —> PostgreSQL
    • Postgres = "Post Ingres"
  • Ngôn ngữ đầu tiên thậm chí không phải SQL mà là QUEL. Hỗ trợ SQL được thêm vào khi Postgres95 ra mắt năm 1995
  • Năm 1996, khi PostgreSQL 6.0 phát hành, đội ngũ phát triển được hình thành và dự án rời khỏi giới học thuật
  • Từ năm 2000, Postgres bắt đầu tăng trưởng khi đưa vào nhiều tính năng đa dạng
    • Write-Ahead-Log (WAL), Outer JOIN, TOAST, Drop column, IPv6,..
  • Đến năm 2005, nó đã trưởng thành hơn và bắt đầu được nhìn nhận là một DB khá ổn định
    • Hỗ trợ giao dịch phong phú, hỗ trợ SQL rộng rãi, cùng với các cải tiến cho Write-Ahead-Log (WAL) và VACUUM
    • Tạo chỉ mục đồng thời, máy chủ standby nóng, các kiểu dữ liệu Arrays/UUID/ENUM/XML, two-phase commit, v.v.
  • Từ Postgres 8.4 năm 2009, các hàm Window và CTE được hỗ trợ
  • Từ khoảng thời gian này, Postgres bắt đầu ảnh hưởng đến hệ sinh thái dữ liệu rộng lớn hơn
    • Nhờ nền tảng mã nguồn vững chắc và giấy phép của mình, nhiều công ty đã chọn Postgres rồi bắt đầu fork nó
    • Hiện nay hầu như không còn các bản fork này: Aster Data được Teradata mua lại, Truviso được Cisco mua lại, Netezza được IBM mua lại..
  • Dù nhiều phiên bản fork xuất hiện, Postgres vẫn tiếp tục tiến lên
  • Postgres thực sự bắt đầu trở nên ngầu từ khi phát hành Postgres 9.0 và 9.1 vào năm 2010
    • Hỗ trợ listen/notify (pub-sub cho DB)
    • hstore (kiểu dữ liệu key/value)
    • Nâng cấp dễ dàng thông qua pg_upgrade
    • Với sự xuất hiện của chỉ mục GIN/GiST, nó vượt ra ngoài chỉ mục B-Tree tiêu chuẩn
  • Khả năng mở rộng luôn là một phần của Postgres, nhưng sau tái cấu trúc thì việc sử dụng trở nên dễ dàng hơn
  • Foreign data wrapper được phát triển để có thể kết nối các DB Postgres khác nhau
  • Năm 2012, JSON được đưa vào
    • Sự trỗi dậy của các DB NoSQL (Mongo & Couchbase)
    • Các nhà phát triển bắt đầu muốn có những cách khác để sử dụng dữ liệu của mình
    • Ban đầu chỉ được hỗ trợ theo kiểu chắp vá, và phải 2 năm sau mới được hỗ trợ đúng nghĩa. Nhưng như vậy cũng đủ để thu hút sự chú ý của mọi người
    • Khi Heroku nổi lên, họ chọn Postgres làm DB mặc định
  • Từ Postgres 9.4 năm 2014, hỗ trợ JSON thực thụ bắt đầu với kiểu dữ liệu JSONB
    • Là biểu diễn nhị phân của JSON nên có thể dễ dàng lập chỉ mục bằng GIN
    • JSONB đến giờ vẫn là kiểu dữ liệu khiến nhiều người ngạc nhiên nhất khi nghe tới
  • Với logical decoding, nó đặt nền móng để trong vài năm tiếp theo việc làm CDC (change data capture) trở nên dễ dàng hơn
  • Khoảng bản 9.3, Amazon đã công bố hỗ trợ PostgreSQL trên RDS tại Re:Invent
    • Tác giả đã tham gia Re:Invent nhiều lần, và đây là lần công bố duy nhất mà khán giả đứng dậy vỗ tay
  • Các phiên bản 9.5, 9.6, 10 trong năm 2016
    • Row Level Security, Logical Replication, Table Partitioning, v.v. được đưa vào
    • Những tính năng này là đóng góp từ các contributor cá nhân
  • Vậy chính xác là khi nào?
    • Theo tôi, nếu không có sự kết hợp giữa Heroku và JSON thì các hyperscaler đã không bổ sung hỗ trợ
    • Nhưng nếu không có chu kỳ phát hành đều đặn cùng các cải tiến liên tục về hiệu năng và tính năng, với trọng tâm là chất lượng, thì cũng đã không có cơ hội đó

11 bình luận

 
cosine20 2023-08-16

Ồ, Pub/Sub cho DB khá thú vị đấy

 
inthelife 2023-08-16

Binggrae Janggrae Postgrae!

 
llmrocks 2023-08-15

Nhưng supabase còn ngầu hơn

 
ggg213 2023-08-15

Làm ơn cho phép thay đổi vị trí cột

 
ruinnel 2023-08-14

Báo lỗi chính tả: 라이선스 벅분에 -> 라이선스 덕분에

 
n1ghtc4t 2023-08-14

Ngầu~ quá! Đúng vậy!!!

 
jujumilk3 2023-08-14

Thậm chí còn mang cảm giác như một giáo trình mẫu mực về OSS tạo ra vòng tuần hoàn tích cực.

 
qurare 2023-08-14

Sự lãng mạn được bồi đắp qua nhiều thập kỷ, giống như LK-99...

 
jujumilk3 2023-08-14

Đỗ trong lãng mạn....

 
bbulbum 2023-08-14

Postgres cố lên!

 
pkj3186 2023-08-14

Ngầu quá, Postgres ơi