Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Lựa Chọn Giữa PostgreSQL Và CockroachDB: Hướng Dẫn Thực Tế

Bài viết gốc đăng tải ngày 15 tháng 8 năm 2019 tại ObjectRocket.com/blog

Khi CockroachDB® và PostgreSQL® đã củng cố vị thế trên thị trường khi nói đến workload quan hệ, nhiều người bắt đầu hỏi nên chọn cái nào. CockroachDB cung cấp true global-scale SQL với distributed transaction và horizontal read/write scaling built-in cho quy mô, độ bền và hiệu suất chưa từng có cho workload SQL. Tuy nhiên, vẫn còn một số kịch bản mà PostgreSQL có thể chỉ là lựa chọn tốt hơn.

Lựa Chọn Giữa PostgreSQL Và CockroachDB: Hướng Dẫn Thực Tế

Điểm tương đồng giữa CockroachDB và PostgreSQL

Hai công nghệ này chồng chéo nhau khá nhiều. Trước hết và quan trọng nhất, cả hai đều tự hào về:

  • Tuân thủ SQL
  • Transaction ACID
  • Tương thích PostgreSQL wire protocol
  • Hỗ trợ client driver và ORM rộng rãi

Chức năng này bao gồm hầu hết các điểm chính, nghĩa là lựa chọn归结为 các điểm quyết định tinh vi hơn. Với chỉ một vài ngoại lệ, bạn có thể thử một app trên cơ sở dữ liệu nào đó và sau đó chuyển sang cái kia mà không phải viết lại app.

Muốn xem CockroachDB, nhưng quyết định PostgreSQL phù hợp hơn? Khả năng khá cao bạn sẽ không gặp rắc rối. Bạn có app chạy trên PostgreSQL, nhưng đang tìm kiếm scaling và failover tốt hơn? CockroachDB có thể phù hợp hơn.

Điểm khác biệt để giúp bạn quyết định

Tương thích, truy vấn phức tạp, quy mô và linh hoạt có thể giúp bạn chọn một lựa chọn hơn cái kia.

Quy mô (Scale)

Khác biệt lớn nhất là cách các sản phẩm xử lý scaling, replication và high availability (HA). CockroachDB được xây dựng từ nền tảng để cung cấp datastore SQL toàn cầu với distributed transaction. Bạn có thể phân tán dữ liệu của mình trên các đám mây và region với kiểm soát chi tiết về dữ liệu nào được phép nằm trong mỗi region hoặc đám mây. Mặc dù các giải pháp và extension tồn tại để cung cấp một số chức năng tương tự với PostgreSQL, nhưng nó không hoàn chỉnh cũng không đơn giản để cấu hình và quản lý.

Sự tập trung của CockroachDB vào quy mô toàn cầu cho phép nó thân thiện với đám mây hơn nhiều. CockroachDB kỳ vọng số lượng lớn node nhỏ hơn, có thể loại bỏ, vì vậy scaling và HA chỉ được xử lý tự động phía sau màn hình cho bạn.

PostgreSQL, mặt khác, cung cấp một số giải pháp cho multi-master, scaling và HA, nhưng hầu hết chức năng đó không có trong PostgreSQL và yêu cầu extension bên thứ ba. Ngoài ra, thiết lập, cấu hình và quản lý hàng ngày phức tạp hơn một chút cho triển khai HA PostgreSQL.

Linh hoạt (Flexibility)

Một lợi ích thực sự của PostgreSQL là nhiều năm battle hardening (kiềng cường qua chiến đấu) và phạm vi tunables và extensions. Chỉ cần so sánh tài liệu Server Configuration trên PostgreSQL, bạn sẽ thấy một mảng lớn các tùy chọn và tham số tuning cho cluster của bạn. Muốn Isolation levels? Bạn có 4 lựa chọn, trong khi CockroachDB chỉ cho bạn một. Muốn replication? PostgreSQL cho bạn 8 lựa chọn, trong khi CockroachDB xử lý nó phía sau màn hình.

PostgreSQL cũng cung cấp hệ sinh thái extension khổng lồ để mở rộng sản phẩm. Trăm extension công khai có sẵn, và bạn cũng có thể tự viết. Chúng từ việc thêm clustering (như Citus) đến object mới (postGIS) đến tối ưu PostgreSQL cho trường hợp sử dụng cụ thể (Timescale). Sự linh hoạt này chắc chắn đi kèm chi phí. Nó có thể giới thiệu độ phức tạp và ảnh hưởng đến hiệu suất và ổn định của instance. Bạn cũng có thể cấu hình sai môi trường. Cách tiếp cận của CockroachDB đơn giản hóa mọi thứ để xây dựng và quản lý cluster trở nên đơn giản.

Tương thích (Compatibility)

Nếu bạn cần tuân thủ PostgreSQL hoàn toàn hoặc SQL conformance đầy đủ hơn, PostgreSQL là cược an toàn hơn. Dù bạn có legacy app hay cần backend store cho CMS hoặc web framework tiêu chuẩn, có thể có sự phụ thuộc nặng nề vào các góc của PostgreSQL hoặc SQL mà Cockroach có thể chưa hỗ trợ. Mặc dù Cockroach Labs tiếp tục thêm nhiều tính năng và chức năng vào sản phẩm, nó chưa 100% tương thích với PostgreSQL. Một khu vực khác bạn có thể thấy khác biệt là cách CockroachDB xử lý roles, users, groups và authentication. Tùy chọn authentication của PostgreSQL cực kỳ mạnh mẽ, và mặc dù CockroachDB cung cấp RBAC, có một số khác biệt đáng kể giữa hai công nghệ.

Bạn có thể vượt qua thách thức tương thích, nhưng cuối cùng nó phụ thuộc vào app của bạn và khả năng xác định và giải quyết các vấn đề không tương thích tiềm ẩn.

Truy vấn phức tạp (Complex queries)

Một khu vực Cockroach Labs đã đầu tư rất nhiều nỗ lực là khả năng thực hiện joins và cải thiện hiệu suất với cost-based SQL query optimizer của họ. Tuy nhiên, nếu bạn có workload Business Intelligence hoặc analytics với truy vấn cực kỳ phức tạp và nhiều joins, views, aggregations, và expression evaluations, PostgreSQL có thể là lựa chọn tốt hơn.

Đây là khu vực bạn có thể dễ dàng test với evaluation hoặc proof of concept. Càng gần use case của bạn nghiêng về truy vấn analytics và OLAP, PostgreSQL có thể là cược tốt hơn. Với transaction OLTP nhanh, CockroachDB có thể giúp nhiều nhất.

Bảng so sánh tóm tắt

CockroachDB PostgreSQL
Năm phát hành ban đầu 2015 1996
Phiên bản ổn định hiện tại 20.1.0 13
Cấp phép Business Source License BSL core components. Cockroach Community License CCL enterprise features PostgreSQL License PostgreSQL License
SQL Conformance* Full hoặc partial conformance với ~244 tính năng SQL:2011 Conforms với ~385 tính năng SQL:2011
Điểm cộng Online Schema changes, distributed transactions Stored procedures, cursors, triggers, materialized views
Wire Protocol PostgreSQL wire protocol PostgreSQL wire protocol
Client Drivers Các tùy chọn đã test cộng với hệ sinh thái lớn nhờ PostgreSQL wire protocol Hệ sinh thái lớn driver chính thức và cộng đồng cung cấp
CMS/Framework Compatibility Partial, qua PostgreSQL wire compatibility Hỗ trợ rộng rãi và tương thích cho major frameworks
Plugins/Extensions Enterprise feature pack Hệ sinh thái lớn community extensions
Replication/HA Có, built-in Qua open source additions/extensions
Multi-Master/Clustering Có, built-in Qua open source additions/extensions
Multi-Datacenter/Geo Có, built-in Custom hoặc qua open source additions/extensions
Authentication Password, Certificate Password, Certificate, GSSAPI, SSPI, Ident, LDAP, RADIUS, PAM, BSD
Permissions User-based permissions và RBAC RBAC với row và column level permissions, full SQL:2011 privilege support
Điểm mạnh Cloud-native scaling, high availability, geo-distribution, cấu hình và triển khai đơn giản Linh hoạt, khả năng tuning, tương thích và hệ sinh thái
Điểm yếu Độ trễ và độ phong phú của hỗ trợ SQL/tính năng Độ phức tạp ở quy mô lớn, hiệu suất đọc
Kết Luận Chọn CockroachDB khi bạn xây dựng workload OLTP highly transactional, hoặc khả năng scale out (cục bộ hoặc toàn cầu) quan trọng Chọn PostgreSQL nếu workload bao gồm truy vấn analytics nặng hơn hoặc bạn cần truy cập vào bộ tính năng, hệ sinh thái, và app tương thích khổng lồ

* Vì không có datastore nào tôi biết 100% conforms với full SQL:2011 spec, tôi chỉ xem mức độ spec mà mỗi sản phẩm hỗ trợ.

Bạn có hai lựa chọn tuyệt vời trước mặt. Cả hai có thể được sử dụng cùng nhau để tạo portfolio datastore tuyệt vời. Nếu bạn đang xây dựng từ đầu hôm nay và bạn không có nhu cầu cực kỳ độc đáo hoặc PostgreSQL-specific và scaling quan trọng, thì hãy xem xét nghiêm túc CockroachDB như một cơ hội tuyệt vời. Tuy nhiên, nếu bạn đã biết bạn cần gì và muốn tập trung vào sự linh hoạt rộng lớn của PostgreSQL, chúng tôi có thể giúp ở đó cũng được.

Cả PostgreSQL và CockroachDB đều có sẵn bây giờ. Tìm ra cái phù hợp cho bạn.

Kết luận

Sử dụng tab Phản Hồi để đưa ra bình luận hoặc đặt câu hỏi. Bạn cũng có thể nhấp vào Sales Chat để trò chuyện ngay và bắt đầu cuộc hội thoại.