20 คะแนน โดย GN⁺ 2025-12-05 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • PGlite เป็นโซลูชันน้ำหนักเบาที่สามารถ รันฐานข้อมูล Postgres แบบเต็มรูปแบบในเครื่องบนสภาพแวดล้อม WASM ได้
  • เมื่อบีบอัดแล้วมีขนาด ต่ำกว่า 3MB จึงสามารถรันได้อย่างสะดวกทั้งในเบราว์เซอร์หรือสภาพแวดล้อมฝั่งไคลเอนต์
  • มีฟังก์ชัน การโหลดข้อมูล การซิงก์ และการคิวรีแบบเรียลไทม์ ในตัว ช่วยให้จัดการข้อมูลแบบตอบสนองได้
  • รองรับ การโหลดส่วนขยายแบบไดนามิก รวมถึง pgvector ทำให้ใช้งานโมดูลเสริมได้หลากหลาย
  • ผ่าน database.build ที่พัฒนาบนพื้นฐานของ Supabase ผู้ใช้สามารถสร้างและเผยแพร่ฐานข้อมูล Postgres ด้วย AI ได้ ช่วยเพิ่มความยืดหยุ่นให้กับการพัฒนาฐานข้อมูลบนเว็บ

ภาพรวม

  • PGlite คือ ฐานข้อมูล Postgres แบบฝังตัว ที่ทำงานบนสภาพแวดล้อม WASM(WebAssembly)
    • สามารถรัน Postgres instance แบบเต็มรูปแบบได้ในเครื่อง
    • รองรับการประมวลผลข้อมูลแบบตอบสนองและการซิงก์แบบเรียลไทม์

คุณสมบัติหลัก

  • น้ำหนักเบา: มี Postgres build แบบสมบูรณ์ที่มีขนาด ต่ำกว่า 3MB เมื่อบีบอัดด้วย Gzip
    • รันได้แม้ในเบราว์เซอร์หรือสภาพแวดล้อมไคลเอนต์ที่เบา
  • ขยายความสามารถได้: สามารถเพิ่มความสามารถของ Postgres ได้หลากหลายผ่าน กลไกการโหลดส่วนขยายแบบไดนามิก
    • รองรับส่วนขยาย pgvector เป็นค่าเริ่มต้น
  • ตอบสนองได้ดี: มีฟังก์ชันในตัวสำหรับ การโหลดข้อมูล การซิงก์ และการคิวรีแบบเรียลไทม์
    • เหมาะสำหรับการอัปเดตข้อมูลแบบเรียลไทม์และการสร้างแอปพลิเคชันแบบตอบสนอง

การทดลองใช้และการนำไปใช้

  • สามารถสร้างและเผยแพร่ฐานข้อมูล Postgres ที่ใช้ PGlite ได้บนแพลตฟอร์ม database.build
    • เป็นเครื่องมือที่ขับเคลื่อนด้วย AI ซึ่งสร้างโดย Supabase เพื่อให้ผู้ใช้สร้างฐานข้อมูลได้ด้วยตนเอง
  • สามารถรัน PGlite Postgres instance ได้โดยตรงภายในเบราว์เซอร์
    • รวม pgvector ไว้ด้วย
    • สามารถทดลองส่วนขยายเพิ่มเติมได้ในสภาพแวดล้อม playground(REPL)

ความสำคัญ

  • PGlite ขยายความสามารถของ Postgres มาสู่ระดับเบราว์เซอร์ ทำให้การรันฐานข้อมูลที่เน้นฝั่งไคลเอนต์เป็นไปได้
  • ด้วยการผสาน ความเบา การขยายความสามารถ และการตอบสนอง เข้าด้วยกัน จึงถูกจับตามองว่าเป็นโซลูชันฐานข้อมูลที่เหมาะกับการพัฒนาเว็บแอปพลิเคชันยุคถัดไป

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

 
qqq7300 2025-12-10

ผมเห็นบทความนี้แล้วเลยลองนำ PGlite มาใช้กับโปรเจกต์ของผมในเชิงทดลองดูครับ ต้องบอกว่าแค่การทดสอบแบบง่าย ๆ ก็ทั้งเร็วและดีมากจริง ๆ เลยครับ ต่อจากนี้ก็น่าคาดหวังมากครับ

 
GN⁺ 2025-12-05
ความคิดเห็นจาก Hacker News
  • ฉันทำงานอยู่ในทีม PGlite ดีใจที่ได้เห็นมันถูกนำมาแชร์บน HN อีกครั้ง
    ช่วงหลังยอดดาวน์โหลดรายสัปดาห์ทะลุ 3 ล้านไปแล้ว และน่าจะถึง 4 ล้านในไม่ช้า — ดูได้ที่ หน้าแพ็กเกจ npm
    เดิมทีเราสร้างมันขึ้นมาเพื่อฝังในเว็บแอป แต่ตอนนี้การใช้งานใน เครื่องมือนักพัฒนา และ สภาพแวดล้อม CLI กำลังเติบโตแบบก้าวกระโดด Google Firebase และ Prisma ก็ฝัง PGlite เข้าไปใน CLI ของตัวเองเพื่อจำลองผลิตภัณฑ์เซิร์ฟเวอร์เช่นกัน

    • น่าสนใจ แต่สงสัยว่าทำไมถึงทำเป็น WASM-only ตั้งแต่แรก ปกติแล้วน่าจะทำเป็นไลบรารีก่อนแล้วค่อยย้ายไป WASM หรือเปล่า ดูเหมือนฉันอาจพลาดอะไรบางอย่างไป
    • ขอบคุณสำหรับงานที่ยอดเยี่ยม อยากทราบว่ามีแผนรองรับกรณีใช้งาน http-vfs read-only หรือไม่
      หมายถึงการอ่านบล็อกจาก URL ระยะไกลด้วย range request แบบที่ DuckDB หรือ sql.js-httpvfs ทำ
      ในแล็บของเราก็กำลังทำ โปรเจ็กต์ลักษณะนี้ อยู่ แต่ระบบนิเวศ http-vfs ยังอยู่ในระดับ ต้นแบบ เลยแทบไม่มีไลบรารีที่ปรับแต่งมาดี
      แล้วก็สงสัยว่ารูปแบบการเข้าถึงดิสก์ของ PostgreSQL เหมาะกับ http-vfs มากกว่า SQLite หรือไม่
    • อยากถามว่ามีแผนทำ ไลบรารีสำหรับ Flutter ไหม
    • สงสัยว่า PGlite ในโหมดหน่วยความจำเร็วกว่า Postgres ปกติหรือไม่
      ถ้าใช่ และรองรับ network protocol ได้ด้วย ก็น่าจะยอดเยี่ยมมากสำหรับใช้ในสภาพแวดล้อม CI ของภาษาอื่นนอกเหนือจาก JS
    • ดูเจ๋งมาก อยากรู้ว่ามันเหมาะกับ กรณีการใช้งาน แบบไหนโดยเฉพาะ
      เป้าหมายคือจะเป็นตัวแทนของ SQLite หรือ DuckDB หรือไม่
  • ฉันอยากใช้ PGlite ใน รันไทม์ที่ไม่ใช่ JavaScript
    เช่น ฝังมันใน Go CLI ผ่าน WASM runtime เพื่อใช้แทน SQLite
    จาก issue #89 ดูเหมือนจะมี third-party binding สำหรับ Rust อยู่แล้ว เลยสงสัยว่ามีแผนรองรับ binding ภาษาอื่นอย่างเป็นทางการหรือไม่

    • เห็นด้วยเลย ชุด PGlite + Go น่าจะดีมากจริง ๆ
  • PGlite ยอดเยี่ยมมาก ฉันใช้มันเพื่อการพัฒนาเป็น PostgreSQL server ภายในเบราว์เซอร์
    เซิร์ฟเวอร์ตัวนั้น implement PG protocol และเมื่อไคลเอนต์เชื่อมต่อ ก็จะส่ง query เข้าไปยังเบราว์เซอร์เพื่อให้ PGlite รันอยู่ข้างใน
    สุดท้ายก็กลายเป็น PG server แบบเต็มภายในเบราว์เซอร์dbfor.dev

  • โปรเจ็กต์นี้น่าสนใจมาก หนึ่งในข้อเสียของ Postgres คือคุณต้องตั้งค่าเซิร์ฟเวอร์ตลอด และนี่ก็แก้ปัญหานั้นได้
    สงสัยว่ามีวิธีคอมไพล์เป็น ไลบรารีเนทีฟ หรือไม่ ดูเหมือนโค้ดบางส่วนน่าจะนำกลับมาใช้ได้

    • ฉันเคยทดลองคอมไพล์สำหรับ React Native แล้ว Postgres รันได้ทั้งบน iOS และ Android — ลิงก์ PR
    • ไลบรารีเนทีฟตอนนี้ อยู่ในโรดแมป แล้ว
    • เห็นด้วยมาก ถ้าสามารถ สลับจาก embedded ไปเป็น network mode ได้โดยไม่ต้องเปลี่ยน SQL หรือพฤติกรรมเลยก็คงยอดเยี่ยมมาก
  • สงสัยว่า ความต่าง ระหว่าง PGlite กับ SQLite คืออะไร
    ปกติฉันใช้ SQLite เป็นหลักในสภาพแวดล้อมแบบ embedded และฝั่งไคลเอนต์บนเบราว์เซอร์
    จุดแข็งของ SQLite คือความเรียบง่าย แต่ PGlite มีความสามารถด้านส่วนขยายที่น่าสนใจมาก เลยอยากรู้ว่าความต่างหลักของฐานข้อมูลสองตัวนี้คืออะไร

    • ฉันคิดว่าการใช้งานหลักคือ สภาพแวดล้อมทดสอบ/CI
      คุณอาจรันทดสอบได้เร็วด้วย SQLite แต่ถ้าโครงสร้างพื้นฐานจริงเป็น PostgreSQL คุณค่าของมันก็จะมีข้อจำกัด
  • สำหรับ unit test ฉันยังคงรัน Postgres บน Docker ผ่าน TestContainers อยู่
    แต่ทางเลือกแบบนี้ก็ทำให้มีเครื่องมือทดสอบสำหรับ Python อย่าง py-pglite เกิดขึ้นได้
    ถึงอย่างนั้น ฉันยังเชื่อมั่นมากกว่ากับแนวทางแบบ pgserver ที่ให้ Postgres จริงรันได้เบา ๆ ในรูปแบบแพ็กเกจ pip
    ความเห็นของฉันอยู่ในมุมของ unit test ล้วน ๆ

    • สงสัยว่าระหว่างสองแนวทางนี้มี trade-off อะไรบ้าง ประสบการณ์ตรงแบบนี้มีประโยชน์เสมอ
  • ทีมของเราได้นำ PGlite เข้ามาใช้ในสภาพแวดล้อมทดสอบระหว่างสร้างบริการภายในตัวใหม่
    เราทำ wrapper ให้ตอนทดสอบใช้ PGlite และตอนรันจริงใช้ Postgres instance ซึ่งได้ผลดีมาก
    โดยเฉพาะฟีเจอร์ .clone() ที่ช่วยสร้าง checkpoint ของ DB เพื่อย้อนกลับไปยังสถานะเริ่มต้นก่อนแต่ละการทดสอบได้
    มันทำให้การรัน test suite 50 ชุดแบบขนานเป็นเรื่องง่ายมาก

  • ฉันใช้อยู่สำหรับการทดสอบ และมันให้ความรู้สึกเหมือน จุดกึ่งกลางระหว่าง SQLite แบบ in-memory กับ Postgres instance เต็มรูปแบบ
    ฉันตามหาของแบบนี้มานานแล้ว และพอความเร็วในการทดสอบดีขึ้นก็พอใจมาก จนถึงตอนนี้แทบไม่มีข้อจำกัดอะไรเลย

  • ยังมี Doltgres ซึ่งเป็น Postgres แบบไฟล์ปฏิบัติการเดี่ยว ด้วย
    ดาวน์โหลดไฟล์ .exe เดี่ยวแล้วรันได้ทันทีเหมือน Deno จากนั้น Postgres ก็ทำงานเลย — เอกสารติดตั้ง Doltgres