การเปิดตัว DBOS Transact เมื่อเร็วๆ นี้ได้จุดประเด็นการถกเถียงที่สำคัญในชุมชนนักพัฒนาเกี่ยวกับแนวทางการประมวลผลถาวรที่ใช้ PostgreSQL เป็นฐาน ขณะที่นักพัฒนากำลังศึกษาไลบรารี TypeScript ที่มีน้ำหนักเบานี้ คำถามสำคัญได้เกิดขึ้นเกี่ยวกับความสามารถในการขยายระบบ ความท้าทายในการนำไปใช้งาน และการประยุกต์ใช้ในโลกแห่งความเป็นจริง
การพิจารณาด้านความสามารถในการขยายระบบ
ความกังวลหลักของชุมชนมุ่งเน้นไปที่ความสามารถของ PostgreSQL ในการจัดการกับปริมาณงานที่สูง จากการอภิปราย DBOS สามารถประมวลผลได้มากกว่า 10,000 ขั้นตอนต่อวินาทีด้วยเซิร์ฟเวอร์ฐานข้อมูลขนาดใหญ่ ซึ่งเพียงพอสำหรับการใช้งานส่วนใหญ่ สำหรับปริมาณงานที่เกินขีดจำกัดนี้ นักพัฒนาสามารถใช้การแบ่งชาร์ด (sharding) หรือแยกบริการได้ อย่างไรก็ตาม สิ่งนี้ชี้ให้เห็นถึงข้อจำกัดตามธรรมชาติของโซลูชันที่ใช้ PostgreSQL สำหรับการทำงานที่ต้องการขยายระบบสูงมาก
ข้อดีที่สำคัญของการใช้ Postgres คือ: 1. โครงสร้างที่เรียบง่ายกว่า เนื่องจากไม่มีการพึ่งพาภายนอก 2. คุณมีการควบคุมสถานะการทำงานอย่างสมบูรณ์ เพราะทั้งหมดอยู่ในตารางบนเซิร์ฟเวอร์ Postgres ของคุณ
คุณสมบัติทางเทคนิคที่สำคัญ:
- รองรับการประมวลผลมากกว่า 10,000 ขั้นตอนต่อวินาทีด้วยเซิร์ฟเวอร์ฐานข้อมูลขนาดใหญ่
- มีระบบจัดการธุรกรรมในตัว
- ระบบกู้คืนเวิร์กโฟลว์อัตโนมัติ
- รองรับ ORM ได้แก่ TypeORM, Drizzle, Knex, Prisma
- จำเป็นต้องมีอาร์กิวเมนต์ขั้นตอนและค่าที่ส่งคืนที่สามารถแปลงเป็น JSON ได้
ความท้าทายในการนำไปใช้งาน
ประเด็นสำคัญในการอภิปรายเกี่ยวข้องกับการจัดการเวอร์ชันของเวิร์กโฟลว์และการประมวลผลแบบกระจาย ระบบจะติดแท็กแต่ละเวิร์กโฟลว์ด้วยเวอร์ชันโค้ดต้นฉบับ โดยแนะนำให้เวิร์กโฟลว์ทำงานให้เสร็จสิ้นโดยใช้เวอร์ชันเดียวกับที่เริ่มต้น สำหรับการติดตั้งแบบกระจาย อินสแตนซ์ DBOS หลายตัวที่เชื่อมต่อกับฐานข้อมูล PostgreSQL เดียวกันจะสร้างคิวงานแบบกระจายโดยอัตโนมัติ และแบ่งปันภาระงานที่เข้ามา
การเก็บรักษาข้อมูลและการกู้คืน
ชุมชนได้ยกประเด็นคำถามสำคัญเกี่ยวกับการเก็บรักษาสถานะและกลไกการกู้คืน DBOS ใช้เดคอเรเตอร์ในการจัดการสถานะการทำงาน โดยเก็บข้อมูลเวิร์กโฟลว์รวมถึงสถานะการทำงาน อินพุต ขั้นตอนที่เสร็จสิ้น และเอาต์พุตในตาราง PostgreSQL วิธีนี้รับประกันการกู้คืนอัตโนมัติหลังจากระบบล่ม แม้ว่าจะต้องการให้อาร์กิวเมนต์ของทุกขั้นตอนและค่าที่ส่งคืนสามารถแปลงเป็น JSON ได้
ข้อพิจารณาในการผสานระบบ
นักพัฒนาได้เน้นย้ำความกังวลเกี่ยวกับการผสานระบบภายนอกและการจัดการธุรกรรม ในขณะที่ DBOS ใช้ธุรกรรมสำหรับการดำเนินการฐานข้อมูลเสมอ การโต้ตอบกับ API ของบุคคลที่สามต้องพิจารณาอย่างรอบคอบ ระบบรองรับ ORM ยอดนิยมหลายตัวรวมถึง Drizzle, Knex และ Prisma ซึ่งให้ความยืดหยุ่นในรูปแบบการโต้ตอบกับฐานข้อมูล
การอภิปรายเผยให้เห็นว่าในขณะที่ DBOS Transact นำเสนอโซลูชันที่น่าสนใจสำหรับการประมวลผลถาวร นักพัฒนาต้องพิจารณากรณีการใช้งานเฉพาะของตนอย่างรอบคอบ โดยเฉพาะในแง่ของขนาดและการโต้ตอบกับระบบภายนอก
อ้างอิง: DBOS Transact: A Lightweight Durable Execution Library Built on Postgres