AWS Mở Mã Nguồn Extension pgactive Cho PostgreSQL Giữa Tranh Luận Cộng Đồng Về Rủi Ro Multi-Master Replication

Nhóm Cộng đồng BigGo
AWS Mở Mã Nguồn Extension pgactive Cho PostgreSQL Giữa Tranh Luận Cộng Đồng Về Rủi Ro Multi-Master Replication

AWS đã chính thức mở mã nguồn pgactive, một extension PostgreSQL cho phép active-active replication trên nhiều database instance. Mặc dù công nghệ này đã có sẵn như một tính năng trong AWS RDS Postgres từ năm 2023, việc phát hành gần đây cho cộng đồng đã gây ra những cuộc thảo luận sôi nổi về sự phức tạp và rủi ro của các thiết lập multi-master database.

Các tính năng chính của pgactive:

  • Sao chép active-active trên nhiều phiên bản PostgreSQL
  • Giải quyết xung đột theo nguyên tắc last-write-wins dựa trên timestamps
  • Ghi log xung đột vào bảng pgactive_conflict_history
  • Được xây dựng trên nền tảng logical replication của PostgreSQL
  • Hỗ trợ triển khai đa vùng
  • Có sẵn trong AWS RDS Postgres từ năm 2023

Lời Hứa và Nguy Hiểm của Active-Active Replication

Extension pgactive cho phép nhiều PostgreSQL instance chấp nhận ghi đồng thời, với các thay đổi được replicate qua cluster bằng cách sử dụng tính năng logical replication của PostgreSQL . Cách tiếp cận này nhằm giải quyết các thách thức phổ biến như giảm độ trễ ghi qua các vùng và duy trì tính khả dụng cao trong quá trình phân vùng mạng. Tuy nhiên, phản hồi từ cộng đồng cho thấy những lo ngại sâu sắc về các đánh đổi cơ bản liên quan.

Extension này sử dụng chiến lược giải quyết xung đột last-write-wins dựa trên timestamp, ghi lại các giao dịch xung đột vào một bảng đặc biệt để xem xét sau. Mặc dù điều này nghe có vẻ đơn giản, các chuyên gia cơ sở dữ liệu cảnh báo rằng cách tiếp cận này về cơ bản phá vỡ một trong những nguyên tắc cốt lõi của hệ thống cơ sở dữ liệu.

Giải quyết xung đột chỉ là một cách nói khác của việc phá vỡ tính bền vững bằng cách loại bỏ dữ liệu đã được commit và xác nhận.

Lời chỉ trích này làm nổi bật một vấn đề cơ bản: khi xung đột xảy ra, dữ liệu đã commit trước đó có thể bị ghi đè một cách âm thầm, vi phạm các đảm bảo về tính bền vững mà các ứng dụng thường mong đợi từ PostgreSQL .

Độ Phức Tạp Kỹ Thuật và Thách Thức Thực Tế

Các cuộc thảo luận trong cộng đồng cho thấy pgactive nằm trong một hệ sinh thái phức tạp của các giải pháp replication PostgreSQL . Công nghệ này được xây dựng dựa trên công việc trước đó từ các công ty như 2ndQuadrant (hiện là một phần của EDB ), đã phát triển nhiều phiên bản khác nhau của các công cụ logical replication bao gồm BDR và pglogical trong thập kỷ qua.

Việc triển khai kỹ thuật dựa vào logical replication tích hợp sẵn của PostgreSQL , nhưng thêm khả năng phát hiện và giải quyết xung đột. Khi xung đột phát sinh, hệ thống ghi lại chúng để có thể giải quyết thủ công, nhưng hành vi mặc định ưu tiên tính khả dụng hơn tính nhất quán. Lựa chọn thiết kế này làm cho pgactive phù hợp cho các trường hợp sử dụng cụ thể nhưng có thể nguy hiểm cho các ứng dụng yêu cầu tính toàn vẹn dữ liệu nghiêm ngặt.

Các chuyên gia cơ sở dữ liệu lưu ý rằng việc triển khai thành công thường yêu cầu lập kế hoạch kiến trúc cẩn thận. Các ứng dụng phải được thiết kế với các chiến lược phân vùng dữ liệu nơi mỗi vùng hoặc instance chủ yếu ghi vào tập con dữ liệu riêng của mình, giảm thiểu xung đột. Nếu không có kế hoạch như vậy, hệ thống có thể tạo ra kết quả không thể đoán trước và yêu cầu can thiệp thủ công để giải quyết.

Dòng thời gian phát triển của PostgreSQL Replication:

  • BDR1: Mã nguồn mở, nền tảng cho pgactive
  • PostgreSQL 10 (2017): Thêm tính năng logical replication gốc
  • pglogical v1/v2: Các extension logical replication mã nguồn mở
  • BDR v3/v4: Mã nguồn đóng, sau này được đổi tên thành Postgres Distributed (PGD)
  • PGD v6: Sản phẩm thương mại mới nhất từ EDB
  • pgactive (2023): Tính năng của AWS RDS, được mở mã nguồn vào năm 2024

Các Trường Hợp Sử Dụng Hạn Chế và Các Lựa Chọn Thay Thế

Sự đồng thuận trong cộng đồng cho rằng pgactive giải quyết một tập hợp yêu cầu hẹp. Nó hoạt động tốt nhất cho các tình huống mà phân phối địa lý là cần thiết, phân vùng mạng được dự kiến, và một số không nhất quán dữ liệu là có thể chấp nhận được. Các ví dụ bao gồm hệ thống quản lý nội dung, nền tảng mạng xã hội, hoặc khối lượng công việc phân tích nơi eventual consistency là đủ.

Đối với các ứng dụng yêu cầu tính nhất quán mạnh, các chuyên gia khuyến nghị hoặc là gắn bó với các thiết lập PostgreSQL single-master truyền thống với read replica, hoặc chuyển sang các cơ sở dữ liệu phân tán được xây dựng có mục đích như CockroachDB , FoundationDB , hoặc các giải pháp cloud-native như Google Spanner .

Cuộc thảo luận cũng tiết lộ rằng nhiều tổ chức có thể mở rộng quy mô một cách đáng ngạc nhiên với các cấu hình PostgreSQL single-master, đặt câu hỏi liệu độ phức tạp vận hành của các thiết lập multi-master có được biện minh cho hầu hết các trường hợp sử dụng hay không.

Các Giải Pháp Cơ Sở Dữ Liệu Phân Tán Thay Thế:

  • MySQL Group Replication: Sao chép đồng bộ với đồng thuận đa số
  • Galera: Plugin sao chép MySQL với ghi đồng bộ
  • CockroachDB: Cơ sở dữ liệu SQL phân tán
  • FoundationDB: Kho lưu trữ key-value với thuộc tính ACID
  • Google Spanner: Cơ sở dữ liệu phân tán cloud-native
  • Oracle Database: Multi-master với phần cứng chuyên dụng

Kết Luận

Mặc dù pgactive đại diện cho một nỗ lực kỹ thuật đáng kể và lấp đầy một hốc cụ thể trong hệ sinh thái PostgreSQL , phản hồi của cộng đồng nhấn mạnh những thách thức vốn có của các hệ thống cơ sở dữ liệu phân tán. Việc phát hành mã nguồn mở của extension cung cấp sự minh bạch về những đánh đổi này, nhưng cũng phục vụ như một lời nhắc nhở rằng không có giải pháp đơn giản nào cho những căng thẳng cơ bản giữa tính nhất quán, tính khả dụng, và khả năng chịu đựng phân vùng trong các hệ thống phân tán.

Đối với hầu hết các tổ chức, lời khuyên vẫn rõ ràng: cẩn thận đánh giá liệu lợi ích của active-active replication có vượt trội hơn độ phức tạp vận hành và các vấn đề tính nhất quán dữ liệu tiềm ẩn hay không. Sức hấp dẫn quyến rũ của các thiết lập multi-master thường che giấu chuyên môn sâu sắc cần thiết để triển khai chúng một cách an toàn.

Lưu ý: Logical replication là một tính năng PostgreSQL ghi lại và replicate các thay đổi dữ liệu ở định dạng có thể được diễn giải và sửa đổi trước khi áp dụng cho các cơ sở dữ liệu đích.

Tham khảo: Active-active Replication Extension for PostgreSQL (pgactive)