PostgreSQL 19 gây thất vọng: Truy vấn đồ thị bị loại bỏ vì lỗi chưa giải quyết
Tính năng truy vấn đồ thị SQL/PGQ đã bị gỡ khỏi PostgreSQL 19 do lo ngại về các lỗi chưa được xử lý. Tuy nhiên, lệnh REPACK mới với tùy chọn CONCURRENTLY hứa hẹn sẽ giúp quản trị viên cơ sở dữ liệu tránh được những cuộc gọi lúc nửa đêm.

PostgreSQL 19 gây thất vọng: Truy vấn đồ thị bị loại bỏ vì lỗi chưa giải quyết
Cộng đồng phát triển PostgreSQL đã quyết định gỡ bỏ tính năng truy vấn đồ thị SQL Property Graph Queries (SQL/PGQ) khỏi phiên bản 19. Lý do là các lỗi chưa được giải quyết có thể gây ảnh hưởng nghiêm trọng đến bản phát hành chính thức.
Bù lại, PostgreSQL 19 sẽ mang đến lệnh REPACK mới với tùy chọn CONCURRENTLY, giúp quản trị viên cơ sở dữ liệu giải phóng dung lượng đĩa mà không cần khóa toàn bộ bảng trong suốt quá trình thực hiện.
SQL/PGQ — Tính năng được mong đợi nhưng chưa sẵn sàng
SQL/PGQ đã trở thành một phần của tiêu chuẩn SQL từ năm 2023, cung cấp cú pháp để khám phá mối quan hệ giữa các nút được kết nối bằng cạnh. Đây được xem là bước tiến quan trọng giúp PostgreSQL cạnh tranh với các cơ sở dữ liệu đồ thị chuyên dụng.
Tuy nhiên, Tom Lane — một trong những cộng tác viên lâu năm của PostgreSQL — đã đưa ra cảnh báo gay gắt:
"Ở thời điểm này, tôi sẵn sàng cá cược một bữa tối rằng nếu chúng ta phát hành nó trong phiên bản 19, sẽ có những lỗi được phát hiện sau khi phát hành mà không thể sửa được cho đến phiên bản 20."
Tom Kincaid, phó chủ tịch cấp cao phụ trách kỹ thuật phần mềm tại EDB — công ty hỗ trợ và phát triển PostgreSQL — cũng xác nhận PGQ sẽ không nằm trong PostgreSQL 19:
"Cộng đồng muốn giải quyết thêm một vài vấn đề trước khi phát hành nó."
Phiên bản beta thứ tư dự kiến ra mắt vào ngày 24 tháng 9, trong khi ngày phát hành chính thức của PostgreSQL 19 vẫn chưa được ấn định.
REPACK CONCURRENTLY — Giải pháp cho nỗi lo lệnh VACUUM FULL
Mặc dù mất đi tính năng truy vấn đồ thị, nhưng quản trị viên cơ sở dữ liệu vẫn có lý do để mong chờ phiên bản mới. Vấn đề đau đầu lâu nay là VACUUM FULL — lệnh viết lại toàn bộ bảng để thu hồi không gian bị chiếm bởi các phiên bản hàng cũ và trả lại cho hệ điều hành.
Nhược điểm lớn nhất của VACUUM FULL là nó giữ khóa độc quyền trên bảng trong suốt quá trình thực hiện, chặn mọi thao tác đọc và ghi khác. Theo Kincaid, chính sự gián đoạn này khiến các quản trị viên e ngại sử dụng:
"Những cuộc gọi lúc nửa đêm thường là kết quả của việc ai đó chạy VACUUM FULL, khiến khách hàng không thể truy cập dữ liệu hoặc có người muốn biết tại sao lệnh này lại đang chạy."
Lệnh REPACK mới với tùy chọn CONCURRENTLY cho phép các giao dịch khác truy cập bảng trong phần lớn thời gian thực hiện. Nó vẫn cần khóa độc quyền khi hoán đổi các tệp bảng và chỉ mục đã được viết lại, nhưng khóa này thường chỉ được giữ trong thời gian rất ngắn.
Trong khi đó, lệnh REPACK thông thường vẫn giữ khóa độc quyền xuyên suốt quá trình. Đối với các quản trị viên đang tìm cách tránh những cuộc gọi lúc nửa đêm, tùy chọn CONCURRENTLY chính là điểm quan trọng nhất.
Ý nghĩa đối với cộng đồng PostgreSQL tại Việt Nam
Quyết định gỡ bỏ SQL/PGQ khỏi PostgreSQL 19 cho thấy sự thận trọng của cộng đồng mã nguồn mở đối với chất lượng bản phát hành. Với các doanh nghiệp Việt Nam đang sử dụng PostgreSQL cho hệ thống backend — từ fintech đến thương mại điện tử — việc chờ đợi thêm một phiên bản để có tính năng hoàn thiện là lựa chọn hợp lý.
Trong khi đó, REPACK CONCURRENTLY sẽ là công cụ hữu ích cho các đội DevOps và DBA tại Việt Nam, giúp giảm thiểu thời gian downtime khi bảo trì cơ sở dữ liệu — vốn là vấn đề nhức nhối với các hệ thống có yêu cầu uptime cao.