33 คะแนน โดย xguru 2023-08-14 | 11 ความคิดเห็น | แชร์ทาง WhatsApp
  • ตลอด 25 ปี มันค่อยๆ พัฒนาอย่างช้าๆ โดยไม่มีทั้งเงินทุนจาก VC และทีม DevRel
  • Ingres (UC Berkeley, 1970~1985) —> Postgres95 —> PostgreSQL
    • Postgres = "Post Ingres"
  • ภาษาแรกไม่ใช่ SQL แต่เป็น QUEL และมีการเพิ่มการรองรับ SQL ตอนที่ Postgres95 ออกในปี 1995
  • ในปี 1996 PostgreSQL 6.0 ออกมา พร้อมกับการตั้งทีมพัฒนาและก้าวออกจากแวดวงวิชาการ
  • ตั้งแต่ปี 2000 เป็นต้นมา Postgres เริ่มเติบโตด้วยการเพิ่มความสามารถหลากหลาย
    • Write-Ahead-Log (WAL), Outer JOIN, TOAST, Drop column, IPv6,..
  • พอถึงปี 2005 ก็เริ่มถูกมองว่าเป็นฐานข้อมูลที่โตเต็มที่และค่อนข้างเสถียร
    • รองรับทรานแซกชันอย่างครบถ้วน รองรับ SQL อย่างกว้างขวาง และมีการปรับปรุง Write-Ahead-Log (WAL) กับ VACUUM
    • การสร้างดัชนีแบบพร้อมกัน, Warm standby server, ชนิดข้อมูล Arrays/UUID/ENUM/XML, two-phase commit เป็นต้น
  • ตั้งแต่ Postgres 8.4 ในปี 2009 ก็เริ่มรองรับ Window functions และ CTE
  • ช่วงเวลานี้เองที่ Postgres เริ่มมีอิทธิพลต่อระบบนิเวศข้อมูลในวงกว้าง
    • ด้วยฐานโค้ดที่แข็งแรงและไลเซนส์ที่เอื้อ หลายบริษัทจึงเลือกใช้ Postgres และเริ่มทำ fork ของตัวเอง
    • แต่ fork เหล่านี้แทบไม่เหลืออยู่แล้วในปัจจุบัน: Aster Data ถูกซื้อโดย Teradata, Truviso ถูกซื้อโดย Cisco, Netezza ถูกซื้อโดย IBM..
  • แม้จะมีเวอร์ชัน fork เกิดขึ้นมากมาย แต่ Postgres ก็ยังเดินหน้าต่อไป
  • Postgres เริ่ม "เท่" (Cool) จริงๆ ตั้งแต่การออก Postgres 9.0 และ 9.1 ในปี 2010
    • รองรับ listen/notify (pub-sub สำหรับฐานข้อมูล)
    • hstore (ชนิดข้อมูลคีย์/ค่า)
    • อัปเกรดได้ง่ายผ่าน pg_upgrade
    • การมาของดัชนี GIN/GiST ที่ไปไกลกว่าดัชนีมาตรฐานแบบ B-Tree
  • ความสามารถด้านส่วนขยายเป็นส่วนหนึ่งของ Postgres มาโดยตลอด แต่การรีแฟกเตอร์ทำให้ใช้งานได้ง่ายขึ้น
  • มีการพัฒนา foreign data wrapper ที่เชื่อมต่อฐานข้อมูล Postgres คนละตัวเข้าด้วยกันได้
  • ปี 2012 มีการเพิ่ม JSON
    • เป็นช่วงที่ NoSQL DB กำลังมาแรง (Mongo & Couchbase)
    • นักพัฒนาเริ่มต้องการวิธีใหม่ๆ ในการใช้งานข้อมูลของตัวเอง
    • ตอนแรกเป็นเพียงการรองรับแบบอ้อมๆ และกว่าจะรองรับอย่างจริงจังก็อีก 2 ปีต่อมา แต่ก็เพียงพอจะดึงความสนใจของผู้คนได้
    • Heroku กำลังเติบโตและเลือก Postgres เป็นฐานข้อมูลเริ่มต้น
  • ตั้งแต่ Postgres 9.4 ในปี 2014 ก็เริ่มรองรับ JSON อย่างจริงจังผ่านชนิดข้อมูล JSONB
    • มันคือการแทนค่า JSON แบบไบนารี ทำให้สร้างดัชนีด้วย GIN ได้ง่าย
    • JSONB ยังเป็นชนิดข้อมูลที่ทำให้หลายคนประหลาดใจมากที่สุดเมื่อได้ยินชื่ออยู่เสมอ
  • Logical decoding วางรากฐานให้การทำ CDC (change data capture) ง่ายขึ้นในอีกหลายปีถัดมา
  • ราวๆ ช่วง 9.3 Amazon ประกาศรองรับ PostgreSQL บน RDS ผ่านงาน Re:Invent
    • ผู้เขียนบอกว่าเข้าร่วม Re:Invent หลายครั้ง และนี่เป็นประกาศเดียวที่คนดูยืนขึ้นปรบมือ
  • ปี 2016 กับเวอร์ชัน 9.5, 9.6, 10
    • มีการเพิ่ม Row Level Security, Logical Replication, Table Partitioning เป็นต้น
    • ความสามารถเหล่านี้เป็นผลงานจากผู้มีส่วนร่วมรายบุคคล
  • แล้วสรุปว่าตอนไหนกันแน่?
    • ในความเห็นของผู้เขียน ถ้าไม่มีการผสมกันของ Heroku กับ JSON เหล่า hyperscaler ก็คงไม่เพิ่มการรองรับ
    • แต่ถ้าไม่มีรอบการออกรุ่นที่สม่ำเสมอ และการปรับปรุงประสิทธิภาพกับฟีเจอร์อย่างต่อเนื่องโดยเน้นคุณภาพเป็นหลัก ก็คงไม่มีโอกาสมาถึง

11 ความคิดเห็น

 
cosine20 2023-08-16

โอ้ การทำ Pub/Sub กับ DB นี่น่าสนใจนะ

 
inthelife 2023-08-16

บิงเกร จังก์เกร โพสต์เกร!

 
llmrocks 2023-08-15

แต่ supabase เท่กว่าอีก

 
ggg213 2023-08-15

ช่วยให้เปลี่ยนตำแหน่งของคอลัมน์ได้ด้วย

 
ruinnel 2023-08-14

แจ้งคำผิด: 라이선스 벅분에 -> 라이선스 덕분에

 
n1ghtc4t 2023-08-14

เจ๋ง~มาก! ใช่แล้ว!!!

 
jujumilk3 2023-08-14

ให้ความรู้สึกเหมือนเป็นกรณีศึกษาของ OSS ที่เกิดวงจรเกื้อหนุนกันอย่างต่อเนื่องเลย

 
qurare 2023-08-14

เหมือนกับ LK-99 ความโรแมนติกที่เกิดจากการสั่งสมและปูทางมานานหลายทศวรรษ...

 
jujumilk3 2023-08-14

โรแมนติกผ่าน....

 
bbulbum 2023-08-14

Postgres สู้ ๆ!

 
pkj3186 2023-08-14

โคตรเท่เลยนะ Postgres เอ๊ย