- ตลอด 25 ปี มันค่อยๆ พัฒนาอย่างช้าๆ โดยไม่มีทั้งเงินทุนจาก VC และทีม DevRel
- Ingres (UC Berkeley, 1970~1985) —> Postgres95 —> PostgreSQL
- ภาษาแรกไม่ใช่ 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 ความคิดเห็น
โอ้ การทำ Pub/Sub กับ DB นี่น่าสนใจนะ
บิงเกร จังก์เกร โพสต์เกร!
แต่ supabase เท่กว่าอีก
ช่วยให้เปลี่ยนตำแหน่งของคอลัมน์ได้ด้วย
แจ้งคำผิด:
라이선스 벅분에->라이선스 덕분에เจ๋ง~มาก! ใช่แล้ว!!!
ให้ความรู้สึกเหมือนเป็นกรณีศึกษาของ OSS ที่เกิดวงจรเกื้อหนุนกันอย่างต่อเนื่องเลย
เหมือนกับ LK-99 ความโรแมนติกที่เกิดจากการสั่งสมและปูทางมานานหลายทศวรรษ...
โรแมนติกผ่าน....
Postgres สู้ ๆ!
โคตรเท่เลยนะ Postgres เอ๊ย