postgres-wasm เซิร์ฟเวอร์ PostgreSQL ที่ทำงานในเบราว์เซอร์ด้วย WebAssembly

โพสเกรส-wasm

Postgres-wasm เป็นโครงการที่ PostgreSQL ถูกย้ายไปยัง WebAssembly

เมื่อไม่นานมานี้ มีการประกาศเปิดให้ใช้งาน postgres-wasm ฟรีซึ่งเป็นเซิร์ฟเวอร์ PostgreSQLที่ทำงานในเว็บเบราว์เซอร์ และมีฟีเจอร์ครบครัน รวมถึงการบันทึกสถานะในเบราว์เซอร์ การกู้คืนจาก pg_dump และการจำลองแบบลอจิกจากฐานข้อมูลระยะไกล

Postgres-wasm เป็นโครงการโอเพนซอร์สที่แปลง PostgreSQL มาใช้ใน WebAssemblyโซลูชันนี้ได้รับการพัฒนาขึ้นจากความร่วมมือระหว่าง Supabase ผู้ให้บริการฐานข้อมูลบนคลาวด์ และ Snaplet บริษัทที่เชี่ยวชาญด้านการเขียนโปรแกรมฐานข้อมูล

“วันนี้เรากำลังเปิดตัว postgres-wasm กับเพื่อน ๆ ของเราที่ Snaplet” Supabase Engineer Mark Burggraf กล่าว

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

เกี่ยวกับ Postgres-wasm

Supabase ไม่ใช่เจ้าแรกที่ทำให้ Postgres สามารถทำงานในเบราว์เซอร์ได้ตำแหน่งนั้นเป็นของทีม Crunchy Data ซึ่งได้แชร์เวอร์ชันของพวกเขาบน HN เมื่อเดือนที่แล้ว ด้วยความต้องการที่จะพัฒนาเวอร์ชันโอเพนซอร์สของเวอร์ชันที่เป็นกรรมสิทธิ์ของ Crunchy Data ทาง Supabase จึงร่วมมือกับ Snaplet เพื่อสร้าง Postgres-wasm ขึ้นมา

ด้วยความช่วยเหลือจาก Postgres-wasm ทำให้สามารถเรียกใช้ PostgreSQL ได้โดยตรงผ่านเว็บเบราว์เซอร์ ซึ่งทำได้โดยใช้ระบบปฏิบัติการ Linux ชื่อ Buildroot ที่มีจุดเด่นคือขนาดเล็กมาก และโปรแกรมจำลอง v86 ที่ช่วยจำลองการทำงานของเทอร์มินัล x86

ในทางกลับกัน WebAssembly มีจุดประสงค์เพื่อให้สามารถสร้างแอปพลิเคชันประสิทธิภาพสูงบนเว็บเพจได้แต่ไม่ได้ตั้งสมมติฐานเฉพาะสำหรับเว็บหรือให้ฟังก์ชันการทำงานเฉพาะสำหรับเว็บ ดังนั้นจึงสามารถใช้งานในสภาพแวดล้อมอื่นๆ ได้เช่นกัน เป็นมาตรฐานเปิดที่มุ่งสนับสนุนภาษาใดๆ บนระบบปฏิบัติการใดๆ และในทางปฏิบัติ ภาษาที่ได้รับความนิยมมากที่สุดทั้งหมดก็ได้รับการสนับสนุนอย่างน้อยในระดับหนึ่งแล้ว Supabase ใช้ v86 ในการเรียกใช้ VM ภายในเบราว์เซอร์

การใช้งาน Postgres ในเบราว์เซอร์นั้นยอดเยี่ยมแต่การเชื่อมต่อผ่าน PgAdmin นั้นดียิ่งกว่า อย่างไรก็ตาม เบราว์เซอร์มักบล็อกการเข้าถึงเครือข่าย TCP ของ VM เพื่อแก้ปัญหานี้Supabase จึงใช้ WebSockets ในการกำหนดเส้นทางการรับส่งข้อมูล โดยใช้ WebSockProxy เวอร์ชันดัดแปลง ซึ่งช่วยให้โปรแกรมจำลองสามารถสื่อสารกับอินเทอร์เน็ตได้โดยการแปลงข้อมูลที่ส่งผ่านพอร์ต WebSocket ให้เป็นแพ็กเก็ต TCP นอกจากนี้ WebSockProxy เวอร์ชันดัดแปลงยังเพิ่มความสามารถในการสร้างอุโมงค์เชื่อมต่อกับเซิร์ฟเวอร์ Postgres อีกด้วย

คุณสมบัติหลักของโครงการนี้มีดังต่อไปนี้:

  • Postgres 14.5, psql, pg_dump เป็นต้น
  • บันทึกและกู้คืนสถานะไปยัง/จากไฟล์
  • บันทึกและกู้คืนสถานะ Postgres ไปยัง/จากที่เก็บข้อมูลเบราว์เซอร์ (IndexedDB)
  • บูตอย่างรวดเร็วจากไฟล์สถานะหรือรีเซ็ตโปรแกรมจำลองแบบเต็ม
  • ตัวเลือกการกำหนดค่าหน่วยความจำตั้งแต่ 128 MB ถึง 1024 MB
  • กำหนดขนาดฟอนต์สำหรับเทอร์มินัล
  • อัปโหลดไฟล์ไปยังโปรแกรมจำลอง (รวมถึงการทิ้ง CSV และฐานข้อมูล)
  • ดาวน์โหลดไฟล์อีมูเลเตอร์
  • การเชื่อมต่อเครือข่ายขาออกจากโปรแกรมจำลองไปยังอินเทอร์เน็ต
  • ช่องสัญญาณเครือข่ายขาเข้าไปยังพอร์ต postgres 5432 ภายในโปรแกรมจำลอง

โดยทั่วไป โปรเจ็กต์ทั้งหมดจะอยู่ในสแนปชอตเดียวขนาด 12 MB เพื่อเรียกใช้เซิร์ฟเวอร์ PostgreSQL

ตามที่นักพัฒนา Postgres-wasm ยอมรับ ประสิทธิภาพรันไทม์ไม่สูงมาก แต่ในตัวของมันเองมีเป้าหมายในการทำให้ PostgreSQL 14.5 ใช้งานได้จากเบราว์เซอร์เต็มรูปแบบที่มีอินเทอร์เฟซบรรทัดคำสั่ง psql สำเร็จแล้ว

สุดท้ายนี้หากคุณสนใจเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้คุณสามารถดูรายละเอียดได้ที่ลิงก์ต่อไปนี้


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google