ExtendDB: Bộ điều hợp mã nguồn mở tương thích DynamoDB với Backend lưu trữ linh hoạt

Phần mềm07 tháng 6, 2026·4 phút đọc

AWS vừa công bố ExtendDB, bộ điều hợp mã nguồn mở cho phép sử dụng API của DynamoDB với các backend lưu trữ khác nhau như PostgreSQL. Dự án giúp các nhà phát triển chạy khối lượng công việc kiểu DynamoDB trong môi trường local hoặc on-prem mà vẫn giữ nguyên sự tương thích với các công cụ hiện có.

ExtendDB: Bộ điều hợp mã nguồn mở tương thích DynamoDB với Backend lưu trữ linh hoạt

AWS gần đây đã công bố ExtendDB, một bộ điều hợp mã nguồn mở tương thích với Amazon DynamoDB, cho phép các nhà phát triển sử dụng API của DynamoDB với các backend lưu trữ khác nhau, bắt đầu là PostgreSQL. Dự án này hỗ trợ các SDK và công cụ hiện có của AWS mà không cần sửa đổi, mang lại sự linh hoạt lớn hơn cho các nhóm khi chạy khối lượng công việc kiểu DynamoDB bên ngoài dịch vụ DynamoDB gốc, đồng thời duy trì tính tương thích với các ứng dụng và quy trình làm việc hiện tại.

ExtendDB ArchitectureExtendDB Architecture

ExtendDB là gì?

Hiện tại ở phiên bản 0.1, ExtendDB triển khai các API mặt phẳng điều khiển (control plane) và mặt phẳng dữ liệu (data plane) của DynamoDB, bao gồm hỗ trợ cho các bảng (tables), mục (items) và luồng (streams). Backend lưu trữ ban đầu là PostgreSQL, tuy nhiên, thiết kế có thể cắm thêm (pluggable) của bộ điều hợp cho phép bổ sung các backend khác một cách độc lập. Công cụ này có thể được sử dụng cho phát triển cục bộ (local development), kiểm thử CI và chạy các khối lượng công việc tương thích DynamoDB trong môi trường tại chỗ (on-premises) dựa trên cơ sở dữ liệu PostgreSQL.

Lee Hannigan, kỹ sư cơ sở dữ liệu cấp cao tại AWS, và Deepthi Mohan, quản lý sản phẩm chính tại AWS, giải thích về cơ chế hoạt động của dự án:

ExtendDB là một triển khai của giao thức wire DynamoDB, được viết bằng ngôn ngữ Rust và phát triển bởi các kỹ sư của AWS. Hãy tưởng tượng nó như một người phiên dịch ngồi giữa ứng dụng của bạn và backend lưu trữ. Nếu bạn sử dụng backend tham chiếu PostgreSQL, ứng dụng của bạn sẽ nói ngôn ngữ DynamoDB, ExtendDB sẽ dịch sang SQL, và PostgreSQL sẽ xử lý việc lưu trữ.

Kiến trúc và Tính linh hoạt

ExtendDB chạy dưới dạng một binary duy nhất mà không có các phụ thuộc thời gian chạy bên ngoài. Nó yêu cầu TLS, tạo chứng chỉ tự ký trong lần chạy đầu tiên và hỗ trợ xác thực SigV4 thông qua kho lưu trữ thông tin xác thực kiểu IAM cục bộ tương thích với quy trình ký chuẩn DynamoDB.

Về kiến trúc, ExtendDB tách biệt các mối quan tâm thành các Rust crates:

  • Core crate: Xử lý các kiểu dữ liệu, xác thực và đánh giá biểu thức dưới dạng Rust đồng bộ thuần túy.
  • Engine crate: Triển khai ngữ nghĩa API của DynamoDB.
  • Storage-postgres crate: Backend PostgreSQL, được xây dựng dựa trên một đặc điểm lưu trữ (storage trait) định nghĩa giao diện mà mọi backend phải triển khai.
  • Server crate: Kết nối mọi thứ lại với nhau thông qua máy chủ HTTP, API quản lý và bảng điều khiển web.

Lớp lưu trữ được định nghĩa là một Rust trait, cho phép các backend bổ sung như Apache Cassandra hoặc MySQL được thêm vào mà không cần sửa đổi bộ điều hợp lõi.

So sánh và Hiệu suất

Khi được hỏi về sự khác biệt so với DynamoDB Local, Hannigan làm rõ trên LinkedIn:

Ban đầu, ở phiên bản hiện tại, nó không khác biệt quá nhiều ngoại trừ việc bạn có thể sử dụng Postgres. Nhưng khi chúng tôi tiến bộ, nó sẽ có nhiều tính năng tương đương hơn với DynamoDB và có khả năng phù hợp để chạy cho các khối lượng công việc sản xuất. Hãy nghĩ đến trường hợp một phần ứng dụng của bạn phải giữ lại tại chỗ vì lý do tuân thủ quy định, v.v.

Mặc dù cộng đồng phản ứng tích cực và ngạc nhiên khi AWS cung cấp công cụ này, nhưng đã có một số lo ngại ban đầu về hiệu suất. Một người dùng trên Reddit nhận xét rằng hiệu suất chưa tốt (vào thời điểm đó), với độ trễ p90 lên tới 300ms cho các lệnh update_item dưới tải ghi cao và 20ms cho đọc trên máy MacBook 16 nhân.

Tuy nhiên, một dự án Rust tương tự có tên Rektifier cũng đang được phát triển độc lập trước khi ExtendDB ra mắt, phản ánh sự quan tâm rộng rãi hơn đối với các proxy dựa trên PostgreSQL tương thích với DynamoDB.

ExtendDB hiện có sẵn trên GitHub theo giấy phép Apache-2.0, chạy trên Linux và macOS, và yêu cầu Rust 1.85+ và PostgreSQL 14+.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗