Việc phát hành DBOS Transact gần đây đã làm dấy lên nhiều cuộc thảo luận trong cộng đồng lập trình viên về cách tiếp cận thực thi bền vững dựa trên PostgreSQL. Khi các lập trình viên khám phá thư viện TypeScript nhẹ này, nhiều câu hỏi quan trọng đã xuất hiện về khả năng mở rộng, thách thức triển khai và ứng dụng thực tế.
Các vấn đề về khả năng mở rộng
Mối quan tâm chính của cộng đồng tập trung vào khả năng xử lý khối lượng công việc lớn của PostgreSQL. Theo các cuộc thảo luận, DBOS có thể xử lý hơn 10.000 bước mỗi giây với một máy chủ cơ sở dữ liệu lớn, đủ đáp ứng cho hầu hết các trường hợp sử dụng. Đối với khối lượng công việc vượt quá ngưỡng này, các lập trình viên có thể triển khai phân mảnh hoặc tách dịch vụ. Tuy nhiên, điều này cho thấy giới hạn tự nhiên của các giải pháp dựa trên PostgreSQL đối với các hoạt động quy mô cực lớn.
Những lợi thế lớn của việc sử dụng Postgres là: 1. Đơn giản hơn về mặt kiến trúc, vì không có phụ thuộc bên ngoài. 2. Bạn có toàn quyền kiểm soát trạng thái thực thi, vì tất cả đều nằm trong các bảng trên máy chủ Postgres của bạn
Các Tính Năng Kỹ Thuật Chính:
- Hỗ trợ xử lý hơn 10.000 bước mỗi giây với máy chủ cơ sở dữ liệu lớn
- Tích hợp sẵn quản lý giao dịch
- Tự động khôi phục quy trình làm việc
- Hỗ trợ các ORM: TypeORM , Drizzle , Knex , Prisma
- Yêu cầu các đối số và giá trị trả về của bước phải có khả năng tuần tự hóa JSON
Thách thức triển khai
Một điểm thảo luận quan trọng xoay quanh việc xử lý phiên bản quy trình làm việc và thực thi phân tán. Hệ thống gắn thẻ mỗi quy trình làm việc với phiên bản mã nguồn ban đầu, khuyến nghị rằng các quy trình làm việc nên hoàn thành bằng cùng phiên bản mà chúng bắt đầu. Đối với các thiết lập phân tán, nhiều phiên bản DBOS kết nối với cùng một cơ sở dữ liệu PostgreSQL tự động tạo thành một hàng đợi tác vụ phân tán, chia sẻ khối lượng công việc đến.
Lưu trữ và khôi phục dữ liệu
Cộng đồng đã đặt ra những câu hỏi quan trọng về cơ chế lưu trữ và khôi phục trạng thái. DBOS sử dụng các decorator để quản lý trạng thái thực thi, lưu trữ thông tin quy trình làm việc bao gồm trạng thái thực thi, đầu vào, các bước đã hoàn thành và đầu ra trong các bảng PostgreSQL. Cách tiếp cận này đảm bảo khôi phục tự động sau khi gặp sự cố, mặc dù nó yêu cầu tất cả các đối số và giá trị trả về của bước phải có thể tuần tự hóa JSON.
Các vấn đề tích hợp
Các lập trình viên đã nêu bật những lo ngại về tích hợp hệ thống bên ngoài và quản lý giao dịch. Mặc dù DBOS luôn sử dụng giao dịch cho các hoạt động cơ sở dữ liệu, tương tác với các API của bên thứ ba cần được xem xét cẩn thận. Hệ thống hỗ trợ nhiều ORM phổ biến bao gồm Drizzle, Knex và Prisma, mang lại sự linh hoạt trong các mẫu tương tác cơ sở dữ liệu.
Các cuộc thảo luận cho thấy mặc dù DBOS Transact cung cấp một giải pháp hấp dẫn cho việc thực thi bền vững, các lập trình viên phải cân nhắc kỹ lưỡng các trường hợp sử dụng cụ thể của họ, đặc biệt là về quy mô và tương tác với hệ thống bên ngoài.
Tham khảo: DBOS Transact: Một thư viện thực thi bền vững nhẹ xây dựng trên Postgres