pgrust เขียน Postgres ขึ้นใหม่ทั้งตัวด้วย Rust จนผ่านชุดทดสอบกว่า 46,000 เคส แต่ยังห้ามเอาไปใช้กับข้อมูลจริง
pgrust คือโครงการเขียนฐานข้อมูลยอดนิยมอย่าง PostgreSQL ขึ้นมาใหม่ทั้งตัวด้วยภาษา Rust โดยให้ผลลัพธ์ตรงกับ Postgres ตัวจริงกว่า 46,000 เคสในชุดทดสอบมาตรฐาน แต่ชุดทดสอบนี้วัดแค่ความเข้ากันได้ ไม่ได้แปลว่าพร้อมใช้กับข้อมูลจริง

pgrust คือโครงการที่นำ PostgreSQL หรือที่มักเรียกสั้น ๆ ว่า Postgres มาเขียนขึ้นใหม่ทั้งตัวด้วยภาษา Rust โดย Postgres เป็นฐานข้อมูลโอเพนซอร์สที่เว็บและแอปจำนวนมากใช้เก็บข้อมูล ส่วน Rust เป็นภาษาโปรแกรมที่ขึ้นชื่อเรื่องความปลอดภัยและความเร็ว ล่าสุด pgrust ให้ผลลัพธ์ตรงกับ Postgres ตัวจริงในชุดคำสั่งทดสอบมาตรฐานกว่า 46,000 เคส
ตัวเลขระดับนี้ฟังดูเหมือนพร้อมใช้ แต่ README ซึ่งเป็นเอกสารแนะนำโครงการของ pgrust เองกลับระบุไว้ตรง ๆ ว่ายังไม่พร้อมสำหรับงานจริง คำถามที่น่าสนใจจึงไม่ใช่ว่ามันจะแทน Postgres ได้หรือยัง แต่เป็นว่าผลลัพธ์ที่ตรงกับ Postgres ในชุดทดสอบ 46,000 เคสนั้นหมายความว่าอย่างไรกันแน่
เขียนใหม่ทั้งตัว แต่ต้องทำงานเหมือนเดิม
เป้าหมายของ pgrust ไม่ใช่การสร้างฐานข้อมูลแบบใหม่ แต่คือการรื้อไส้ในของ Postgres มาเขียนใหม่ด้วย Rust โดยเมื่อใช้งานแล้วต้องทำงานเหมือนเดิมทุกอย่าง สั่งแบบเดียวกันแล้วต้องได้ผลแบบเดียวกัน
เวอร์ชันที่โครงการยึดเป็นเกณฑ์คือ Postgres 18.3 และจุดที่น่าทึ่งคือ pgrust อ่านโฟลเดอร์ข้อมูลของ Postgres 18.3 ตัวจริงได้เลย เปิดฐานข้อมูลเดิมขึ้นมาทำงานต่อได้โดยไม่ต้องแปลงไฟล์ใหม่
เหตุผลที่เลือกเขียนใหม่ด้วย Rust คือทีมงานอยากให้ทดลองแก้โครงสร้างภายในของ Postgres ได้ง่ายและปลอดภัยขึ้น รวมถึงใช้ AI ช่วยเขียนโค้ดเพื่อแก้ส่วนที่ซับซ้อนของระบบได้ จากนั้นจึงใช้ชุดทดสอบของ Postgres ตัวจริงตรวจว่าส่วนที่แก้ยังทำงานถูกต้องหรือไม่ พูดอีกแบบคือเปลี่ยนเครื่องยนต์ข้างในได้เต็มที่ ตราบใดที่ผลลัพธ์ยังเหมือนของเดิม
46,000 เคส บอกอะไร และไม่บอกอะไร

regression test คือชุดคำสั่งทดสอบมาตรฐานที่มากับ Postgres อยู่แล้ว หลักการง่ายมากคือป้อนคำสั่งชุดเดิมเข้าไป แล้วตรวจว่าผลลัพธ์ตรงกับที่ Postgres ตัวจริงควรให้หรือไม่ ถ้าผลตรงกัน ก็แปลว่าในกรณีนั้น pgrust ทำงานเหมือน Postgres
การผ่านชุดทดสอบกว่า 46,000 เคสจึงบอกได้เพียงเรื่องเดียว คือความเข้ากันได้ หรือ compatibility พูดสั้น ๆ คือสั่งแบบ Postgres แล้วได้ผลแบบ Postgres แค่นี้ก็เป็นเรื่องที่ทำได้ยากและน่าชื่นชมแล้ว
แต่สิ่งที่ชุดทดสอบนี้ไม่ได้บอกเลยคือระบบพร้อมใช้งานจริงหรือไม่ ฐานข้อมูลที่ให้บริการจริงต้องรับโหลดหนักได้โดยข้อมูลไม่หาย และต้องเร็วพอเมื่อมีคนเข้าใช้พร้อมกันเป็นพันเป็นหมื่น นอกจากนี้ยังต้องรองรับส่วนเสริมที่ทีมงานพึ่งพา รวมถึงรับมือสถานการณ์แปลก ๆ ที่ชุดทดสอบมาตรฐานไม่ได้ครอบคลุม เรื่องเหล่านี้ไม่มีเรื่องไหนวัดได้จากจำนวนเคสที่ผลตรงกัน
นี่คือจุดที่ทำให้คนอ่านข่าว pgrust เข้าใจผิดได้ง่าย เพราะตัวเลขหลักหมื่นทำให้รู้สึกว่าใกล้เส้นชัยแล้ว ทั้งที่ความเข้ากันได้เป็นเพียงจุดเริ่มต้น และยังมีงานอีกมากกว่าจะพร้อมใช้จริง
ผลทดสอบ 100% ที่ยังไม่มีเวอร์ชันให้โหลดมาลอง

ถ้าอ่านหน้าโครงการบน GitHub ซึ่งเป็นแพลตฟอร์มสำหรับเก็บและแชร์โค้ดแบบผ่าน ๆ อาจเห็นเลข 100% แล้วเข้าใจว่ามันผ่านทุกอย่างแล้ว แต่ต้องแยกให้ออกว่าในหน้าเดียวกันมีตัวเลขสองชุดที่พูดถึงคนละเวอร์ชัน
ชุดแรกคือเลข 46,000 เคสที่เล่าไปข้างต้น ตัวเลขนี้มาจากเวอร์ชันสาธารณะที่ใครก็โหลดมารันทดสอบซ้ำได้ README ระบุว่าเป็นผลที่ยืนยันแล้ว พร้อมมีสคริปต์ให้รันทดสอบด้วยตัวเอง
ชุดที่สองมาจากหมายเหตุอัปเดตที่ malisper ผู้พัฒนา pgrust เขียนว่า กำลังพัฒนาเวอร์ชันใหม่ที่ผ่านชุดทดสอบครบ 100% และเคลมว่าเร็วกว่า Postgres เดิมหลายเท่าในบางงาน แต่เวอร์ชันนี้ยังไม่ปล่อยออกมา จึงไม่มีใครนอกทีมโหลดไปตรวจสอบได้ ตัวเลขทั้งหมดจึงยังเป็นคำบอกเล่าจากทีมเอง ไม่ใช่ผลที่คนนอกยืนยันได้
จุดที่ทำให้สับสนง่ายคือชื่อโครงการบนหน้าเว็บระบุว่าผ่านชุดทดสอบ 100% แล้ว ทั้งที่เลข 100% นั้นเป็นของเวอร์ชันที่ยังไม่เผยแพร่ ไม่ใช่ตัวที่โหลดได้วันนี้ ดังนั้นเมื่อเห็นพาดหัวว่ามีคนเขียน Postgres ขึ้นใหม่จนผ่านการทดสอบครบ 100% แล้ว จึงควรถามต่อทันทีว่าหมายถึงเวอร์ชันไหน ตัวที่ลองได้จริง หรือตัวที่ยังอยู่ในมือทีมงาน
อยากลองเอง เริ่มที่ไหนดี
ข่าวดีคือถ้าแค่อยากลองว่า Postgres เวอร์ชัน Rust เป็นยังไง ไม่ต้องติดตั้งอะไรเลย
วิธีที่เร็วที่สุดคือเปิดตัวทดลองแบบ WebAssembly ที่รันในเบราว์เซอร์ได้ทันทีที่ pgrust.com พิมพ์คำสั่งเล่นได้เหมือนต่อเข้าฐานข้อมูลจริง โดยไม่ต้องลงโปรแกรมในเครื่อง
ถ้าอยากลองให้ใกล้การใช้งานจริงขึ้นอีกขั้น หน้า README มีอิมเมจหรือแพ็กเกจสำเร็จรูปสำหรับ Docker ซึ่งเป็นเครื่องมือสำหรับรันซอฟต์แวร์ในกล่องแยกที่เรียกว่า container โดยดึงอิมเมจมารันได้ด้วยคำสั่งประมาณนี้
docker run -d --name pgrust -e POSTGRES_PASSWORD=secret malisper/pgrust:v0.1จากนั้นใช้ psql ซึ่งเป็นโปรแกรมสำหรับพิมพ์คำสั่งคุยกับฐานข้อมูล เชื่อมต่อเข้าไปได้เลย โดย psql ติดมากับอิมเมจแล้ว หรือถ้าอยาก build จากซอร์สโค้ดเอง ก็มีขั้นตอนครบอยู่ในหน้า README เช่นกัน โครงการเปิดโค้ดทั้งหมดภายใต้สัญญาอนุญาตโอเพนซอร์สแบบ AGPL-3.0
แล้วมันน่าจับตายังไง
สิ่งที่น่าจับตาเกี่ยวกับ pgrust จึงไม่ใช่ว่าจะมาแทน PostgreSQL ได้เมื่อไร เพราะยังต้องพัฒนาอีกมาก ประเด็นสำคัญคือการเขียนตัวโปรแกรมด้วย Rust อาจทำให้การรื้อโครงสร้างภายในของ Postgres ซึ่งแต่ก่อนทำได้ยากมาก กลายเป็นเรื่องที่ทดลองได้ง่ายขึ้น
คำถามที่คุ้มค่ากว่าจึงไม่ใช่ว่า pgrust จะชนะของเดิมไหม แต่เป็นว่าถ้าแก้โครงสร้างภายในได้ง่ายขึ้นจริง เราจะได้เห็นคนลองทำอะไรใหม่ ๆ ที่ไม่เคยมีใครกล้าลองกับของเดิมบ้าง
ที่มา: โปรเจกต์ pgrust โดย malisper บน GitHub



