Mục lục

Trong con đường tìm hiểu tối ưu hóa con database PostgreSQL của mình, tôi đã tìm được một bài viết rất hay so sánh 2 phần mềm thông dụng nhất có tác dụng quản lý số lượng session trong PostgreSQL, đó là pgpool II và pgbouncer. Thấy khá hữu ích cho mọi người nên tôi đã dịch ra tiếng Việt cho anh em mình dễ theo dõi nhé.

Link bài viết gốc ở đây:

Đọc thêm  PgPool là gì

 

1. Bài dịch – Phần 1: So sánh về tính năng

Trong các bài viết trước, chúng tôi đã nói sơ qua về việc sử dụng PgBouncer và Pgpool-II, kiến trúc Connection Pooling và những ưu và nhược điểm của việc sử dụng 1 trong số chúng để triển khai database PostgreSQL của bạn. Trong bài viết này, chúng tôi sẽ so sánh trực diện PgBouncer và Pgpool-II về tính năng và hiệu năng khi triển khai trên database PostgreSQL.

Hãy bắt đầu bằng cách so sánh các tính năng của PgBouncer với Pgpool-II:

 

 

 

 

PgBouncerPgpool-II
Tiêu tốn tài nguyên

Chỉ sử dụng một process nên rất nhẹ. PgBouncer chỉ cần lượng bộ nhớ nhỏ, ngay cả khi xử lý các tập dữ liệu lớn.

Winner!

Nếu chúng ta yêu cầu n kết nối song song, điều này sẽ tạo ra n process con. Theo mặc định, có 32 process con được chia nhỏ.
Khi nào connection được tái sử dụng

PgBouncer xác định một Pool connection cho mỗi cặp user-database. Pool này được chia sẻ giữa tất cả các máy khách, vì vậy luôn có kết nối trong Pool cho tất cả các máy khách.

Winner!

Pgpool-II định nghĩa một process cho mỗi process con. Chúng ta không thể kiểm soát máy khách sẽ được kết nối với process con nào. Một máy khách chỉ được hưởng lợi nếu nó kết nối với đúng một process con mà trước đó đã phục vụ một connection khác cho đúng cặp user-database mà máy khách hiện tại đang dùng.
Các chế độ Pooling

PgBouncer hỗ trợ ba chế độ khác nhau: session (connection được trả về pool khi máy khách ngắt kết nối), transaction(được trả về pool khi user thực hiện commit hoặc rollback) hoặc statement (connect được trả lại pool sau khi thực hiện mỗi câu lệnh).

Quá nhiều option đúng không?

Winner

Pgpool-II chỉ hỗ trợ chế độ session – hiệu quả đến đâu phụ thuộc vào hành vi trên máy khách khá nhiều.
Hỗ trợ High Avaiability (HA)Không hỗ trợ

Có thể cấu hình tính năng High Avaiability cho PostgreSQL được hỗ trợ thông qua các process theo dõi được tích hợp sẵn trong Pgpool-II.

Winner!

Hỗ trợ Load BalancingKhông hỗ trợ – PgBouncer khuyến nghị sử dụng HAProxy để có 2 chức năng High Avaiability và Load Balancing

Hỗ trợ cân bằng tải tự động – thậm chí còn đủ thông minh để chuyển hướng các câu lệnh chỉ đọc (read-only) đến các database standby và câu lệnh có ghi vào database chính.

Winner!

Hỗ trợ nhiều cluster

Một PgBouncer instance có thể đứng trước nhiều PostgreSQL cluster (một node hoặc tập hợp các replication). Điều này có thể giảm chi phí cho phần mềm trung gian khi có nhiều PostgreSQL cluster.

Winner! (Lưu ý – lợi thế này chỉ dành cho các trường hợp cụ thể)

Pgpool-II không hỗ trợ nhiều cluster.
Điều khiển connection

PgBouncer cho phép giới hạn các connection trên mỗi pool, mỗi database, mỗi user hoặc mỗi máy khách.

Winner!

Pgpool-II chỉ cho phép giới hạn số lượng connection tổng thể.
Hàng đợi connection

PgBouncer hỗ trợ xếp hàng ở cấp độ ứng dụng.

Winner!

Pgpool-II hỗ trợ xếp hàng ở cấp kernel – điều này có thể khiến pg_bench trên CentOS 6 bị đóng băng.
Khả năng xác thực (Authentication)

 

PgBouncer hỗ trợ cơ chế xác thực Pass-through

Winner!

Pgpool-II không hỗ trợ xác thực Pass-through – người dùng và mật khẩu được mã hóa md5 phải được liệt kê trong một tệp và được cập nhật theo cách thủ công mỗi khi người dùng cập nhật mật khẩu. Pgpool-II hỗ trợ xác thực không cần mật khẩu thông qua chứng chỉ PAM hoặc SSL. Tuy nhiên, chúng phải được thiết lập bên ngoài hệ thống PostgreSQL, trong khi PgBouncer có thể đẩy nó xuống cho máy chủ PostgreSQL xử lý.
Khả năng quản lýPgBouncer cung cấp một database ảo báo cáo nhiều số liệu thống kê hữu ích khác nhau.

Pgpool-II cung cấp giao diện quản trị chi tiết, bao gồm giao diện người dùng GUI.

Winner!

Xác thực Host-basedCó hỗ trợCó hỗ trợ
SSL Hỗ trợ toàn bộHỗ trợ toàn bộ
Logical ReplicationKhông được hỗ trợ thông qua PgBouncer.Được hỗ trợ thông qua Pgpool-II, nhưng điều này được thực hiện bằng cách gửi truy vấn ghi tới tất cả các node và thường không được khuyến khích.
LicenseISC – rất dễ dãi, về cơ bản cho phép sử dụng tất cả.Giấy phép tùy chỉnh – dễ dãi như nhau 😀

 

2. Tóm lại:

  • Pgpool-II là một công cụ tuyệt vời nếu bạn cần tính năng Load BalancingHigh Availability. Connection Pooling chỉ nên được coi là bia kèm lạc thôi
  • PgBouncer chỉ làm một việc, nhưng nó thực sự rất tốt. Nếu mục tiêu là hạn chế số lượng kết nốigiảm tiêu thụ tài nguyên, thì PgBouncer sẽ lựa chọn sáng suốt.
  • Cũng hoàn toàn ổn khi sử dụng cả PgBouncer và Pgpool-II. Bạn có thể dùng PgBouncer để cung cấp Connection Pooling, kết nối với Pgpool-II đế cung cấp khả năng Load Balancing và High Availability. Điều này mang lại cho bạn ưu điểm của cả 2 công cụ. WOW!

Phần 2 của bài viết, xin mời các bạn đọc tại đây

Đọc thêm  So sánh Pgpool-II và Pgbouncer – Phần 2

Nguồn: https://dangxuanduy.com/

Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.

KHOÁ DÀNH CHO NGƯỜI MỚI

KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)

CÁC KHOÁ NÂNG CAO:

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD

CÁC KHOÁ COMBO:

COMBO 1: ADMIN 1 + MULTITENANT 12c

COMBO 2: ADMIN 1 + DATA GUARD

COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD

LỊCH HỌC:

Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE 

ĐĂNG KÝ:

https://forms.gle/MtCAoRQFenP886y79

Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.

5 2 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x